doc: Setting Affinity to a Single Processor

This commit is contained in:
Sebastian Huber
2014-04-17 07:42:28 +02:00
parent d98eea06dc
commit fab2f1885c

View File

@@ -201,20 +201,32 @@ building RTEMS in SMP configuration.
@subsection Setting Affinity to a Single Processor
In many embedded applications targeting SMP systems, it is common to lock individual tasks to specific cores. In this way, one can designate a core for I/O tasks, another for computation, etc.. The following illustrates the code sequence necessary to assign a task an affinity for processor zero (0).
On some embedded applications targeting SMP systems, it may be beneficial to
lock individual tasks to specific processors. In this way, one can designate a
processor for I/O tasks, another for computation, etc.. The following
illustrates the code sequence necessary to assign a task an affinity for
processor with index @code{processor_index}.
@example
rtems_status_code sc;
cpu_set_t set;
@group
#include <rtems.h>
#include <assert.h>
CPU_EMPTY( &set );
CPU_SET( 0, &set );
void pin_to_processor(rtems_id task_id, int processor_index)
@{
rtems_status_code sc;
cpu_set_t cpuset;
sc = rtems_task_set_affinity(rtems_task_self(), sizeof(set), &set);
assert(sc == RTEMS_SUCCESSFUL);
CPU_ZERO(&cpuset);
CPU_SET(processor_index, &cpuset);
sc = rtems_task_set_affinity(task_id, sizeof(cpuset), &cpuset);
assert(sc == RTEMS_SUCCESSFUL);
@}
@end group
@end example
It is important to note that the @code{cpu_set_t} is not validated until the
It is important to note that the @code{cpuset} is not validated until the
@code{@value{DIRPREFIX}task_set_affinity} call is made. At that point,
it is validated against the current system configuration.