mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-09-01 18:01:13 +02:00
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@1501 e54a6e83-5905-42d5-8d5c-058d10e6a962
46 lines
1.1 KiB
C
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
|