- Main Page
- Modules
- Data Structures
- Files

# 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