35#ifdef LOSCFG_SCHED_DEBUG
36#ifdef LOSCFG_SCHED_TICK_DEBUG
49 return LOS_ERRNO_TSK_NO_MEMORY;
77 if (schedDebug == NULL) {
81 SCHEDULER_LOCK(intSave);
83 SCHEDULER_UNLOCK(intSave);
85 PRINTK(
"cpu ATRTime(us) ATRTimeMax(us) TickCount\n");
86 for (cpu = 0; cpu < LOSCFG_KERNEL_CORE_NUM; cpu++) {
89 if (schedData->
count > 0) {
91 averTime = (averTime * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
94 PRINTK(
"%3u%14llu%15llu%11llu\n", cpu, averTime, timeMax, schedData->
count);
107 *runTime = (averRunTime * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
112 *timeSlice = (averTimeSlice * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
117 *pendTime = (averPendTime * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
122 *schedWait = (averSchedWait * OS_NS_PER_CYCLE) / OS_SYS_NS_PER_US;
128 UINT32 taskLinkNum[LOSCFG_KERNEL_CORE_NUM];
132 SCHEDULER_LOCK(intSave);
133 for (
UINT16 cpu = 0; cpu < LOSCFG_KERNEL_CORE_NUM; cpu++) {
137 SCHEDULER_UNLOCK(intSave);
139 for (
UINT16 cpu = 0; cpu < LOSCFG_KERNEL_CORE_NUM; cpu++) {
140 PRINTK(
"cpu: %u Task SortMax: %u\n", cpu, taskLinkNum[cpu]);
143 PRINTK(
" Tid AverRunTime(us) SwitchCount AverTimeSlice(us) TimeSliceCount AverReadyWait(us) "
144 "AverPendTime(us) TaskName \n");
147 SCHEDULER_LOCK(intSave);
149 SCHEDULER_UNLOCK(intSave);
154 SCHEDULER_UNLOCK(intSave);
161 SchedDataGet(&task, &averRunTime, &averTimeSlice, &averPendTime, &averSchedWait);
163 PRINTK(
"%5u%19llu%15llu%19llu%18llu%19llu%18llu %-32s\n", taskCB->
taskID,
166 averSchedWait, averPendTime, taskCB->
taskName);
VOID * LOS_MemAlloc(VOID *pool, UINT32 size)
从指定内存池中申请size长度的内存,注意这可不是从内核堆空间中申请内存
UINT8 * m_aucSysMem1
系统动态内存池地址的起始地址 @note_thinking 能否不要用 0,1来命名核心变量 ???
UINT32 LOS_MemFree(VOID *pool, VOID *ptr)
释放从指定动态内存中申请的内存
UINT8 * m_aucSysMem0
异常交互动态内存池地址的起始地址,当不支持异常交互特性时,m_aucSysMem0等于m_aucSysMem1。
LITE_OS_SEC_BSS UINT32 g_taskMaxNum
任务最大数量 默认128个
LITE_OS_SEC_BSS LosTaskCB * g_taskCBArray
外部变量 任务池 默认128个
STATIC INLINE UINT32 ArchCurrCpuid(VOID)
LITE_OS_SEC_TEXT UINT32 OsGetIdleProcessID(VOID)
获取内核态空闲进程
STATIC INLINE UINT64 OsGetCurrSchedTimeCycle(VOID)
struct TagTaskCB LosTaskCB
STATIC INLINE SchedRunqueue * OsSchedRunqueueByID(UINT16 id)
STATIC INLINE SchedRunqueue * OsSchedRunqueue(VOID)
STATIC INLINE UINT32 OsGetSortLinkNodeNum(const SortLinkAttribute *head)
UINT32 OsShellShowTickResponse(VOID)
UINT32 OsShellShowSchedStatistics(VOID)
STATIC VOID SchedDataGet(const LosTaskCB *taskCB, UINT64 *runTime, UINT64 *timeSlice, UINT64 *pendTime, UINT64 *schedWait)
STATIC SchedTickDebug * g_schedTickDebug
UINT32 OsSchedDebugInit(VOID)
VOID OsSchedDebugRecordData(VOID)
STATIC INLINE BOOL OsTaskIsUnused(const LosTaskCB *taskCB)
任务是否在使用
SortLinkAttribute timeoutQueue
CHAR taskName[OS_TCB_NAME_LEN]