/****************************************************************************** 版权所有: 文件名称: rt_fifo.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2020-06-18 功能说明: 实时FIFO,采用免锁算法,只支持单进单出,不支持多进多处。 其它说明: 修改记录: */ #ifndef _RT_FIFO_H #define _RT_FIFO_H /*------------------------------- 头文件 -------------------------------------- */ /*------------------------------- 宏定义 -------------------------------------- */ /*------------------------------ 类型结构 ------------------------------------- */ struct rt_fifo { unsigned char *buffer; // 数据缓存 unsigned int size; // buffer 的大小,必须是2的n次方 unsigned int in; // 数据进偏移 (in % size) unsigned int out; // 数据出偏移(out % size) }; /*------------------------------ 函数声明 ------------------------------------- */ static inline void rt_fifo_reset(struct rt_fifo *fifo) { fifo->in = fifo->out = 0; } static inline unsigned int rt_fifo_len(struct rt_fifo *fifo) { return fifo->in - fifo->out; } static inline int rt_fifo_space(struct rt_fifo *fifo) { return fifo->size - (fifo->in - fifo->out) - 1; } int rt_fifo_init(struct rt_fifo *fifo, unsigned char *buffer, unsigned int size); unsigned int rt_fifo_get(struct rt_fifo *fifo,unsigned char *buffer, unsigned int len); unsigned int rt_fifo_put(struct rt_fifo *fifo,unsigned char *buffer, unsigned int len); #endif //_RT_FIFO_H /*------------------------------ 文件结束 ------------------------------------- */