Files
neutrino/src/driver/ringbuffer.h
striper ec402d9518 - add support for radiotext (needs testing) -> http://www.dbox2world.net/board293-coolstream-hd1/board296-coolstream-software/10635-radiotext-einbauen/
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@1501 e54a6e83-5905-42d5-8d5c-058d10e6a962
2011-06-02 15:29:40 +00:00

46 lines
1.1 KiB
C

#ifndef _RINGBUFFER_H
#define _RINGBUFFER_H
#include <sys/types.h>
typedef struct
{
char *buf;
size_t len;
} ringbuffer_data_t;
typedef struct
{
char *buf;
volatile size_t write_ptr;
volatile size_t read_ptr;
size_t size;
size_t size_mask;
int mlocked;
char *helpbuf;
size_t helpbufsize;
} ringbuffer_t;
ringbuffer_t *ringbuffer_create(int sz);
void ringbuffer_free(ringbuffer_t *rb);
int ringbuffer_mlock(ringbuffer_t *rb);
void ringbuffer_reset(ringbuffer_t *rb);
void ringbuffer_write_advance(ringbuffer_t *rb, size_t cnt);
void ringbuffer_read_advance(ringbuffer_t *rb, size_t cnt);
size_t ringbuffer_write_space(ringbuffer_t *rb);
size_t ringbuffer_read_space(ringbuffer_t *rb);
size_t ringbuffer_read(ringbuffer_t *rb, char *dest, size_t cnt);
size_t ringbuffer_write(ringbuffer_t *rb, char *src, size_t cnt);
void ringbuffer_get_read_vector(ringbuffer_t *rb, ringbuffer_data_t *vec);
void ringbuffer_get_write_vector(ringbuffer_t *rb, ringbuffer_data_t *vec);
size_t ringbuffer_get_readpointer(ringbuffer_t * rb, char **dest, size_t cnt);
size_t ringbuffer_get_writepointer(ringbuffer_t * rb, char **src, size_t cnt);
#endif