[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