Texas Instruments TMS320 User Manual page 149

Dsp/bios v5.40
Hide thumbs Also See for TMS320:
Table of Contents

Advertisement

Example 4-6. Creating a Task Object
#define CONTEXTSIZE
Void doCreate(task)
TSK_Handle
{
Ptr
context = MEM_alloc(0, CONTEXTSIZE, 0);
TSK_setenv(task, context);
}
Void doDelete(task)
TSK_Handle
{
Ptr
context = TSK_getenv(task);
MEM_free(0, context, CONTEXTSIZE);
}
Void doSwitch(from, to)
TSK_Handle
TSK_Handle
{
Ptr
static Int first = TRUE;
if (first) {
first = FALSE;
return;
}
context = TSK_getenv(from);
*context = `hardware registers`; /* save registers */
context = TSK_getenv(to);
`hardware registers` = *context; /* restore registers */
}
Void doExit(Void)
{
TSK_Handle
usrHandle;
/* get task handle, if needed */
usrHandle = TSK_self();
`perform user-defined exit steps`
}
Note:
Non-pointer type function arguments to LOG_printf need explicit type
casting to (Arg) as shown in the following code example:
LOG_printf(&trace, "Task %d Done", (Arg)id);
`size of additional context`
task;
context;
/* set task environment */
task;
context;
/* get register buffer */
from;
to;
context;
/* get register buffer */
/* get register buffer /
Thread Scheduling
Tasks
4-45

Advertisement

Table of Contents
loading

Table of Contents