diff src/neon/rb.h @ 2151:9a9f406374c6

- Update ring buffer code to newer version
author Ralf Ertzinger <ralf@skytale.net>
date Sun, 04 Nov 2007 14:04:37 +0100
parents dc83901850df
children b73ea297d197
line wrap: on
line diff
--- a/src/neon/rb.h	Sat Nov 03 01:23:56 2007 +0200
+++ b/src/neon/rb.h	Sun Nov 04 14:04:37 2007 +0100
@@ -17,7 +17,21 @@
 #ifndef _RB_H
 #define _RB_H
 
+#ifdef _RB_USE_GLIB
+#include <glib.h>
+
+typedef GMutex rb_mutex_t;
+#define _RB_LOCK(L) g_mutex_lock(L)
+#define _RB_UNLOCK(L) g_mutex_unlock(L)
+
+#else
 #include <pthread.h>
+
+typedef pthread_mutex_t rb_mutex_t;
+#define _RB_LOCK(L) pthread_mutex_lock(L)
+#define _RB_UNLOCK(L) pthread_mutex_unlock(L)
+#endif
+
 #include <stdlib.h>
 
 #ifdef RB_DEBUG
@@ -27,7 +41,8 @@
 #endif
 
 struct ringbuf {
-    pthread_mutex_t lock;
+    rb_mutex_t* lock;
+    char _free_lock;
     char* buf;
     char* end;
     char* wp;
@@ -38,11 +53,13 @@
 };
 
 int init_rb(struct ringbuf* rb, unsigned int size);
+int init_rb_with_lock(struct ringbuf* rb, unsigned int size, rb_mutex_t* lock);
 int write_rb(struct ringbuf* rb, void* buf, unsigned int size);
 int read_rb(struct ringbuf* rb, void* buf, unsigned int size);
 int read_rb_locked(struct ringbuf* rb, void* buf, unsigned int size);
 void reset_rb(struct ringbuf* rb);
 unsigned int free_rb(struct ringbuf* rb);
+unsigned int free_rb_locked(struct ringbuf* rb);
 unsigned int used_rb(struct ringbuf* rb);
 void destroy_rb(struct ringbuf* rb);