===== ring_buffer.h =====
#ifndef __RING_BUFFER_H__
#define __RING_BUFFER_H__
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <assert.h>
#include <string.h>
#include <inttypes.h>
#include <pthread.h>
typedef struct ringbuffer_s
{
int64_t mBufferSize;
char *mBuffer;
char *mBuffer_end;
char *wp;
char *rp;
pthread_mutex_t *mLock;
} ringbuffer_t;
ringbuffer_t* init_ringbuffer(int buff_size);
void free_ringbuffer(ringbuffer_t *rb);
int write_ringbuffer(ringbuffer_t *rb, uint8_t *buf, int size);
int read_ringbuffer(ringbuffer_t *rb, uint8_t *buf, int size);
int64_t space_ringbuffer(ringbuffer_t *rb);
void reset_ringbuffer(ringbuffer_t *rb);
#endif
===== ring_buffer.c
#include "ring_buffer.h"
//#define min(x, y) ({ \