29#ifndef _LOS_TASK_PRI_H
30#define _LOS_TASK_PRI_H
38#ifdef LOSCFG_KERNEL_SMP
46#ifdef LOSCFG_TASK_STACK_STATIC_ALLOCATION
47#if ((LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE & (LOSCFG_STACK_POINT_ALIGN_SIZE - 1)) != 0)
48#error "idle task stack not aligned"
50#if ((LOSCFG_BASE_CORE_TSK_SWTMR_STACK_SIZE & (LOSCFG_STACK_POINT_ALIGN_SIZE - 1)) != 0)
51#error "swtmr task stack not aligned"
53#if ((LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE & (LOSCFG_STACK_POINT_ALIGN_SIZE - 1)) != 0)
54#error "default task stack not aligned"
60#define SIGNAL_KILL (1U << 0)
61#define SIGNAL_SUSPEND (1U << 1)
62#define SIGNAL_AFFI (1U << 2)
64#define OS_INVALID_VALUE 0xFFFFFFFF
67#define OS_TASK_INVALID_CPUID 0xFFFF
70#define OS_TASK_ERRORID 0xFFFFFFFF
72#define OS_CHECK_TASK_BLOCK (OS_TASK_STATUS_DELAY | \
73 OS_TASK_STATUS_PEND | \
74 OS_TASK_STATUS_SUSPEND)
77#define OS_TSK_PRINUM (LOS_TASK_PRIORITY_LOWEST - LOS_TASK_PRIORITY_HIGHEST + 1)
80#define OS_TSK_GET_INDEX(taskId) (taskId)
83#define OS_TASK_ID_CHECK_INVALID(taskId) (OS_TSK_GET_INDEX(taskId) >= g_taskMaxNum)
86#define OS_TCB_FROM_PENDLIST(ptr) LOS_DL_LIST_ENTRY(ptr, LosTaskCB, pendList)
89#define OS_TCB_FROM_TID(taskId) (((LosTaskCB *)g_osTaskCBArray) + (taskId))
92#ifndef OS_TASK_STACK_POOL
93#define OS_TASK_STACK_POOL m_aucSysMem1
125 ArchCurrTaskSet(task);
134#ifdef LOSCFG_BASE_CORE_TSK_MONITOR
141#define OS_ALL_TASK_MASK 0xFFFFFFFF
150#ifdef LOSCFG_DEBUG_SCHED_STATISTICS
152#ifdef LOSCFG_KERNEL_SMP
156#if defined(LOSCFG_EXC_INTERACTION) || defined(LOSCFG_DEBUG_SCHED_STATISTICS)
178#ifdef LOSCFG_SCHED_MQ
196 task->taskExtStatus = extStatus;
201 task->taskExtStatus &= ~extStatus;
257#ifndef LOSCFG_SCHED_LATENCY
276#ifdef LOSCFG_TASK_JOINABLE
278 taskCB->joined->joinner =
NULL;
279 taskCB->joined =
NULL;
286#ifdef LOSCFG_KERNEL_SMP
289 taskCB->mpSignal = mpSignal;
313#ifdef LOSCFG_KERNEL_SMP
315 if (taskCB->currCpu != ArchCurrCpuid()) {
330#ifdef LOSCFG_KERNEL_SMP
#define NULL
Definition common_def.h:21
#define STATIC
Definition common_def.h:57
#define INLINE
Definition common_def.h:65
#define LOSCFG_KERNEL_CORE_NUM
Definition los_config.h:258
#define OS_INT_ACTIVE
Definition los_hwi.h:56
#define LOS_ERRNO_TSK_SUSPEND_LOCKED
Definition los_task.h:301
STATIC INLINE VOID LOS_MpSchedule(UINT32 target)
Definition los_mp_pri.h:65
STATIC INLINE Percpu * OsPercpuGet(VOID)
Definition los_percpu_pri.h:81
UINT32 OsSchedSuspend(LosTaskCB *taskCB)
STATIC INLINE BOOL OsPreemptableInSched(VOID)
Definition los_sched_pri.h:152
@ INT_SUSPEND_DELETE_RESCH
Definition los_sched_pri.h:63
VOID OsSchedResched(VOID)
#define CPUID_TO_AFFI_MASK(cpuid)
Definition los_task.h:50
#define OS_TASK_STATUS_SCHED
Definition los_task_base.h:104
#define OS_TASK_IS_JOINING(taskCB)
Definition los_task_base.h:125
#define OS_TASK_STATUS_RUNNING
Definition los_task_base.h:76
#define OS_TASK_IS_INOPERABLE
Definition los_task_base.h:109
VOID OsTaskEntry(UINT32 taskId)
STATIC INLINE BOOL OsTaskIsSchedAfterDelete(LosTaskCB *taskCB)
Definition los_task_pri.h:216
VOID(* TASK_DELETE_HOOK)(UINT32 taskId)
Definition los_task_pri.h:108
STATIC INLINE BOOL OsTaskIsSchedCanBeAborted(LosTaskCB *taskCB)
Definition los_task_pri.h:222
UINT8 * g_osIdleTaskStack[LOSCFG_KERNEL_CORE_NUM]
STATIC INLINE VOID OsTaskWaitCanOperate(LosTaskCB *task)
Definition los_task_pri.h:245
STATIC INLINE VOID OsTaskCancelJoin(LosTaskCB *taskCB)
Definition los_task_pri.h:274
STATIC INLINE LosTaskCB * OsCurrTaskGet(VOID)
Definition los_task_pri.h:118
TASK_DELETE_HOOK g_taskDeleteHook
STATIC INLINE VOID OsTaskSignalSet(LosTaskCB *taskCB, UINT32 signal)
Definition los_task_pri.h:292
UINT32 OsIdleTaskCreate(VOID)
STATIC INLINE UINT32 OsSysTaskSuspend(LosTaskCB *taskCB)
Definition los_task_pri.h:160
LosTaskCB * g_osTaskCBArray
VOID OsTaskAdd2TimerList(LosTaskCB *taskCB, UINT32 timeout)
TASK_RECYCLE_HOOK g_taskRecycleHook
VOID OsTimerListDelete(LosTaskCB *taskCB)
UINT32 OsGetIdleTaskId(VOID)
STATIC INLINE BOOL OsTaskSuspendCheckOnRun(LosTaskCB *taskCB, UINT32 *ret)
Definition los_task_pri.h:308
UINT32 OsDbgTskInfoGet(UINT32 taskId)
#define SIGNAL_SUSPEND
Definition los_task_pri.h:61
CHAR * OsCurTaskNameGet(VOID)
STATIC INLINE BOOL OsTaskIsInoperable(LosTaskCB *task)
Definition los_task_pri.h:250
STATIC INLINE BOOL OsTaskIsRunOrSched(LosTaskCB *taskCB)
Definition los_task_pri.h:228
STATIC INLINE VOID OsCurrTaskSet(LosTaskCB *task)
Definition los_task_pri.h:123
STATIC INLINE VOID OsTaskReSched(VOID)
Definition los_task_pri.h:258
VOID ArchTaskSchedule(LosTaskCB *, LosTaskCB *)
STATIC INLINE VOID OsTaskExtStatusSet(LosTaskCB *task, UINT32 extStatus)
Definition los_task_pri.h:233
VOID(* TASK_RECYCLE_HOOK)(UINT32 taskId)
Definition los_task_pri.h:104
VOID ArchStartToRun(LosTaskCB *)
STATIC INLINE VOID OsTaskExtStatusClear(LosTaskCB *task, UINT32 extStatus)
Definition los_task_pri.h:239
VOID OsTaskProcSignal(VOID)
UINT32 OsShellCmdDumpTask(INT32 argc, const CHAR **argv)
unsigned short UINT16
Definition los_typedef.h:51
signed int INT32
Definition los_typedef.h:55
#define VOID
Definition los_typedef.h:88
#define LOS_OK
Definition los_typedef.h:122
#define TRUE
Definition los_typedef.h:98
#define FALSE
Definition los_typedef.h:94
unsigned char UINT8
Definition los_typedef.h:50
unsigned int UINT32
Definition los_typedef.h:52
char CHAR
Definition los_typedef.h:58
size_t BOOL
Definition los_typedef.h:83
Definition los_task_pri.h:112
LosTaskCB * task
Definition los_task_pri.h:113
UINT16 timeout
Definition los_task_pri.h:115
UINT16 time
Definition los_task_pri.h:114
UINT32 schedFlag
Definition los_percpu_pri.h:68
Definition los_task_base.h:131
UINT16 taskStatus
Definition los_task_base.h:137