summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/mqueue.c15
-rw-r--r--lib/mqueue.h3
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/mqueue.c b/lib/mqueue.c
index 7156e31e..de1d654c 100644
--- a/lib/mqueue.c
+++ b/lib/mqueue.c
@@ -708,7 +708,7 @@ mqueue_done_waiting(mqueue_queue mq, mqueue_thread_signal mtsig)
} ;
/*------------------------------------------------------------------------------
- * Enqueue message on local queue
+ * Enqueue message on local queue -- at tail
*/
extern void
mqueue_local_enqueue(mqueue_local_queue lmq, mqueue_block mqb)
@@ -722,6 +722,19 @@ mqueue_local_enqueue(mqueue_local_queue lmq, mqueue_block mqb)
} ;
/*------------------------------------------------------------------------------
+ * Enqueue message on local queue -- at head
+ */
+extern void
+mqueue_local_enqueue_head(mqueue_local_queue lmq, mqueue_block mqb)
+{
+ if (lmq->head == NULL)
+ lmq->tail = mqb ;
+
+ mqb->next = lmq->head ;
+ lmq->head = mqb ;
+} ;
+
+/*------------------------------------------------------------------------------
* Dequeue message from local queue -- returns NULL if empty
*/
extern mqueue_block
diff --git a/lib/mqueue.h b/lib/mqueue.h
index a6edb4d7..2bd96896 100644
--- a/lib/mqueue.h
+++ b/lib/mqueue.h
@@ -234,6 +234,9 @@ mqueue_done_waiting(mqueue_queue mq, mqueue_thread_signal mtsig) ;
extern void
mqueue_local_enqueue(mqueue_local_queue lmq, mqueue_block mqb) ;
+extern void
+mqueue_local_enqueue_head(mqueue_local_queue lmq, mqueue_block mqb) ;
+
Inline mqueue_block
mqueue_local_head(mqueue_local_queue lmq) ;