29#ifndef _LOS_SCHED_PRI_H
30#define _LOS_SCHED_PRI_H
48#define OS_SCHEDULER_SET(cpuid) do { \
49 g_taskScheduled |= (1U << (cpuid)); \
52#define OS_SCHEDULER_CLR(cpuid) do { \
53 g_taskScheduled &= ~(1U << (cpuid)); \
56#define OS_SCHEDULER_ACTIVE ((g_taskScheduled & (1U << ArchCurrCpuid())) != 0)
58#define OS_SCHEDULER_ALL_ACTIVE (g_taskScheduled == LOSCFG_KERNEL_CPU_MASK)
80#ifndef LOSCFG_SCHED_LATENCY
96#ifndef LOSCFG_KERNEL_SMP
142 UINT32 intSave = LOS_IntLock();
148 LOS_IntRestore(intSave);
156#ifdef LOSCFG_KERNEL_SMP
173#ifdef LOSCFG_BASE_CORE_TIMESLICE
186#ifdef LOSCFG_SCHED_MQ
187extern LosTaskCB *OsGetTopTaskByPriQueue(PriQueue *priQueue,
UINT32 cpuId);
190 return OsGetTopTaskByPriQueue(&g_priQueue[ArchCurrCpuid()], ArchCurrCpuid());
212 LOS_SpinUnlockNoSched(&g_priQueue[ArchCurrCpuid()].lock);
213 LOS_IntRestore(intSave);
236 if (cpu == ArchCurrCpuid()) {
256 taskCB->taskExtStatus &= ~OS_TASK_STATUS_ENQUE;
258 LOS_IntRestore(intSave);
268 cpuId = OsSchedPickCpu(runTask);
270 OsSchedLockTwoRaw(ArchCurrCpuid(), cpuId);
272#ifdef LOSCFG_BASE_CORE_TIMESLICE
274 runTask->timeSlice = 0;
278 OsSchedUnlockRemoteRaw(cpuId);
284 runTask->currCpu = cpuId;
286 OsSchedUnlockRemoteRaw(cpuId);
288 runTask->taskExtStatus &= ~OS_TASK_STATUS_ENQUE;
369 taskCB->taskExtStatus &= ~OS_TASK_STATUS_DEQUE;
389 taskCB->taskExtStatus &= ~OS_TASK_STATUS_DEQUE;
431#ifdef LOSCFG_BASE_CORE_TIMESLICE
433 runTask->timeSlice = 0;
#define STATIC
Definition common_def.h:57
#define INLINE
Definition common_def.h:65
#define OS_INT_ACTIVE
Definition los_hwi.h:56
#define LOS_ERRNO_TSK_IS_ZOMBIE
Definition los_task.h:542
#define LOS_ERRNO_TSK_YIELD_NOT_ENOUGH_TASK
Definition los_task.h:248
#define LOS_ERRNO_TSK_NOT_CREATED
Definition los_task.h:187
STATIC INLINE Percpu * OsPercpuGet(VOID)
Definition los_percpu_pri.h:81
STATIC INLINE VOID OsPriQueueEnqueueProtect(LOS_DL_LIST *queueNode, UINT32 priority, PriQueueHeadTail mode)
Definition los_priqueue_pri.h:98
VOID OsPriQueueEnqueue(LOS_DL_LIST *priqueueItem, UINT32 priority, PriQueueHeadTail mode)
@ PRI_QUEUE_TAIL
Definition los_priqueue_pri.h:42
BOOL OsPriQueueIsEmpty(UINT32 priority)
VOID OsPriQueueDequeue(LOS_DL_LIST *priqueueItem)
VOID OsSchedPrioModify(LosTaskCB *taskCB, UINT16 priority)
STATIC INLINE VOID OsSchedUnlock(VOID)
Definition los_sched_pri.h:403
STATIC INLINE VOID OsSchedLockGlobal2Local(VOID)
Definition los_sched_pri.h:408
UINT32 OsSchedSuspend(LosTaskCB *taskCB)
VOID OsSchedWait(LosTaskCB *runTask, LOS_DL_LIST *list, UINT32 timeout)
STATIC INLINE UINT32 OsSchedPrioSet(LosTaskCB *taskCB, UINT16 priority, BOOL *needSched)
Definition los_sched_pri.h:448
STATIC INLINE VOID OsSetSchedFlag(UINT32 schedFlag)
Definition los_sched_pri.h:83
STATIC INLINE BOOL OsSchedReadyTaskRemove(LosTaskCB *taskCB)
Definition los_sched_pri.h:480
STATIC INLINE BOOL OsPreemptableInSched(VOID)
Definition los_sched_pri.h:152
STATIC INLINE BOOL OsPreemptable(VOID)
Definition los_sched_pri.h:135
STATIC INLINE VOID OsSchedLockLocal2Global(VOID)
Definition los_sched_pri.h:409
STATIC INLINE VOID OsSchedUnlockLocalRestore(UINT32 intSave)
Definition los_sched_pri.h:411
STATIC INLINE VOID OsSchedResume(LosTaskCB *taskCB, UINT32 intSave)
Definition los_sched_pri.h:421
VOID OsSchedWake(LosTaskCB *resumedTask)
STATIC INLINE UINT32 OsSchedYield(LosTaskCB *runTask)
Definition los_sched_pri.h:429
STATIC INLINE VOID OsSchedAffiChange(VOID *task)
Definition los_sched_pri.h:416
VOID OsSchedPreempt(VOID)
VOID OsSchedProcSchedFlag(VOID)
STATIC INLINE VOID OsSchedLock(VOID)
Definition los_sched_pri.h:398
LosTaskCB * OsGetTopTask(VOID)
SchedFlag
Definition los_sched_pri.h:60
@ INT_NO_RESCH
Definition los_sched_pri.h:61
@ INT_PEND_RESCH
Definition los_sched_pri.h:62
@ INT_SUSPEND_DELETE_RESCH
Definition los_sched_pri.h:63
STATIC INLINE VOID LOS_Schedule(VOID)
Definition los_sched_pri.h:93
VOID OsSchedResched(VOID)
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID OsSpinUnlockRaw(SPIN_LOCK_S *lock)
Definition los_spinlock_pri.h:60
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID OsSpinLockRaw(SPIN_LOCK_S *lock)
Definition los_spinlock_pri.h:55
#define OS_TASK_STATUS_DEQUE
Definition los_task_base.h:106
#define OS_TASK_IS_JOINABLE(taskCB)
Definition los_task_base.h:126
#define OS_TASK_STATUS_SCHED
Definition los_task_base.h:104
#define SCHEDULER_UNLOCK(state)
Definition los_task_base.h:210
#define OS_TASK_STATUS_ENQUE
Definition los_task_base.h:105
#define OS_TASK_IS_ZOMBIE(taskStatus)
Definition los_task_base.h:128
#define OS_TASK_STATUS_RUNNING
Definition los_task_base.h:76
#define OS_TASK_STATUS_READY
Definition los_task_base.h:70
#define OS_TASK_IS_INOPERABLE
Definition los_task_base.h:109
#define OS_TASK_STATUS_ZOMBIE
Definition los_task_base.h:113
#define OS_TASK_STATUS_UNUSED
Definition los_task_base.h:64
unsigned short UINT16
Definition los_typedef.h:51
#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 int UINT32
Definition los_typedef.h:52
size_t BOOL
Definition los_typedef.h:83
UINT32 schedFlag
Definition los_percpu_pri.h:68
UINT32 taskLockCnt
Definition los_percpu_pri.h:64
Definition los_spinlock.h:78
Definition los_task_base.h:131
UINT16 taskStatus
Definition los_task_base.h:137
UINT16 priority
Definition los_task_base.h:139
LOS_DL_LIST pendList
Definition los_task_base.h:164