summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/sys_generic.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-25 13:11:59 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-25 13:11:59 +0200
commit43a14eba2e85810f8f0f6187dadc37a2932bd6b9 (patch)
treeb0f5906923858c51a246c00414068381dc2adaef /freebsd/sys/kern/sys_generic.c
parenttestsuite: Update due to API changes (diff)
downloadrtems-libbsd-43a14eba2e85810f8f0f6187dadc37a2932bd6b9.tar.bz2
Update due to API changes
Diffstat (limited to 'freebsd/sys/kern/sys_generic.c')
-rw-r--r--freebsd/sys/kern/sys_generic.c20
1 files changed, 9 insertions, 11 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__ */