IPC@CHIP® RTOS-PPC – API Documentation

Header image

Main page


RTX_ID RTX_NewTask ( const RtxTaskDefS tkdefp  ) 

This API creates a new task, or thread of execution.

By default the task will start execution immediately. Set the RTX_TA_GATE_WAIT flag in the tkdAttr member if you instead want to manually trigger the task at a later time.

A task requires at least one kernel object to serve as its timer. For periodic tasks, a second kernel object is required to provide a periodic timer, independent of the task timer which every task contains. The system has a total of 500 general purpose kernel objects.

If this API is failing, the RTX_NewTaskErr() variant of this function may be used to obtain an error code to help diagnose the problem.

Parameters:
tkdefp Pointer to RtxTaskDefS data structure containing specifics for constructing the new task.
Returns:
Task ID (handle) on success, zero on failure

Here is a simple example using this API to create a new task. In this example, the task accepts an input parameter that was specified in the tkdlParam member. You may instead choose to make your task accept no parameters, with a void argument list.

Example:
#include <clib.h>

static RTX_ID   TaskID ;
static DWORD    MyStack[500] ;

// Application defined data for object oriented task.
struct TaskObj 
{
    WORD    Data ;
    // ToDo: Add body to structure
} ;    

static struct TaskObj TaskObj_1 ;

static void MyTask (struct TaskObj *myTaskObj)
{
    // ToDo: Add task body
}

static const RtxTaskDefS MyTaskDef = 
{
    { 'A', 'B', 'C', '1' },             // tkdTag[4]
    (RTX_TASK_PROC) MyTask,             // tkdProc
    &MyStack[0],                        // tkdStackBase
    sizeof(MyStack),                    // tkdStackSize [bytes]
    (long) &TaskObj_1,                  // tkdlParam
    26,                                 // tkdPriority
    0,                                  // tkdAttr
    // Remaining members tkdSlice, tkdPeriod, tkdPhase, and tkdPhaseRef
    // play no role in this example since their corresponding tkdAttr 
    // flags are zero.
} ;

void Initialize(void)
{
    TaskID = RTX_NewTask (&MyTaskDef) ;
}           
See also:
RTX_NewTaskErr()
Compatibility:
This API is not available in the SC1x, SC2x and SC1x3 C-Library. When compatibility is required, the legacy RTX_Create_Task() or RTX_Param_Task() API can be used.
Since:
SC2x3 V1.00 - CLIB V1.00





Top of page | Main page

Copyright © 2017 Beck IPC GmbH
Generated on Thu Jan 26 16:21:37 2017 by Doxygen 1.6.1