![]() |
Task Priority Range | |
Maximum and minimum task priorities | |
#define | RTDM_TASK_LOWEST_PRIORITY XNCORE_LOW_PRIO |
#define | RTDM_TASK_HIGHEST_PRIORITY XNCORE_HIGH_PRIO |
Task Priority Modification | |
Raise or lower task priorities by one level | |
#define | RTDM_TASK_RAISE_PRIORITY (+1) |
#define | RTDM_TASK_LOWER_PRIORITY (-1) |
Typedefs | |
typedef void(* | rtdm_task_proc_t )(void *arg) |
Real-time task procedure. | |
Functions | |
int | rtdm_task_init (rtdm_task_t *task, const char *name, rtdm_task_proc_t task_proc, void *arg, int priority, nanosecs_rel_t period) |
void | rtdm_task_destroy (rtdm_task_t *task) |
void | rtdm_task_set_priority (rtdm_task_t *task, int priority) |
int | rtdm_task_set_period (rtdm_task_t *task, nanosecs_rel_t period) |
int | rtdm_task_wait_period (void) |
int | rtdm_task_unblock (rtdm_task_t *task) |
rtdm_task_t * | rtdm_task_current (void) |
int | rtdm_task_sleep (nanosecs_rel_t delay) |
int | rtdm_task_sleep_until (nanosecs_abs_t wakeup_time) |
int | rtdm_task_sleep_abs (nanosecs_abs_t wakeup_time, enum rtdm_timer_mode mode) |
void | rtdm_task_join_nrt (rtdm_task_t *task, unsigned int poll_delay) |
void | rtdm_task_busy_sleep (nanosecs_rel_t delay) |
typedef void(* rtdm_task_proc_t)(void *arg) |
void rtdm_task_busy_sleep | ( | nanosecs_rel_t | delay | ) |
Busy-wait a specified amount of time
[in] | delay | Delay in nanoseconds. Note that a zero delay does not have the meaning of RTDM_TIMEOUT_INFINITE here. |
This service can be called from:
Rescheduling: never (except due to external interruptions).
rtdm_task_t* rtdm_task_current | ( | void | ) |
Get current real-time task
void rtdm_task_destroy | ( | rtdm_task_t * | task | ) |
Destroy a real-time task
[in,out] | task | Task handle as returned by rtdm_task_init() |
This service can be called from:
Rescheduling: never.
int rtdm_task_init | ( | rtdm_task_t * | task, | |
const char * | name, | |||
rtdm_task_proc_t | task_proc, | |||
void * | arg, | |||
int | priority, | |||
nanosecs_rel_t | period | |||
) |
Intialise and start a real-time task After initialising a task, the task handle remains valid and can be passed to RTDM services until either rtdm_task_destroy() or rtdm_task_join_nrt() was invoked.
[in,out] | task | Task handle |
[in] | name | Optional task name |
[in] | task_proc | Procedure to be executed by the task |
[in] | arg | Custom argument passed to task_proc() on entry |
[in] | priority | Priority of the task, see also Task Priority Range |
[in] | period | Period in nanoseconds of a cyclic task, 0 for non-cyclic mode |
This service can be called from:
Rescheduling: possible.
void rtdm_task_join_nrt | ( | rtdm_task_t * | task, | |
unsigned int | poll_delay | |||
) |
Wait on a real-time task to terminate
[in,out] | task | Task handle as returned by rtdm_task_init() |
[in] | poll_delay | Delay in milliseconds between periodic tests for the state of the real-time task. This parameter is ignored if the termination is internally realised without polling. |
This service does not trigger the termination of the targeted task. The user has to take of this, otherwise rtdm_task_join_nrt() will never return.
This service can be called from:
Rescheduling: possible.
int rtdm_task_set_period | ( | rtdm_task_t * | task, | |
nanosecs_rel_t | period | |||
) |
Adjust real-time task period
[in,out] | task | Task handle as returned by rtdm_task_init() |
[in] | period | New period in nanoseconds of a cyclic task, 0 for non-cyclic mode Environments: This service can be called from: - Kernel module initialization/cleanup code
|
void rtdm_task_set_priority | ( | rtdm_task_t * | task, | |
int | priority | |||
) |
Adjust real-time task priority
[in,out] | task | Task handle as returned by rtdm_task_init() |
[in] | priority | New priority of the task, see also Task Priority Range Environments: This service can be called from: - Kernel module initialization/cleanup code
|
int rtdm_task_sleep | ( | nanosecs_rel_t | delay | ) |
Sleep a specified amount of time
[in] | delay | Delay in nanoseconds, see RTDM_TIMEOUT_xxx for special values. |
Environments:
This service can be called from:
Rescheduling: always.
int rtdm_task_sleep_abs | ( | nanosecs_abs_t | wakeup_time, | |
enum rtdm_timer_mode | mode | |||
) |
Sleep until a specified absolute time
[in] | wakeup_time | Absolute timeout in nanoseconds |
[in] | mode | Selects the timer mode, see RTDM_TIMERMODE_xxx for details |
Environments:
This service can be called from:
Rescheduling: always, unless the specified time already passed.
int rtdm_task_sleep_until | ( | nanosecs_abs_t | wakeup_time | ) |
Sleep until a specified absolute time
[in] | wakeup_time | Absolute timeout in nanoseconds |
Environments:
This service can be called from:
Rescheduling: always, unless the specified time already passed.
int rtdm_task_unblock | ( | rtdm_task_t * | task | ) |
Activate a blocked real-time task
This service can be called from:
Rescheduling: possible.
int rtdm_task_wait_period | ( | void | ) |
Wait on next real-time task period
Environments:
This service can be called from:
Rescheduling: always, unless a timer overrun occured.