[rtems-libbsd commit] Modifed sleep queue to be priority based and added the wakeup_one method.
Jennifer Averett
jennifer at rtems.org
Tue May 1 18:06:59 UTC 2012
Module: rtems-libbsd
Branch: master
Commit: e9578468aa10c332ed66a644e5be47b1295aef0c
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=e9578468aa10c332ed66a644e5be47b1295aef0c
Author: Jennifer Averett <jennifer.averett at oarcorp.com>
Date: Tue May 1 13:08:03 2012 -0500
Modifed sleep queue to be priority based and added the wakeup_one method.
---
rtemsbsd/src/rtems-bsd-synch.c | 23 ++++++++++++++++++++++-
1 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/rtemsbsd/src/rtems-bsd-synch.c b/rtemsbsd/src/rtems-bsd-synch.c
index 1f78b84..b2b90ac 100644
--- a/rtemsbsd/src/rtems-bsd-synch.c
+++ b/rtemsbsd/src/rtems-bsd-synch.c
@@ -71,7 +71,7 @@ sleepinit(void)
*/
_Thread_queue_Initialize(
&sleep_queue[ii].queue,
- THREAD_QUEUE_DISCIPLINE_FIFO,
+ THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_SLEEP | STATES_INTERRUPTIBLE_BY_SIGNAL,
EAGAIN
);
@@ -273,3 +273,24 @@ wakeup(void *ident)
return 0;
}
+/*
+ * Make a thread sleeping on the specified identifier runnable.
+ * May wake more than one thread if a target thread is currently
+ * swapped out.
+ */
+void
+wakeup_one(void *ident)
+{
+ sleep_queue_control_t *sq;
+ Thread_Control *the_thread;
+
+ sq = sleep_queue_lookup( ident );
+ if (sq == NULL)
+ {
+ return (0);
+ }
+ the_thread = _Thread_queue_Dequeue(&sq->queue);
+ return 0;
+
+}
+
More information about the vc
mailing list