2025-05-25 16:01:05 +02:00
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
#ifdef RINGBUFFER_THREAD_SAFE
|
2025-05-22 20:49:02 +02:00
|
|
|
#include <pthread.h>
|
2025-05-25 16:01:05 +02:00
|
|
|
#endif
|
2025-05-22 20:49:02 +02:00
|
|
|
|
2025-05-20 22:23:19 +02:00
|
|
|
struct ringBuffer {
|
2025-05-22 20:49:02 +02:00
|
|
|
void *buffer;
|
2025-05-21 22:39:32 +02:00
|
|
|
int blocks;
|
|
|
|
size_t blockSize;
|
2025-05-22 20:49:02 +02:00
|
|
|
void *reader;
|
|
|
|
void *writer;
|
2025-05-25 15:27:00 +02:00
|
|
|
#ifdef RINGBUFFER_THREAD_SAFE
|
2025-05-22 20:49:02 +02:00
|
|
|
pthread_mutex_t mutex;
|
2025-05-25 15:27:00 +02:00
|
|
|
#endif
|
2025-05-20 22:23:19 +02:00
|
|
|
};
|
|
|
|
|
2025-05-21 22:39:32 +02:00
|
|
|
void ringBufferCreate(int blocks, size_t blockSize, struct ringBuffer *out);
|
2025-05-20 22:23:19 +02:00
|
|
|
void ringBufferDestroy(struct ringBuffer *buf);
|
2025-05-22 20:49:02 +02:00
|
|
|
int ringBufferRead(struct ringBuffer *buf, void *out);
|
|
|
|
void ringBufferWrite(struct ringBuffer *buf, void *in);
|