40#ifdef LOSCFG_DEBUG_QUEUE
50 return (*((
UINT64 *)(VOID *)SORT_ELEM_ADDR(sortParam, left)) >
51 *((
UINT64 *)(VOID *)SORT_ELEM_ADDR(sortParam, right)));
60 PRINT_ERR(
"%s: malloc failed!\n", __FUNCTION__);
84 PRINTK(
"Queue ID <0x%x> may leak, queue len is 0x%x, "
85 "readable cnt:0x%x, writable cnt:0x%x, ",
94 PRINTK(
"TaskEntry of creater:0x%p, Latest operation time: 0x%llx\n",
110 SCHEDULER_LOCK(intSave);
112 SCHEDULER_UNLOCK(intSave);
113 for (index = 0; index < count; index++) {
114 SCHEDULER_LOCK(intSave);
115 (VOID)memcpy_s(&queueNode,
sizeof(
LosQueueCB),
116 GET_QUEUE_HANDLE(indexArray[index]),
sizeof(
LosQueueCB));
119 SCHEDULER_UNLOCK(intSave);
120 if (queueNode.
queueState == OS_QUEUE_UNUSED) {
127 (VOID)
LOS_MemFree((VOID *)OS_SYS_MEM_ADDR, indexArray);
144 for (index = 0; index < LOSCFG_BASE_IPC_QUEUE_LIMIT; index++) {
145 SCHEDULER_LOCK(intSave);
146 (VOID)memcpy_s(&queueNode,
sizeof(
LosQueueCB),
150 SCHEDULER_UNLOCK(intSave);
151 if ((queueNode.
queueState == OS_QUEUE_UNUSED) ||
152 ((queueNode.
queueState == OS_QUEUE_INUSED) && (queueDebugNode.
creater == NULL))) {
155 if ((queueNode.
queueState == OS_QUEUE_INUSED) &&
160 PRINTK(
"Queue ID <0x%x> may leak, No task uses it, "
161 "QueueLen is 0x%x, ",
166 if (indexArray != NULL) {
167 *(indexArray + count) = index;
176 if (indexArray != NULL) {
183#ifdef LOSCFG_SHELL_CMD_DEBUG
187 PRINTK(
"\nUsage: queue\n");
190 PRINTK(
"used queues information: \n");
@ CMD_TYPE_EX
不支持标准命令参数输入,会把用户填写的命令关键字屏蔽掉,例如:输入ls /ramfs,传入给注册函数的参数只有/ramfs,而ls命令关键字并不会被传入。
LITE_OS_SEC_ALW_INLINE STATIC INLINE BOOL LOS_ListEmpty(LOS_DL_LIST *list)
Identify whether a specified doubly linked list is empty. | 判断链表是否为空
VOID * LOS_MemAlloc(VOID *pool, UINT32 size)
从指定内存池中申请size长度的内存,注意这可不是从内核堆空间中申请内存
UINT8 * m_aucSysMem1
系统动态内存池地址的起始地址 @note_thinking 能否不要用 0,1来命名核心变量 ???
UINT32 LOS_MemFree(VOID *pool, VOID *ptr)
释放从指定动态内存中申请的内存
LITE_OS_SEC_TEXT_MINOR UINT64 LOS_TickCountGet(VOID)
获取自系统启动以来的Tick数
VOID *(* TSK_ENTRY_FUNC)(UINTPTR param1, UINTPTR param2, UINTPTR param3, UINTPTR param4)
Define the type of a task entrance function.
VOID OsArraySortByTime(UINT32 *sortArray, UINT32 start, UINT32 end, const IpcSortParam *sortParam, OsCompareFunc compareFunc)
STATIC BOOL QueueCompareValue(const IpcSortParam *sortParam, UINT32 left, UINT32 right)
VOID OsQueueDbgTimeUpdate(UINT32 queueID)
LITE_OS_SEC_TEXT_MINOR UINT32 OsShellCmdQueueInfoGet(UINT32 argc, const CHAR **argv)
STATIC QueueDebugCB * g_queueDebugArray
STATIC VOID SortQueueIndexArray(UINT32 *indexArray, UINT32 count)
SHELLCMD_ENTRY(queue_shellcmd, CMD_TYPE_EX, "queue", 0,(CmdCallBackFunc) OsShellCmdQueueInfoGet)
STATIC INLINE VOID OsQueueInfoOutPut(const LosQueueCB *node)
STATIC INLINE VOID OsQueueOpsOutput(const QueueDebugCB *node)
UINT32 OsQueueDbgInit(VOID)
VOID OsQueueDbgUpdate(UINT32 queueID, TSK_ENTRY_FUNC entry)
UINT16 readWriteableCnt[OS_QUEUE_N_RW]
LOS_DL_LIST readWriteList[OS_QUEUE_N_RW]
u32_t(* CmdCallBackFunc)(u32_t argc, const char **argv)