29#ifndef _LOS_SORTLINK_PRI_H
30#define _LOS_SORTLINK_PRI_H
50#ifndef LOSCFG_BASE_CORE_USE_SINGLE_LIST
51#ifndef LOSCFG_BASE_CORE_USE_MULTI_LIST
52#error "NO SORTLIST TYPE SELECTED"
56#ifdef LOSCFG_BASE_CORE_USE_SINGLE_LIST
58#define OS_TSK_SORTLINK_LOGLEN 0U
59#define OS_TSK_SORTLINK_LEN 1U
60#define OS_TSK_MAX_ROLLNUM 0xFFFFFFFEU
61#define OS_TSK_LOW_BITS_MASK 0xFFFFFFFFU
63#define SORTLINK_CURSOR_UPDATE(CURSOR)
64#define SORTLINK_LISTOBJ_GET(LISTOBJ, SORTLINK) (LISTOBJ = SORTLINK->sortLink)
66#define ROLLNUM_SUB(NUM1, NUM2) ((NUM1) = (ROLLNUM(NUM1) - ROLLNUM(NUM2)))
67#define ROLLNUM_ADD(NUM1, NUM2) ((NUM1) = (ROLLNUM(NUM1) + ROLLNUM(NUM2)))
68#define ROLLNUM_DEC(NUM) ((NUM) = ((NUM) - 1))
69#define ROLLNUM(NUM) (NUM)
71#define SET_SORTLIST_VALUE(sortList, value) (((SortLinkList *)(sortList))->idxRollNum = (value))
75#define OS_TSK_HIGH_BITS 3U
76#define OS_TSK_LOW_BITS (32U - OS_TSK_HIGH_BITS)
77#define OS_TSK_SORTLINK_LOGLEN OS_TSK_HIGH_BITS
78#define OS_TSK_SORTLINK_LEN (1U << OS_TSK_SORTLINK_LOGLEN)
79#define OS_TSK_SORTLINK_MASK (OS_TSK_SORTLINK_LEN - 1U)
80#define OS_TSK_MAX_ROLLNUM (0xFFFFFFFFU - OS_TSK_SORTLINK_LEN)
81#define OS_TSK_HIGH_BITS_MASK (OS_TSK_SORTLINK_MASK << OS_TSK_LOW_BITS)
82#define OS_TSK_LOW_BITS_MASK (~OS_TSK_HIGH_BITS_MASK)
84#define SORTLINK_CURSOR_UPDATE(CURSOR) ((CURSOR) = ((CURSOR) + 1) & OS_TSK_SORTLINK_MASK)
85#define SORTLINK_LISTOBJ_GET(LISTOBJ, SORTLINK) ((LISTOBJ) = (SORTLINK)->sortLink + (SORTLINK)->cursor)
87#define EVALUATE_L(NUM, VALUE) ((NUM) = (((NUM) & OS_TSK_HIGH_BITS_MASK) | (VALUE)))
89#define EVALUATE_H(NUM, VALUE) ((NUM) = (((NUM) & OS_TSK_LOW_BITS_MASK) | ((VALUE) << OS_TSK_LOW_BITS)))
91#define ROLLNUM_SUB(NUM1, NUM2) ((NUM1) = (((NUM1) & OS_TSK_HIGH_BITS_MASK) | \
92 (ROLLNUM(NUM1) - ROLLNUM(NUM2))))
94#define ROLLNUM_ADD(NUM1, NUM2) ((NUM1) = (((NUM1) & OS_TSK_HIGH_BITS_MASK) | \
95 (ROLLNUM(NUM1) + ROLLNUM(NUM2))))
97#define ROLLNUM_DEC(NUM) ((NUM) = ((NUM) - 1))
99#define ROLLNUM(NUM) ((NUM) & OS_TSK_LOW_BITS_MASK)
101#define SORT_INDEX(NUM) ((NUM) >> OS_TSK_LOW_BITS)
103#define SET_SORTLIST_VALUE(sortList, value) (((SortLinkList *)(sortList))->idxRollNum = (value))
VOID OsDeleteSortLink(const SortLinkAttribute *sortLinkHeader, SortLinkList *sortList)
VOID OsSortLinkInit(SortLinkAttribute *sortLinkHeader, LOS_DL_LIST *list)
UINT32 OsSortLinkGetNextSwtmrExpireTime(UINT32 *swtmrId, UINTPTR *handler)
UINT32 OsSortLinkGetNextTaskExpireTime(UINT32 *taskId, UINTPTR *handler)
VOID OsAdd2SortLink(const SortLinkAttribute *sortLinkHeader, SortLinkList *sortList)
UINT32 OsSortLinkGetTargetExpireTime(const SortLinkAttribute *sortLinkHeader, const SortLinkList *targetSortList)
UINT32 OsSortLinkGetNextExpireTime(const SortLinkAttribute *sortLinkHeader)
VOID OsSortLinkUpdateExpireTime(UINT32 sleepTicks, SortLinkAttribute *sortLinkHeader)
unsigned short UINT16
Definition los_typedef.h:51
#define VOID
Definition los_typedef.h:88
unsigned int UINTPTR
Definition los_typedef.h:74
unsigned int UINT32
Definition los_typedef.h:52
Definition los_sortlink_pri.h:112
UINT16 reserved
Definition los_sortlink_pri.h:115
UINT16 cursor
Definition los_sortlink_pri.h:114
LOS_DL_LIST * sortLink
Definition los_sortlink_pri.h:113
Definition los_sortlink_pri.h:107
LOS_DL_LIST sortLinkNode
Definition los_sortlink_pri.h:108
UINT32 idxRollNum
Definition los_sortlink_pri.h:109