FreeRTOS列表和列表项源码详解
2023-12-27 09:00:41
列表和列表项的结构(回顾)
前文已经详细介绍了, 列表就是FreeRTOS的一种数据结构, 用于挂载各种不同状态的任务, 其实就是双向带头循环链表, 头结点就是列表结构体, 结点就是列表项结构体.
接下来回顾一下列表和列表项的结构.
列表的结构体
列表项的结构体
最小列表项的结构体
结构示意图?
当只有一个头节点的时候
如下所示, 表示了列表中此时没有一个列表项.
?
当列表有一个列表项时
这里数值不对, uxNumberOfItems = 1.??
?
当列表有2个列表项时
?
列表的API函数(回顾)
列表的API函数就是这些基本的, 初始化, 插入, 删除.?
初始化列表?
列表项的数值, 因为作为结尾所以是最大值, portMAX_DELAY就是0xffffffff.??
?列表项初始化
?非常简单, 把Container置0, 也就是此时不属于任何列表的列表项.
列表项升序插入列表(※)
还记得列表项中有一个分配的数值, xItemValue, 就是根据这个来进行升序插入. 此时的列表项里面已经有内容了, 比如阻塞态的列表项, 它的xItemValue就和任务延时的时间有关.
?
?
列表项尾插
?尾插是一种无序的插法, 此时两种情况的插法, 都和pxIndex有关, 插入到pxIndex的前面, 并不一定是列表的最后.
?
?删除列表项
?不管是插入, 还是删除, 都可以看出来, 列表并没有对列表项中的pvOwner进行操作, 这个挂载的才是真正的数据, 具体的操作, 是任务来进行的. 列表只是提供了一个数据存储结构.
?
文章来源:https://blog.csdn.net/qq_46129738/article/details/135224297
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!