开发指导
功能
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删除指定节点并以此节点初始化链表。