From 0952625b1459b14a3847fd7d6af560bde8561106 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Thu, 8 May 2003 20:48:50 +0000 Subject: [PATCH] All the ring buf functions now reset (clear) the semaphores when appropriate. --- src/sbbs3/ringbuf.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/sbbs3/ringbuf.c b/src/sbbs3/ringbuf.c index fa7fdfe0f9..f839a1285f 100644 --- a/src/sbbs3/ringbuf.c +++ b/src/sbbs3/ringbuf.c @@ -135,6 +135,13 @@ DWORD RINGBUFCALL RingBufFull( RingBuf* rb ) else retval = rb->size - (tail - head); +#ifdef RINGBUF_SEM + if(retval==0) /* empty */ + sem_reset(&rb->sem); + if(retval<rb->highwater_mark) + sem_reset(&rb->highwater_sem); +#endif + #ifdef RINGBUF_MUTEX pthread_mutex_unlock(&rb->mutex); #endif @@ -248,6 +255,10 @@ DWORD RINGBUFCALL RingBufRead( RingBuf* rb, BYTE* dst, DWORD cnt ) if(rb->pTail > rb->pEnd) rb->pTail = rb->pStart; +#ifdef RINGBUF_SEM /* clear semaphores, if appropriate */ + RingBufFull( rb ); +#endif + #ifdef RINGBUF_MUTEX pthread_mutex_unlock(&rb->mutex); #endif @@ -302,6 +313,10 @@ void RINGBUFCALL RingBufReInit(RingBuf* rb) pthread_mutex_lock(&rb->mutex); #endif rb->pHead = rb->pTail = rb->pStart; +#ifdef RINGBUF_SEM + sem_reset(&rb->sem); + sem_reset(&rb->highwater_sem); +#endif #ifdef RINGBUF_MUTEX pthread_mutex_unlock(&rb->mutex); #endif -- GitLab