完善资料让更多小伙伴认识你,还能领取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的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
795 浏览 0 评论
4743 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2605 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2949 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31683 浏览 11 评论
73073 浏览 21 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 11:16 , Processed in 0.394023 second(s), Total 40, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号