9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
30 lines
744 B
C
30 lines
744 B
C
#ifndef RING_FIFO_H
|
|
#define RING_FIFO_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
typedef void (*lock_fun)(void);
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t *buf;
|
|
uint32_t buf_size;
|
|
uint32_t occupy_size;
|
|
uint8_t *pwrite;
|
|
uint8_t *pread;
|
|
void (*lock)(void);
|
|
void (*unlock)(void);
|
|
}_fifo_t;
|
|
|
|
void fifo_register(_fifo_t *pfifo, uint8_t *pfifo_buf, uint32_t size,
|
|
lock_fun lock, lock_fun unlock);
|
|
void fifo_release(_fifo_t *pfifo);
|
|
uint32_t fifo_write(_fifo_t *pfifo, const uint8_t *pbuf, uint32_t size);
|
|
uint32_t fifo_read(_fifo_t *pfifo, uint8_t *pbuf, uint32_t size);
|
|
uint32_t fifo_get_total_size(_fifo_t *pfifo);
|
|
uint32_t fifo_get_free_size(_fifo_t *pfifo);
|
|
uint32_t fifo_get_occupy_size(_fifo_t *pfifo);
|
|
|
|
#endif
|