开发指导
功能
Huawei LiteOS的双向链表模块为用户提供下面几种功能,接口详细信息可以查看API参考。
功能分类 | 接口名 | 描述 |
|---|---|---|
初始化链表 | LOS_ListInit | 将指定节点初始化为双向链表节点 |
LOS_DL_LIST_HEAD | 定义一个节点并初始化为双向链表节点 | |
增加节点 | LOS_ListAdd | 将指定节点插入到双向链表头端 |
LOS_ListHeadInsert | 将指定节点插入到双向链表头端,同LOS_ListAdd | |
LOS_ListTailInsert | 将指定节点插入到双向链表尾端 | |
删除节点 | LOS_ListDelete | 将指定节点从链表中删除 |
LOS_ListDelInit | 将指定节点从链表中删除,并使用该节点初始化链表 | |
判断双向链表是否为空 | LOS_ListEmpty | 判断链表是否为空 |
获取节点 | LOS_DL_LIST_LAST | 获取指定节点的前驱结点 |
LOS_DL_LIST_FIRST | 获取指定节点的后继结点 | |
获取结构体信息 | LOS_DL_LIST_ENTRY | 获取包含链表的结构体地址,接口的第一个入参表示的是链表中的某个节点,第二个入参是要获取的结构体名称,第三个入参是链表在该结构体中的名称 |
LOS_OFF_SET_OF | 获取指定结构体内的成员相对于结构体起始地址的偏移量 | |
遍历双向链表 | LOS_DL_LIST_FOR_EACH | 遍历双向链表 |
LOS_DL_LIST_FOR_EACH_SAFE | 遍历双向链表,并存储当前节点的后继节点用于安全校验 | |
遍历包含双向链表的结构体 | LOS_DL_LIST_FOR_EACH_ENTRY | 遍历指定双向链表,获取包含该链表节点的结构体地址 |
LOS_DL_LIST_FOR_EACH_ENTRY_SAFE | 遍历指定双向链表,获取包含该链表节点的结构体地址,并存储包含当前节点的后继节点的结构体地址 | |
LOS_DL_LIST_FOR_EACH_ENTRY_HOOK | 遍历指定双向链表,获取包含该链表节点的结构体地址,并在每次循环中调用钩子函数 |
开发流程
双向链表的典型开发流程:
- 调用LOS_ListInit/LOS_DL_LIST_HEAD初始双向链表。
- 调用LOS_ListAdd/LOS_ListHeadInsert向链表头部插入节点。
- 调用LOS_ListTailInsert向链表尾部插入节点。
- 调用LOS_ListDelete删除指定节点。
- 调用LOS_ListEmpty判断链表是否为空。
- 调用LOS_ListDelInit删除指定节点并以此节点初始化链表。

