From f8300293ae2b59cd7c79a39d8a11e9acd9e4c3db Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 16 Apr 2014 16:06:05 +0200 Subject: doc: rtems_task_set_scheduler() --- doc/user/smp.t | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'doc') diff --git a/doc/user/smp.t b/doc/user/smp.t index abdd81cd77..f710537eab 100644 --- a/doc/user/smp.t +++ b/doc/user/smp.t @@ -19,6 +19,7 @@ The application level services currently provided are: @item @code{rtems_scheduler_ident} - Get ID of a scheduler @item @code{rtems_scheduler_get_processor_set} - Get processor set of a scheduler @item @code{rtems_task_get_scheduler} - Get scheduler of a task +@item @code{rtems_task_set_scheduler} - Set scheduler of a task @item @code{rtems_task_get_affinity} - Get task processor affinity @item @code{rtems_task_set_affinity} - Set task processor affinity @end itemize @@ -408,6 +409,82 @@ Returns the scheduler identifier of a task in @code{scheduler_id}. None. +@c +@c rtems_task_set_scheduler +@c +@page +@subsection TASK_SET_SCHEDULER - Set scheduler of a task + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +rtems_status_code rtems_task_set_scheduler( + rtems_id id, + rtems_id scheduler_id +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading DIRECTIVE STATUS CODES: + +@code{@value{RPREFIX}SUCCESSFUL} - successful operation@* +@code{@value{RPREFIX}INVALID_ID} - invalid task or scheduler id@* +@code{@value{RPREFIX}INCORRECT_STATE} - the task is in the wrong state to +perform a scheduler change + +@subheading DESCRIPTION: + +Sets the scheduler of a task specified by @code{scheduler_id}. The scheduler +of a task is initialized to the scheduler of the task that created it. + +@subheading NOTES: + +None. + +@subheading EXAMPLE: + +@example +@group +#include +#include + +void task(rtems_task_argument arg); + +void example(void) +@{ + rtems_status_code sc; + rtems_id task_id; + rtems_id scheduler_id; + rtems_name scheduler_name; + + scheduler_name = rtems_build_name('W', 'O', 'R', 'K'); + + sc = rtems_scheduler_ident(scheduler_name, &scheduler_id); + assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_create( + rtems_build_name('T', 'A', 'S', 'K'), + 1, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &task_id + ); + assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_set_scheduler(task_id, scheduler_id); + assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_start(task_id, task, 0); + assert(sc == RTEMS_SUCCESSFUL); +@} +@end group +@end example + @c @c rtems_task_get_affinity @c -- cgit v1.2.3