diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-25 13:11:59 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-25 13:11:59 +0200 |
commit | 43a14eba2e85810f8f0f6187dadc37a2932bd6b9 (patch) | |
tree | b0f5906923858c51a246c00414068381dc2adaef | |
parent | testsuite: Update due to API changes (diff) | |
download | rtems-libbsd-43a14eba2e85810f8f0f6187dadc37a2932bd6b9.tar.bz2 |
Update due to API changes
-rw-r--r-- | freebsd/sys/kern/sys_generic.c | 20 | ||||
-rw-r--r-- | 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 b6239a42..85b99f94 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 fe213201..4c5071cd 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 * |