00001 #ifndef _RINGBUFFER_H 00002 #define _RINGBUFFER_H 00003 00004 #include <sys/types.h> 00005 00020 typedef struct 00021 { 00022 char *buf; 00023 size_t len; 00024 } 00025 jack_ringbuffer_data_t ; 00026 00027 typedef struct 00028 { 00029 char *buf; 00030 volatile size_t write_ptr; 00031 volatile size_t read_ptr; 00032 size_t size; 00033 size_t size_mask; 00034 int mlocked; 00035 } 00036 jack_ringbuffer_t ; 00037 00048 jack_ringbuffer_t *jack_ringbuffer_create(size_t sz); 00049 00056 void jack_ringbuffer_free(jack_ringbuffer_t *rb); 00057 00078 void jack_ringbuffer_get_read_vector(jack_ringbuffer_t *rb, 00079 jack_ringbuffer_data_t *vec); 00080 00100 void jack_ringbuffer_get_write_vector(jack_ringbuffer_t *rb, 00101 jack_ringbuffer_data_t *vec); 00102 00113 size_t jack_ringbuffer_read(jack_ringbuffer_t *rb, char *dest, size_t cnt); 00114 00126 void jack_ringbuffer_read_advance(jack_ringbuffer_t *rb, size_t cnt); 00127 00135 size_t jack_ringbuffer_read_space(jack_ringbuffer_t *rb); 00136 00144 int jack_ringbuffer_mlock(jack_ringbuffer_t *rb); 00145 00153 void jack_ringbuffer_reset(jack_ringbuffer_t *rb); 00154 00164 size_t jack_ringbuffer_write(jack_ringbuffer_t *rb, char *src, size_t cnt); 00165 00177 void jack_ringbuffer_write_advance(jack_ringbuffer_t *rb, size_t cnt); 00178 00186 size_t jack_ringbuffer_write_space(jack_ringbuffer_t *rb); 00187 00188 00189 #endif