summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-04-17 07:42:28 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-04-22 08:34:45 +0200
commitfab2f1885c303700b6ce210feb717f13eb332a65 (patch)
treeccdb913a86532e73aa70cff71e42141d54f38f92
parentbsp/arm: Cleanup L2 cache handling (diff)
downloadrtems-fab2f1885c303700b6ce210feb717f13eb332a65.tar.bz2
doc: Setting Affinity to a Single Processor
-rw-r--r--doc/user/smp.t28
1 files changed, 20 insertions, 8 deletions
diff --git a/doc/user/smp.t b/doc/user/smp.t
index f710537eab..3d9cc2936b 100644
--- a/doc/user/smp.t
+++ b/doc/user/smp.t
@@ -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.