| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /******************************************************************************
- 版权所有:
- 文件名称: 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
- /*------------------------------ 文件结束 -------------------------------------
- */
|