博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kernel 中circle buffer的使用
阅读量:4215 次
发布时间:2019-05-26

本文共 707 字,大约阅读时间需要 2 分钟。

kernel 提供下面四个宏用于circ_buf的编程
返回buffer中没有读的count
 #define CIRC_CNT(head,tail,size) (((head) - (tail)) & ((size)-1))
返回还有几个空间可以写
 #define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size))
我们假定size =8,head=6,tail=4.
head-tail = -3 ,计算机中是用补码来表示的。-3的补码是1111 1101 & 0000 0111 = 0000 0101 =5表示还有5个空间可以写.8-4+1刚好等于5.
  
 25 #define CIRC_CNT_TO_END(head,tail,size) \
 26         ({int end = (size) - (tail); \
 27           int n = ((head) + end) & ((size)-1); \
 28           n < end ? n : end;})
从header到size还有几个位置,head =6,tail=4 size=8.则返回2
 31 #define CIRC_SPACE_TO_END(head,tail,size) \
 32         ({int end = (size) - 1 - (head); \
 33           int n = (end + (tail)) & ((size)-1); \
 34           n <= end ? n : end+1;})
从tail到size还有几个位置,head =6,tail=4 size=8.则返回5

转载地址:http://dtcmi.baihongyu.com/

你可能感兴趣的文章
cocos2dx 2.x定时器分析(2)
查看>>
cocos2dx 2.x定时器分析(3)
查看>>
cocos2dx 2.x定时器分析(4)
查看>>
cocos2dx 2.x定时器分析(5)
查看>>
cocos2dx 点击事件分析(1)
查看>>
我的Android笔记(十三)——Muilti-touch 双指缩放的实现探索
查看>>
cocos2dx 点击事件分析(2)
查看>>
cocos2dx android VisibleSize 由来
查看>>
生成cocos2dx 2.2.6 TestCpp例子 android工程遇到的问题(2)
查看>>
生成cocos2dx 2.2.6 TestCpp例子 android工程遇到的问题(1)
查看>>
生成cocos2dx 2.2.6 TestCpp例子 android工程遇到的问题(3)
查看>>
cocos2dx 点击事件分析(3)
查看>>
cocos2dx 点击事件分析(4)
查看>>
cocos2dx 点击事件分析(5)
查看>>
cocos2dx 音频模块分析(1)
查看>>
cocos2dx tolua传递参数分析
查看>>
cocos2dx-2.x CCFileUtils文件管理类分析(1)
查看>>
cocos2dx-2.x CCFileUtils文件管理类分析(2)
查看>>
cocos2dx-2.x CCFileUtils文件管理类分析(3)
查看>>
cocos2dx-2.x CCFileUtils文件管理类分析(4)
查看>>