最简单的循环缓冲区

说明:循环缓冲区
  • loopbuf.h
#ifndef _LOOPBUF_H_
#define _LOOPBUF_H_

#define u32 unsigned int
#define u8 unsigned char
#define u16 unsigned short

typedef struct LoopBuf_t
{
	u32		flag;
	u32		head;
	u32		tail;
	u16  	len;
	u8		buf[30];

} LoopBuf;



#define GET_LOOPBUF_WLEN(LOOPBUF,MAXLEN)	((((LOOPBUF)->head)+(u16)(MAXLEN)-(((LOOPBUF)->tail)+1))%(u16)(MAXLEN))
#define GET_LOOPBUF_RLEN(LOOPBUF,MAXLEN)	(((u16)(MAXLEN)-1)- (GET_LOOPBUF_WLEN(LOOPBUF,MAXLEN)))

#define LOOPBUF_READ(LOOPBUF,MAXLEN,data,size) \
do { \
	int i;\
	for (i=0;i<size;i++) \
	{\
		data[i]=((LOOPBUF)->buf)[((LOOPBUF)->head)];\
		((LOOPBUF)->head)=(++((LOOPBUF)->head))%(u16)(MAXLEN);\
	}\
}while(0)

#define LOOPBUF_WRITE_BYTE(LOOPBUF,MAXLEN,chr)\
	do {\
			((LOOPBUF)->buf)[((LOOPBUF)->tail)]=(chr);\
			((LOOPBUF)->tail)=(++((LOOPBUF)->tail))%(u16)(MAXLEN);\
}while(0)

#define LOOPBUF_WRITE(LOOPBUF,MAXLEN,data,size)\
	do {\
		int i;\
		for (i=0;i<size;i++)\
		{\
			LOOPBUF_WRITE_BYTE(LOOPBUF,MAXLEN,((data)[i]));\
		}\
}while(0)




#endif

转载于:https://my.oschina.net/u/2345008/blog/1556156

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值