完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rt_size_t rt_ringbuffer_peak(struct rt_ringbuffer *rb, rt_uint8_t **ptr)
{ RT_ASSERT(rb != RT_NULL); *ptr = RT_NULL; /* whether has enough data */ rt_size_t size = rt_ringbuffer_data_len(rb); /* no data */ if (size == 0) return 0; *ptr = &rb->buffer_ptr[rb->read_index]; if((rt_size_t)(rb->buffer_size - rb->read_index) > size) { rb->read_index += size; return size; } size = rb->buffer_size - rb->read_index; /* we are going into the other side of the mirror */ rb->read_mirror = ~rb->read_mirror; rb->read_index = 0; return size; } 请教一下ringbuffer.c,里面的一段代码,谢谢!rt_ringbuffer_peak里的最后的rb->read_index = 0;有点不理解,不应该是rb->read_index += size;才对吗? |
|
相关推荐
1个回答
|
|
bufsize - readindex小于size时,表示,从readindex到数组终点处有数据。你看,后续代码中,size = bufsize - readindex,将readindex设置为0,意味着将目前readindex到数组终点的数据取出来了,下次从数组起点处读取。
这个分析应该没错的。 我在上一楼回帖的观点是,这个函数的功能与文档描述不符,不要用它了。如果按照文档说明,这个函数只到ptr处理处就结束了,不应该去动readindex的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
830 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2916 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1391 浏览 0 评论
2006 浏览 0 评论
1553 浏览 0 评论
75088 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 04:39 , Processed in 0.407681 second(s), Total 39, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号