单链列表
Zephyr提供了一种sys_slist_t类型,用于存储简单的单链列表数据(即,每个列表元素存储一个指向下一个元素的指针,而不是指向上一个元素的指针)。这支持持续时间访问列表的第一个(头部)和最后一个(尾部)元素,插入到列表的头部之前和尾部之后,以及持续时间删除头部。删除后续节点需要访问“前一个”指针,因此只能通过搜索列表在线性时间内执行。
sys_slist_t结构可以由用户在任何可访问的内存中进行实例化。在使用之前应该用sys_slist_init()或SYS_SLIST_STATIC_INIT的静态分配来初始化。它的内部字段是不透明的,不应该被用户代码访问。
列表的结束节点可以使用sys_slist_peek_head()和sys_slist_peek_tail()检索,如果列表为空,则将返回NULL,否则返回指向sys_snode_t结构的指针。
sys_snode_t结构体表示要插入的数据。通常,它应该由用户分配/控制,通常嵌入在要添加到列表中的结构体中。容器结构指针可以使用SYS_SLIST_CONTAINER从列表节点中检索,并将其传递给包含结构的结构名和节点的字段名。在内部,sys_snode_t结构只包含下一个指针,可以使用sys_slist_peek_next()访问它。
可以通过在具有sys_slist_
本文介绍了Zephyr内核中的单链列表数据结构,包括如何初始化、插入、删除节点,以及如何遍历和修改列表。还提到了单链列表的内部实现和标记列表,后者允许关联用户定义的标志。
订阅专栏 解锁全文
575

被折叠的 条评论
为什么被折叠?



