Task Control Functions
[Abstracted Functions]


Typedefs

typedef POSTASK_t NOSTASK_t
typedef POSIDLEFUNC_t NOSIDLEFUNC_t

Functions

NANOEXT NOSTASK_t nosTaskCreate (POSTASKFUNC_t funcptr, void *funcarg, VAR_t priority, UINT_t stacksize, const char *name)
NANOEXT void nosTaskYield (void)
NANOEXT void nosTaskSleep (UINT_t ticks)
NANOEXT void nosTaskExit (void)
NANOEXT NOSTASK_t nosTaskGetCurrent (void)
NANOEXT VAR_t nosTaskUnused (NOSTASK_t taskhandle)
NANOEXT VAR_t nosTaskSetPriority (NOSTASK_t taskhandle, VAR_t priority)
NANOEXT VAR_t nosTaskGetPriority (NOSTASK_t taskhandle)
NANOEXT void nosTaskSchedLock (void)
NANOEXT void nosTaskSchedUnlock (void)
NANOEXT void * nosTaskGetUserspace (void)
NANOEXT NOSIDLEFUNC_t nosInstallIdleTaskHook (NOSIDLEFUNC_t idlefunc)

Typedef Documentation

typedef POSIDLEFUNC_t NOSIDLEFUNC_t
 

Idle task function pointer

typedef POSTASK_t NOSTASK_t
 

Handle to a nano layer task object.


Function Documentation

NANOEXT NOSIDLEFUNC_t nosInstallIdleTaskHook NOSIDLEFUNC_t  idlefunc  ) 
 

Task function. Install or remove an optional idle task hook function. The hook function is called every time the system is idle. It is possible to use this hook to implement your own idle task; in this case the function does not need to return to the system. You may insert a call to nosTaskYield into your idle task loop to get a better task performance.

Parameters:
idlefunc function pointer to the new idle task handler. If this parameter is set to NULL, the idle task function hook is removed again.
Returns:
This function may return a pointer to the last hook function set. If so (pointer is not NULL), the previous hook function should be called from within your idle task hook. This enables chaining of hook functions.
Note:
POSCFG_FEATURE_IDLETASKHOOK must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.

NANOEXT NOSTASK_t nosTaskCreate POSTASKFUNC_t  funcptr,
void *  funcarg,
VAR_t  priority,
UINT_t  stacksize,
const char *  name
 

Generic task function. Creates a new task.

Parameters:
funcptr pointer to the function that shall be executed by the new task.
funcarg optional argument passed to function funcptr.
priority task priority. Must be in the range 0 .. POSCFG_MAX_PRIO_LEVEL - 1. The higher the number, the higher the priority.
stacksize Size of the stack memory. If set to zero, a default stack size is assumed (see define NOSCFG_DEFAULT_STACKSIZE).
name Name of the new task to create. If the last character in the name is an asteriks (*), the operating system automatically assigns the task a unique name (the registry feature must be enabled for this automatism). This parameter can be NULL if the nano layer registry feature is not used and will not be used in future.
Returns:
handle to the task. NULL is returned when the task could not be created.
Note:
NOSCFG_FEATURE_TASKCREATE must be defined to 1 to have this function compiled in.
See also:
nosTaskExit

NANOEXT void nosTaskExit void   ) 
 

Task function. Terminate execution of a task.

Note:
POSCFG_FEATURE_EXIT must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskCreate

NANOEXT NOSTASK_t nosTaskGetCurrent void   ) 
 

Task function. Get the handle to the currently running task.

Returns:
the task handle.
Note:
POSCFG_FEATURE_GETTASK must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskCreate, nosTaskSetPriority

NANOEXT VAR_t nosTaskGetPriority NOSTASK_t  taskhandle  ) 
 

Task function. Get the priority of a task.

Parameters:
taskhandle handle to the task.
Returns:
the priority of the task. A negative value is returned on error.
Note:
POSCFG_FEATURE_GETPRIORITY must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskSetPriority, nosTaskGetCurrent, nosTaskCreate

NANOEXT void* nosTaskGetUserspace void   ) 
 

Task function. Returns a pointer to the user memory in the current task control block.

Note:
POSCFG_TASKCB_USERSPACE must be defined to a nonzero value to have this function compiled in. POSCFG_TASKCB_USERSPACE is also used to set the size of the user memory (in bytes).
Dependent of your configuration, this function can be defined as macro to decrease code size.
Returns:
pointer to user memory space.

NANOEXT void nosTaskSchedLock void   ) 
 

Task function. Locks the scheduler. When this function is called, no task switches will be done any more, until the counterpart function nosTaskSchedUnlock is called. This function is usefull for short critical sections that require exclusive access to variables. Note that interrupts still remain enabled.

Note:
POSCFG_FEATURE_INHIBITSCHED must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskSchedUnlock

NANOEXT void nosTaskSchedUnlock void   ) 
 

Task function. Unlocks the scheduler. This function is called to leave a critical section. If a context switch request is pending, the context switch will happen directly after calling this function.

Note:
POSCFG_FEATURE_INHIBITSCHED must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskSchedLock

NANOEXT VAR_t nosTaskSetPriority NOSTASK_t  taskhandle,
VAR_t  priority
 

Task function. Change the priority of a task. Note that in a non-roundrobin scheduling environment every priority level can only exist once.

Parameters:
taskhandle handle to the task.
priority new priority. Must be in the range 0 .. POSCFG_MAX_PRIO_LEVEL - 1. The higher the number, the higher the priority.
Returns:
zero on success.
Note:
POSCFG_FEATURE_SETPRIORITY must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskGetPriority, nosTaskGetCurrent, nosTaskCreate

NANOEXT void nosTaskSleep UINT_t  ticks  ) 
 

Task function. Delay task execution for a couple of timer ticks.

Parameters:
ticks delay time in timer ticks (see HZ define and MS macro)
Note:
POSCFG_FEATURE_SLEEP must be defined to 1 to have this function compiled in.
It is not guaranteed that the task will proceed execution exactly when the time has elapsed. A higher priorized task or a task having the same priority may steal the processing time. Sleeping a very short time is inaccurate.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskYield, HZ, MS

NANOEXT VAR_t nosTaskUnused NOSTASK_t  taskhandle  ) 
 

Task function. Tests if a task is yet in use by the operating system. This function can be used to test if a task has been fully terminated (and the stack memory is no more in use).

Parameters:
taskhandle handle to the task.
Returns:
1 (=true) when the task is unused. If the task is still in use, zero is returned. A negative value is returned on error.
Note:
POSCFG_FEATURE_TASKUNUSED must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskCreate, nosTaskExit

NANOEXT void nosTaskYield void   ) 
 

Task function. This function can be called to give off processing time so other tasks ready to run will be scheduled (= cooparative multitasking).

Note:
POSCFG_FEATURE_YIELD must be defined to 1 to have this function compiled in.
Dependent of your configuration, this function can be defined as macro to decrease code size.
See also:
nosTaskSleep


Generated on Mon May 1 11:07:42 2006 for pico]OS by  doxygen 1.4.6-NO