1.概述
链表是在程序设计过程中经常使用的数据结构,bcos系统内部的调度和tasklet的实现都是基于链表。所以,对链表的支持是bcos与生俱来的特性。bcos的链表设计参考了Linux内核链表的设计思想,如果用户想使用链表只需要在自己的数据结构中包含链表头,然后便可以开始使用链表来实现自己的数据结构了。
2.双向循环链表
下面展示了双向循环链表的所有接口并附有简单的解释。每个接口的参数都易于理解,读者很容易理解并使用接口实现利用双向循环链表进行数据的管理。
链表头:
struct list_head{
struct list_head *next, *prev;
};
初始化链表:
//静态初始化链表
#define LIST_HEAD_INIT(name) \
{ \
&(name), \
&(name), \
}
//定义并静态初始化链表
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
//动态初始化链表
static inline void INIT_LIST_HEAD(struct list_head *list)