374 #ifndef ti_sysbios_knl_Task__include 375 #define ti_sysbios_knl_Task__include 393 #define ti_sysbios_knl_Task_long_names 394 #include "Task_defs.h" 404 #define Task_A_badPriority "invalid priority" 409 #define Task_A_badTaskState "cannot delete a task in RUNNING state" 414 #define Task_A_badThreadType "cannot create/delete a task from a Hwi or Swi thread" 419 #define Task_A_badTimeout "cannot sleep forever" 424 #define Task_A_noPendElem "not enough info to delete BLOCKED task" 429 #define Task_A_sleepTaskDisabled "cannot call Task_sleep when the scheduler is disabled" 434 #define Task_A_taskDisabled "cannot create a task when tasking is disabled" 447 #define Task_E_stackOverflow "task 0x%x stack overflow" 461 #define Task_E_spOutOfBounds "task 0x%x stack error, SP = 0x%x" 471 #define Task_E_deleteNotAllowed "delete not allowed task 0x%x" 479 #define Task_E_moduleStateCheckFailed "invalid module state" 486 #define Task_E_objectCheckFailed "invalid task object 0x%x" 490 typedef struct Task_PendElem Task_PendElem;
491 typedef struct Task_RunQEntry Task_RunQEntry;
530 struct Task_PendElem {
532 Task_Handle taskHandle;
586 void (*registerFxn)(
int arg1);
588 void (*readyFxn)(Task_Handle arg1);
589 void (*switchFxn)(Task_Handle arg1, Task_Handle arg2);
590 void (*exitFxn)(Task_Handle arg1);
591 void (*deleteFxn)(Task_Handle arg1);
649 volatile int priority;
653 Task_PendElem *pendElem;
656 IHeap_Handle stackHeap;
669 struct Task_Module_State {
671 volatile bool locked;
672 volatile unsigned int curSet;
673 volatile bool workFlag;
674 unsigned int vitalTasks;
680 Task_Handle idleTask;
685 typedef struct Task_Module_State Task_Module_State;
690 typedef void (*Task_AllBlockedFuncPtr)(void);
693 typedef uint32_t (*Task_ModuleStateCheckValueFuncPtr)(Task_Module_State* arg1);
696 typedef int (*Task_ModuleStateCheckFuncPtr)(Task_Module_State* arg1, uint32_t arg2);
701 typedef uint32_t (*Task_ObjectCheckValueFuncPtr)(Task_Handle arg1);
706 typedef int (*Task_ObjectCheckFuncPtr)(Task_Handle arg1, uint32_t arg2);
745 extern IHeap_Handle Task_defaultStackHeap;
860 extern const bool Task_objectCheckFlag;
903 extern const Task_ObjectCheckFuncPtr Task_objectCheckFxn;
947 extern const Task_ModuleStateCheckValueFuncPtr Task_moduleStateCheckValueFxn;
950 extern uint32_t Task_objectCheckValue(Task_Handle, uint32_t);
1003 extern const Task_ObjectCheckValueFuncPtr Task_objectCheckValueFxn;
1029 extern const bool Task_moduleStateCheckFlag;
1073 extern const Task_ModuleStateCheckFuncPtr Task_moduleStateCheckFxn;
1076 extern uint32_t Task_moduleStateCheckValue;
1120 extern const Task_ModuleStateCheckValueFuncPtr Task_moduleStateCheckValueFxn;
1149 extern const bool Task_deleteTerminatedTasks;
1159 extern void Task_init(
void);
1163 extern void Task_Instance_finalize(
Task_Object *obj,
int ec);
1301 extern void Task_startup(
void);
1308 extern bool Task_enabled(
void);
1319 extern void Task_unlockSched(
void);
1371 extern void Task_enable(
void);
1421 extern void Task_restoreHwi(
unsigned int key);
1567 extern uintptr_t Task_getArg0(Task_Handle task);
1578 extern uintptr_t Task_getArg1(Task_Handle task);
1668 extern void Task_setArg0(Task_Handle task, uintptr_t arg);
1675 extern void Task_setArg1(Task_Handle task, uintptr_t arg);
1691 extern void Task_setEnv(Task_Handle task,
void * env);
1773 extern int Task_setPri(Task_Handle task,
int newpri);
1848 extern void Task_unblock(Task_Handle task);
1861 extern void Task_blockI(Task_Handle task);
1874 extern void Task_unblockI(Task_Handle task,
unsigned int hwiKey);
1876 extern void Task_schedule(
void);
1878 extern void Task_enter(
void);
1880 extern void Task_enterUnpriv(
void);
1882 extern void Task_sleepTimeout(uintptr_t arg);
1886 extern void Task_allBlockedFunction(
void);
1888 extern void Task_deleteTerminatedTasksFunc(
void);
1890 extern void Task_processVitalTaskFlag(
Task_Object *task);
1892 extern int Task_moduleStateCheck(Task_Module_State *moduleState, uint32_t checkValue);
1894 extern uint32_t Task_getModuleStateCheckValue(Task_Module_State *moduleState);
1896 extern int Task_objectCheck(Task_Handle handle, uint32_t checkValue);
1898 extern uint32_t Task_getObjectCheckValue(Task_Handle handle);
1900 extern void Task_enableOtherCores(
void);
1939 extern Task_Module_State Task_Module_state;
1941 #define Task_module ((Task_Module_State *) &(Task_Module_state)) 1943 #define Task_Object_heap() NULL 1945 static inline char * Task_Handle_name(Task_Handle obj)
1950 static inline Task_Handle Task_handle(
Task_Struct *str)
1952 return ((Task_Handle)str);
1955 static inline Task_Struct * Task_struct(Task_Handle h)
1968 #undef ti_sysbios_knl_Task_long_names 1969 #include "Task_defs.h" int Task_setPri(Task_Handle task, int newpri)
Set a task's priority.
Task_Handle Task_Object_next(Task_Handle task)
return handle of the next task on task list
void * Task_getHookContext(Task_Handle task, int id)
Get hook set's context for a task.
unsigned int Task_disable(void)
Disable the task scheduler.
Task_Handle Task_create(Task_FuncPtr fxn, const Task_Params *prms, Error_Block *eb)
Create a Task.
size_t used
Definition: Task.h:574
void * env
Global environment struct.
Definition: Task.h:634
Task_Handle Task_Object_first(void)
return handle of the first task on task list
uintptr_t arg0
Task function argument. Default is 0.
Definition: Task.h:606
struct Task_Struct Task_Struct
Definition: Task.h:524
Task_FuncPtr Task_getFunc(Task_Handle task, uintptr_t *arg0, uintptr_t *arg1)
Get Task function and arguments.
Task_Handle Task_getIdleTask(void)
returns a handle to the idle task object (for core 0)
void Task_destruct(Task_Struct *obj)
Destruct a task.
void Task_delete(Task_Handle *task)
Delete a task.
void Task_exit(void)
Terminate execution of the current task.
struct Task_Struct * Task_Instance
Definition: Task.h:527
void * env
Global environment struct.
Definition: Task.h:568
int priority
Task priority.
Definition: Task.h:614
void Task_Params_init(Task_Params *prms)
Initialize the Task_Params structure with default values.
size_t stackSize
Task stack size.
Definition: Task.h:624
bool vitalTaskFlag
Exit system immediately when the last task with this flag set to true has terminated.
Definition: Task.h:641
Opaque queue element.
Definition: Queue.h:204
void * Task_getEnv(Task_Handle task)
Get task environment pointer.
int Task_getPri(Task_Handle task)
Get task priority.
Task_Handle Task_self(void)
Returns a handle to the currently executing Task object.
Task is on inactive task list.
Definition: Task.h:508
char * Task_getName(Task_Handle task)
Get task name.
char * name
Optional name for the object. NULL by default.
Definition: Task.h:602
void Task_setHookContext(Task_Handle task, int id, void *hookContext)
Set hook instance's context for a task.
uintptr_t arg1
Task function argument. Default is 0.
Definition: Task.h:610
Task_Handle Task_construct(Task_Struct *obj, Task_FuncPtr fxn, const Task_Params *prms, Error_Block *eb)
Construct a task.
void Task_block(Task_Handle task)
Block a task.
const bool Task_initStackFlag
Initialize stack with known value for stack checking at runtime (see Task_checkStackFlag).
const size_t Task_defaultStackSize
Default stack size (in MAUs) used for all tasks.
void Task_sleep(uint32_t nticks)
Delay execution of the current task.
struct Task_Struct Task_Object
Definition: Task.h:525
Error block.
Definition: Error.h:152
void(* Task_FuncPtr)(uintptr_t arg1, uintptr_t arg2)
Task function type definition.
Definition: Task.h:522
void Task_stat(Task_Handle task, Task_Stat *statbuf)
Retrieve the status of a task.
void * stack
Task stack pointer. Default = null.
Definition: Task.h:620
void Task_yield(void)
Yield processor to equal priority task.
Interface to heap functions.
int priority
Task priority.
Definition: Task.h:548
void * sp
Task's current stack pointer.
Definition: Task.h:573
void * stack
Task stack pointer. Default = null.
Definition: Task.h:554
const bool Task_checkStackFlag
Check 'from' and 'to' task stacks before task context switch.
const Task_AllBlockedFuncPtr Task_allBlockedFunc
Function to call while all tasks are blocked.
Task_Mode mode
Definition: Task.h:569
size_t stackSize
Task stack size.
Definition: Task.h:558
void Task_setEnv(Task_Handle task, void *env)
Set task environment.
struct Task_Struct * Task_Handle
Definition: Task.h:526
void Task_restore(unsigned int key)
Restore Task scheduling state.
int length
Definition: Task.h:594
IHeap_Handle stackHeap
Mem heap used for dynamically created task stack.
Definition: Task.h:564
void Task_checkStacks(Task_Handle oldTask, Task_Handle newTask)
Check for stack overflow.
Task_Mode
Task execution modes.
Definition: Task.h:500
IHeap_Handle stackHeap
Mem heap used for dynamically created task stack.
Definition: Task.h:630
Task_Mode Task_getMode(Task_Handle task)
Retrieve the Task_Mode of a task.
const unsigned int Task_numPriorities
Number of Task priorities supported. Default is 16.