130#define LOS_DL_LIST_FIRST(object) ((object)->pstNext)
152#define LOS_DL_LIST_IS_END(list, node) ((list) == (node) ? TRUE : FALSE)
174#define LOS_DL_LIST_IS_ON_QUEUE(node) ((node)->pstPrev != NULL && (node)->pstNext != NULL)
196#define LOS_DL_LIST_LAST(object) ((object)->pstPrev)
352 oldListTail->
pstNext = newListHead;
353 newListHead->
pstPrev = oldListTail;
354 oldListHead->
pstPrev = newListTail;
355 newListTail->
pstNext = oldListHead;
425#define LOS_OFF_SET_OF(type, member) ((UINTPTR)&((type *)0)->member)
450#define LOS_DL_LIST_ENTRY(item, type, member) \
451 ((type *)(VOID *)((CHAR *)(item) - LOS_OFF_SET_OF(type, member)))
474#define LOS_DL_LIST_FOR_EACH_ENTRY(item, list, type, member) \
475 for (item = LOS_DL_LIST_ENTRY((list)->pstNext, type, member); \
476 &(item)->member != (list); \
477 item = LOS_DL_LIST_ENTRY((item)->member.pstNext, type, member))
501#define LOS_DL_LIST_FOR_EACH_ENTRY_SAFE(item, next, list, type, member) \
502 for (item = LOS_DL_LIST_ENTRY((list)->pstNext, type, member), \
503 next = LOS_DL_LIST_ENTRY((item)->member.pstNext, type, member); \
504 &(item)->member != (list); \
505 item = next, next = LOS_DL_LIST_ENTRY((item)->member.pstNext, type, member))
551#define LOS_DL_LIST_FOR_EACH(item, list) \
552 for (item = (list)->pstNext; \
554 item = (item)->pstNext)
576#define LOS_DL_LIST_FOR_EACH_SAFE(item, next, list) \
577 for (item = (list)->pstNext, next = (item)->pstNext; \
579 item = next, next = (item)->pstNext)
599#define LOS_DL_LIST_HEAD(list) LOS_DL_LIST list = { &(list), &(list) }
603#define LOS_ListPeekHeadType(list, type, element) ({ \
605 if ((list)->pstNext == list) { \
608 __t = LOS_DL_LIST_ENTRY((list)->pstNext, type, element); \
616#define LOS_ListRemoveHeadType(list, type, element) ({ \
618 if ((list)->pstNext == list) { \
621 __t = LOS_DL_LIST_ENTRY((list)->pstNext, type, element); \
622 LOS_ListDelete((list)->pstNext); \
631#define LOS_ListNextType(list, item, type, element) ({ \
633 if ((item)->pstNext == list) { \
636 __t = LOS_DL_LIST_ENTRY((item)->pstNext, type, element); \
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListDelInit(LOS_DL_LIST *list)
Delete initialize a doubly linked list. | 将指定节点从链表中删除,并使用该节点初始化链表
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListInit(LOS_DL_LIST *list)
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListTailInsert(LOS_DL_LIST *list, LOS_DL_LIST *node)
Insert a node to the tail of a doubly linked list.
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListAddList(LOS_DL_LIST *oldList, LOS_DL_LIST *newList)
Insert a new list to a doubly linked list.
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListHeadInsert(LOS_DL_LIST *list, LOS_DL_LIST *node)
Insert a node to the head of a doubly linked list.
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListTailInsertList(LOS_DL_LIST *oldList, LOS_DL_LIST *newList)
Insert a doubly list to the tail of a doubly linked list.
struct LOS_DL_LIST LOS_DL_LIST
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListDelete(LOS_DL_LIST *node)
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListAdd(LOS_DL_LIST *list, LOS_DL_LIST *node)
Insert a new node to a doubly linked list.
LITE_OS_SEC_ALW_INLINE STATIC INLINE BOOL LOS_ListEmpty(LOS_DL_LIST *list)
Identify whether a specified doubly linked list is empty. | 判断链表是否为空
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListHeadInsertList(LOS_DL_LIST *oldList, LOS_DL_LIST *newList)
Insert a doubly list to the head of a doubly linked list.
struct LOS_DL_LIST * pstPrev
struct LOS_DL_LIST * pstNext