summaryrefslogtreecommitdiffstats
path: root/threads.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-01-03 09:44:54 +0000
committerRainer Gerhards <rgerhards@adiscon.com>2008-01-03 09:44:54 +0000
commit29d9729292d44d2827054a1aef27278f3dadd57e (patch)
treedcede7f015fd4c4d1ef7ccd311a505bfdc79e1c2 /threads.c
parenta05de60a5670c759b5dbe6e60bbac8fe9332420d (diff)
downloadrsyslog-29d9729292d44d2827054a1aef27278f3dadd57e.tar.gz
rsyslog-29d9729292d44d2827054a1aef27278f3dadd57e.tar.xz
rsyslog-29d9729292d44d2827054a1aef27278f3dadd57e.zip
moved queue code to its own module (finally)
Diffstat (limited to 'threads.c')
-rw-r--r--threads.c88
1 files changed, 0 insertions, 88 deletions
diff --git a/threads.c b/threads.c
index 38e86195..24cae97f 100644
--- a/threads.c
+++ b/threads.c
@@ -41,10 +41,6 @@
#include "linkedlist.h"
#include "threads.h"
-/* static data */
-int iMainMsgQueueSize;
-msgQueue *pMsgQueue = NULL;
-
/* linked list of currently-known threads */
static linkedList_t llThrds;
@@ -263,90 +259,6 @@ thrdSleep(thrdInfo_t *pThis, int iSeconds, int iuSeconds)
}
-/* queue functions (may be migrated to some other file...)
- */
-
-
-msgQueue *queueInit (void)
-{
- msgQueue *q;
-
- q = (msgQueue *)malloc(sizeof(msgQueue));
- if (q == NULL) return (NULL);
- if((q->pbuf = malloc(sizeof(void *) * iMainMsgQueueSize)) == NULL) {
- free(q);
- return NULL;
- }
-
- q->empty = 1;
- q->full = 0;
- q->head = 0;
- q->tail = 0;
- q->mut = (pthread_mutex_t *) malloc (sizeof (pthread_mutex_t));
- pthread_mutex_init (q->mut, NULL);
- q->notFull = (pthread_cond_t *) malloc (sizeof (pthread_cond_t));
- pthread_cond_init (q->notFull, NULL);
- q->notEmpty = (pthread_cond_t *) malloc (sizeof (pthread_cond_t));
- pthread_cond_init (q->notEmpty, NULL);
-
- return (q);
-}
-
-void queueDelete (msgQueue *q)
-{
- pthread_mutex_destroy (q->mut);
- free (q->mut);
- pthread_cond_destroy (q->notFull);
- free (q->notFull);
- pthread_cond_destroy (q->notEmpty);
- free (q->notEmpty);
- free(q->pbuf);
- free (q);
-}
-
-
-/* In queueAdd() and queueDel() we have a potential race condition. If a message
- * is dequeued and at the same time a message is enqueued and the queue is either
- * full or empty, the full (or empty) indicator may be invalidly updated. HOWEVER,
- * this does not cause any real problems. No queue pointers can be wrong. And even
- * if one of the flags is set invalidly, that does not pose a real problem. If
- * "full" is invalidly set, at mose one message might be lost, if we are already in
- * a timeout situation (this is quite acceptable). And if "empty" is accidently set,
- * the receiver will not continue the inner loop, but break out of the outer. So no
- * harm is done at all. For this reason, I do not yet use a mutex to guard the two
- * flags - there would be a notable performance hit with, IMHO, no gain in stability
- * or functionality. But anyhow, now it's documented...
- * rgerhards, 2007-09-20
- * NOTE: this comment does not really apply - the callers handle the mutex, so it
- * *is* guarded.
- */
-void queueAdd (msgQueue *q, void* in)
-{
- q->pbuf[q->tail] = in;
- q->tail++;
- if (q->tail == iMainMsgQueueSize)
- q->tail = 0;
- if (q->tail == q->head)
- q->full = 1;
- q->empty = 0;
-
- return;
-}
-
-void queueDel(msgQueue *q, void **out)
-{
- *out = (void*) q->pbuf[q->head];
-
- q->head++;
- if (q->head == iMainMsgQueueSize)
- q->head = 0;
- if (q->head == q->tail)
- q->empty = 1;
- q->full = 0;
-
- return;
-}
-
/*
* vi:set ai:
*/