pico]OS  1.0.4
Typedefs | Functions
Task Control Functions
Abstracted Functions

Typedefs

typedef POSTASK_t NOSTASK_t
typedef POSIDLEFUNC_t NOSIDLEFUNC_t

Functions

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

Detailed Description


Typedef Documentation

Idle task function pointer

Handle to a nano layer task object.


Function Documentation

NANOEXT NOSIDLEFUNC_t POSCALL 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:
idlefuncfunction 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 POSCALL nosTaskCreate ( POSTASKFUNC_t  funcptr,
void *  funcarg,
VAR_t  priority,
UINT_t  stacksize,
const char *  name 
)

Generic task function. Creates a new task.

Parameters:
funcptrpointer to the function that shall be executed by the new task.
funcargoptional argument passed to function funcptr.
prioritytask priority. Must be in the range 0 .. POSCFG_MAX_PRIO_LEVEL - 1. The higher the number, the higher the priority.
stacksizeSize of the stack memory. If set to zero, a default stack size is assumed (see define NOSCFG_DEFAULT_STACKSIZE).
nameName 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 POSCALL 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 POSCALL 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 POSCALL nosTaskGetPriority ( NOSTASK_t  taskhandle)

Task function. Get the priority of a task.

Parameters:
taskhandlehandle 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* POSCALL 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 POSCALL 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 POSCALL 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 POSCALL 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:
taskhandlehandle to the task.
prioritynew 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 POSCALL nosTaskSleep ( UINT_t  ticks)

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

Parameters:
ticksdelay 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 POSCALL 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:
taskhandlehandle 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 POSCALL 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