[rtems-libbsd commit] Update due to API changes

Sebastian Huber sebh at rtems.org
Wed May 25 11:12:34 UTC 2016


Module:    rtems-libbsd
Branch:    master
Commit:    43a14eba2e85810f8f0f6187dadc37a2932bd6b9
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=43a14eba2e85810f8f0f6187dadc37a2932bd6b9

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed May 25 13:11:59 2016 +0200

Update due to API changes

---

 freebsd/sys/kern/sys_generic.c       | 20 +++++++++-----------
 rtemsbsd/rtems/rtems-kernel-thread.c | 23 ++++++-----------------
 2 files changed, 15 insertions(+), 28 deletions(-)

diff --git a/freebsd/sys/kern/sys_generic.c b/freebsd/sys/kern/sys_generic.c
index b6239a4..85b99f9 100644
--- a/freebsd/sys/kern/sys_generic.c
+++ b/freebsd/sys/kern/sys_generic.c
@@ -1920,23 +1920,21 @@ force_select_timeout(Thread_Control *thread)
 rtems_status_code rtems_bsd_force_select_timeout(rtems_id task_id)
 {
 	Thread_Control *thread;
-	Objects_Locations location;
+	ISR_lock_Context lock_context;
 
-	thread = _Thread_Get(task_id, &location);
-	switch (location) {
-		case OBJECTS_LOCAL:
-			force_select_timeout(thread);
-			_Objects_Put(&thread->Object);
-			break;
+	thread = _Thread_Get(task_id, &lock_context);
+	if (thread == NULL) {
 #if defined(RTEMS_MULTIPROCESSING)
-		case OBJECTS_REMOTE:
-			_Thread_Dispatch();
+		if (_Thread_MP_Is_remote(id)) {
 			return (RTEMS_ILLEGAL_ON_REMOTE_OBJECT);
+		}
 #endif
-		default:
-			return (RTEMS_INVALID_ID);
+
+		return (RTEMS_INVALID_ID);
 	}
 
+	_ISR_lock_ISR_enable(&lock_context);
+	force_select_timeout(thread);
 	return (RTEMS_SUCCESSFUL);
 }
 #endif /* __rtems__ */
diff --git a/rtemsbsd/rtems/rtems-kernel-thread.c b/rtemsbsd/rtems/rtems-kernel-thread.c
index fe21320..4c5071c 100644
--- a/rtemsbsd/rtems/rtems-kernel-thread.c
+++ b/rtemsbsd/rtems/rtems-kernel-thread.c
@@ -78,25 +78,14 @@ static Thread_Control *
 rtems_bsd_get_thread_by_id(rtems_id task_id)
 {
 	Thread_Control *thread;
-	Objects_Locations location;
-
-	thread = _Thread_Get(task_id, &location);
-	switch (location) {
-		case OBJECTS_LOCAL:
-			_Objects_Put(&thread->Object);
-			break;
-#if defined(RTEMS_MULTIPROCESSING)
-		case OBJECTS_REMOTE:
-			_Thread_Dispatch();
-			thread = NULL;
-			break;
-#endif
-		default:
-			thread = NULL;
-			break;
+	ISR_lock_Context lock_context;
+
+	thread = _Thread_Get(task_id, &lock_context);
+	if (thread != NULL) {
+		_ISR_lock_ISR_enable(&lock_context);
 	}
 
-	return thread;
+	return (thread);
 }
 
 struct thread *



More information about the vc mailing list