29#ifndef _LOS_TASK_BASE_H
30#define _LOS_TASK_BASE_H
38#ifdef LOSCFG_BASE_IPC_EVENT
42#ifdef LOSCFG_KERNEL_LOCKDEP
46#ifdef LOSCFG_DEBUG_SCHED_STATISTICS
55#define OS_TASK_FLAG_DETACHED 0x0001U
58#define OS_TASK_FLAG_JOINABLE 0x0000U
61#define OS_TASK_FLAG_SYSTEM 0x0002U
64#define OS_TASK_STATUS_UNUSED 0x0001U
67#define OS_TASK_STATUS_SUSPEND 0x0002U
70#define OS_TASK_STATUS_READY 0x0004U
73#define OS_TASK_STATUS_PEND 0x0008U
76#define OS_TASK_STATUS_RUNNING 0x0010U
79#define OS_TASK_STATUS_DELAY 0x0020U
82#define OS_TASK_STATUS_TIMEOUT 0x0040U
85#define OS_TASK_STATUS_PEND_TIME 0x0080U
94#define OS_TASK_STATUS_SCHED 0x0100U
95#define OS_TASK_STATUS_ENQUE 0x0200U
96#define OS_TASK_STATUS_DEQUE 0x0400U
97#define OS_TASK_STATUS_WAKEUP 0x1000U
99#define OS_TASK_IS_INOPERABLE (OS_TASK_STATUS_SCHED | \
100 OS_TASK_STATUS_ENQUE | \
101 OS_TASK_STATUS_DEQUE | \
102 OS_TASK_STATUS_WAKEUP)
104#define OS_TASK_STATUS_SCHED 0x0U
105#define OS_TASK_STATUS_ENQUE 0x0U
106#define OS_TASK_STATUS_DEQUE 0x0U
107#define OS_TASK_STATUS_WAKEUP 0x0U
109#define OS_TASK_IS_INOPERABLE 0x0U
113#define OS_TASK_STATUS_ZOMBIE 0x0100U
115#define OS_TASK_IS_EXIT (OS_TASK_STATUS_ZOMBIE | OS_TASK_STATUS_UNUSED)
118#ifdef LOSCFG_TASK_JOINABLE
119#define OS_TASK_IS_JOINABLE(taskCB) ((taskCB->taskFlags & OS_TASK_FLAG_DETACHED) == 0)
120#define OS_TASK_IS_DETACHED(taskCB) ((taskCB->taskFlags & OS_TASK_FLAG_DETACHED) == OS_TASK_FLAG_DETACHED)
121#define OS_TASK_IS_ZOMBIE(taskStatus) (taskStatus & OS_TASK_STATUS_ZOMBIE)
122#define OS_TASK_IS_ALREADY_JOIN(taskCB) (taskCB->joinner != NULL)
123#define OS_TASK_IS_JOINING(taskCB) (taskCB->joined != NULL)
125#define OS_TASK_IS_JOINING(taskCB) FALSE
126#define OS_TASK_IS_JOINABLE(taskCB) FALSE
127#define OS_TASK_IS_DETACHED(taskCB) TRUE
128#define OS_TASK_IS_ZOMBIE(taskStatus) FALSE
133#ifdef LOSCFG_SCHED_MQ
140#ifdef LOSCFG_SCHED_MQ
141 volatile UINT32 taskExtStatus;
150#ifdef LOSCFG_TASK_JOINABLE
155 VOID *threadJoinRetval;
158#ifdef LOSCFG_OBSOLETE_API
166#ifdef LOSCFG_BASE_IPC_EVENT
174#ifdef LOSCFG_KERNEL_SMP
177#ifdef LOSCFG_BASE_CORE_TIMESLICE
180#ifdef LOSCFG_BASE_IPC_RWSEM
183#ifdef LOSCFG_KERNEL_SMP
188#ifdef LOSCFG_KERNEL_SMP_TASK_SYNC
192#ifdef LOSCFG_DEBUG_SCHED_STATISTICS
195#ifdef LOSCFG_KERNEL_LOCKDEP
198#ifdef LOSCFG_KERNEL_PERF
202#ifdef LOSCFG_TRUSTZONE
203 void *secureContextSP;
209#define SCHEDULER_LOCK(state) LOS_SpinLockSave(&g_taskSpin, &(state))
210#define SCHEDULER_UNLOCK(state) LOS_SpinUnlockRestore(&g_taskSpin, (state))
void *(* TSK_ENTRY_FUNC)(void *param)
Define the type of a task entrance function.
Definition los_task.h:614
@ LOCK_TYPE_MAX
Definition los_lockdep.h:58
struct tagTaskCB LosTaskCB
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
char CHAR
Definition los_typedef.h:58
Definition los_sched_debug_pri.h:44
Definition los_sortlink_pri.h:107
Definition los_spinlock.h:78
Definition los_event.h:164
Definition los_task_base.h:131
UINT32 taskId
Definition los_task_base.h:147
VOID * taskSem
Definition los_task_base.h:149
UINTPTR topOfStack
Definition los_task_base.h:146
UINT32 priBitMap
Definition los_task_base.h:172
UINT32 stackSize
Definition los_task_base.h:145
UINT32 taskFlags
Definition los_task_base.h:143
VOID * msg
Definition los_task_base.h:171
UINT16 taskStatus
Definition los_task_base.h:137
VOID * args
Definition los_task_base.h:161
VOID * stackPointer
Definition los_task_base.h:132
TSK_ENTRY_FUNC taskEntry
Definition los_task_base.h:148
CHAR * taskName
Definition los_task_base.h:163
VOID * taskMux
Definition los_task_base.h:157
UINT32 usrStack
Definition los_task_base.h:144
UINT16 priority
Definition los_task_base.h:139
LOS_DL_LIST pendList
Definition los_task_base.h:164
SortLinkList sortList
Definition los_task_base.h:165