summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/src/rtems-bsd-synch.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtemsbsd/src/rtems-bsd-synch.c')
-rw-r--r--rtemsbsd/src/rtems-bsd-synch.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/rtemsbsd/src/rtems-bsd-synch.c b/rtemsbsd/src/rtems-bsd-synch.c
index 1f78b840..b2b90ac0 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;
+
+}
+