[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