summaryrefslogtreecommitdiffstats
path: root/lf_ring_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'lf_ring_buffer.h')
-rw-r--r--lf_ring_buffer.h30
1 files changed, 10 insertions, 20 deletions
diff --git a/lf_ring_buffer.h b/lf_ring_buffer.h
index e9a5727..a7c7786 100644
--- a/lf_ring_buffer.h
+++ b/lf_ring_buffer.h
@@ -32,6 +32,8 @@
extern "C" {
# endif /* __cplusplus */
+#include "lf_ring_buffer_data.h"
+
#define BACKOFF_DELAY_INIT 1000
#define BACKOFF_DELAY_INC 3000
#define BACKOFF_DELAY_MAX 90000
@@ -39,27 +41,15 @@ extern "C" {
#define NO_BLOCK 1 /* if buffer is full, leave instead of try again and again */
#define IS_NOT_BLOCKING( flags ) ( (flags)&NO_BLOCK )
-#define RB_DATA_SIZE 63
-typedef char rb_data_t;
-
-typedef struct buffer_el {
- char status;
- rb_data_t data[RB_DATA_SIZE];
-} lf_buffer_el_t;
-
typedef struct ring_buffer {
- lf_buffer_el_t *buffer; /* buffer data */
- int n_buf; /* number of buffers */
- int read_from; /* index where to read data from */
- int write_to; /* index where to write data to */
- int write_delay; /* backoff nanosleep to reduce fast looping when writing */
- int read_delay; /* backoff nanosleep to reduce fast looping when reading */
+ LFRB_BUFFER_TYPE *buffer; /* buffer data */
+ int n_buf; /* number of buffers */
+ int read_from; /* index where to read data from */
+ int write_to; /* index where to write data to */
+ int write_delay; /* backoff nanosleep to reduce fast looping when writing */
+ int read_delay; /* backoff nanosleep to reduce fast looping when reading */
} lf_ring_buffer_t;
-#define IS_AVAILABLE( idx ) (r->buffer[(idx)].status==0)
-#define MARK_AS_FILLED( idx ) { r->buffer[(idx)].status=1; }
-#define MARK_AS_READ( idx ) { r->buffer[(idx)].status=0; }
-
/* return an initialized lf_ring_buffer_t struct */
lf_ring_buffer_t* lf_ring_buffer_create( int n_buf );
@@ -70,13 +60,13 @@ void lf_ring_buffer_destroy( lf_ring_buffer_t *r );
* return 0 on success
* return -1 if IS_NOT_BLOCKING and buffer is full
*/
-int lf_ring_buffer_write( lf_ring_buffer_t *r, rb_data_t *data, int flags );
+int lf_ring_buffer_write( lf_ring_buffer_t *r, void *data, int flags );
/* read data from the ring buffer
* return 0 on success
* return -1 if IS_NOT_BLOCKING and buffer is empty
*/
-int lf_ring_buffer_read( lf_ring_buffer_t *r, rb_data_t *data, int flags );
+int lf_ring_buffer_read( lf_ring_buffer_t *r, void *data, int flags );
# ifdef __cplusplus
}