summaryrefslogtreecommitdiffstats
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
parenttestsuite: Update due to API changes (diff)
downloadrtems-libbsd-43a14eba2e85810f8f0f6187dadc37a2932bd6b9.tar.bz2
Update due to API changes
-rw-r--r--freebsd/sys/kern/sys_generic.c20
-rw-r--r--rtemsbsd/rtems/rtems-kernel-thread.c23
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 *