forked from Imagelibrary/rtems
Classic API Users Guide: Add SMP and affinity services.
This patch adds the initial version of the SMP chapter to the Users Guide.
This commit is contained in:
@@ -24,7 +24,8 @@ COMMON_FILES += \
|
|||||||
$(top_builddir)/user/task.texi $(top_builddir)/user/timer.texi \
|
$(top_builddir)/user/task.texi $(top_builddir)/user/timer.texi \
|
||||||
$(top_builddir)/user/userext.texi $(top_builddir)/user/stackchk.texi \
|
$(top_builddir)/user/userext.texi $(top_builddir)/user/stackchk.texi \
|
||||||
$(top_builddir)/user/cpuuse.texi $(top_srcdir)/common/cpright.texi \
|
$(top_builddir)/user/cpuuse.texi $(top_srcdir)/common/cpright.texi \
|
||||||
$(top_builddir)/user/object.texi $(top_builddir)/user/cbs.texi
|
$(top_builddir)/user/object.texi $(top_builddir)/user/cbs.texi \
|
||||||
|
$(top_builddir)/user/smp.texi
|
||||||
|
|
||||||
FILES = example.texi
|
FILES = example.texi
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
@c
|
@c
|
||||||
@c COPYRIGHT (c) 1989-2013.
|
@c COPYRIGHT (c) 1989-2014.
|
||||||
@c On-Line Applications Research Corporation (OAR).
|
@c On-Line Applications Research Corporation (OAR).
|
||||||
@c All rights reserved.
|
@c All rights reserved.
|
||||||
|
|
||||||
@@ -107,6 +107,7 @@
|
|||||||
* User Extensions Manager::
|
* User Extensions Manager::
|
||||||
* Configuring a System::
|
* Configuring a System::
|
||||||
* Multiprocessing Manager::
|
* Multiprocessing Manager::
|
||||||
|
* Symmetric Multiprocessing Services::
|
||||||
* Stack Bounds Checker::
|
* Stack Bounds Checker::
|
||||||
* CPU Usage Statistics::
|
* CPU Usage Statistics::
|
||||||
* Object Services::
|
* Object Services::
|
||||||
@@ -150,6 +151,7 @@
|
|||||||
@include user/userext.texi
|
@include user/userext.texi
|
||||||
@include user/conf.texi
|
@include user/conf.texi
|
||||||
@include user/mp.texi
|
@include user/mp.texi
|
||||||
|
@include user/smp.texi
|
||||||
@include user/stackchk.texi
|
@include user/stackchk.texi
|
||||||
@include user/cpuuse.texi
|
@include user/cpuuse.texi
|
||||||
@include user/object.texi
|
@include user/object.texi
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
@c
|
@c
|
||||||
@c COPYRIGHT (c) 1989-2011.
|
@c COPYRIGHT (c) 1989-2014.
|
||||||
@c On-Line Applications Research Corporation (OAR).
|
@c On-Line Applications Research Corporation (OAR).
|
||||||
@c All rights reserved.
|
@c All rights reserved.
|
||||||
|
|
||||||
@node Example Application, Glossary, Directive Status Codes STATUS_TEXT - Returns a text for a status code, Top
|
@node Example Application, Glossary, Directive Status Codes STATUS_CODE_DESCRIPTION - Returns a description for a status code, Top
|
||||||
@chapter Example Application
|
@chapter Example Application
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@@ -11,6 +11,3 @@
|
|||||||
Currently there is no example Ada application provided.
|
Currently there is no example Ada application provided.
|
||||||
|
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ GENERATED_FILES = overview.texi concepts.texi datatypes.texi init.texi \
|
|||||||
signal.texi part.texi region.texi dpmem.texi io.texi fatal.texi \
|
signal.texi part.texi region.texi dpmem.texi io.texi fatal.texi \
|
||||||
schedule.texi rtmon.texi barrier.texi bsp.texi userext.texi conf.texi \
|
schedule.texi rtmon.texi barrier.texi bsp.texi userext.texi conf.texi \
|
||||||
mp.texi stackchk.texi cpuuse.texi object.texi chains.texi timespec.texi \
|
mp.texi stackchk.texi cpuuse.texi object.texi chains.texi timespec.texi \
|
||||||
cbs.texi dirstat.texi
|
cbs.texi dirstat.texi smp.texi
|
||||||
|
|
||||||
COMMON_FILES += $(top_srcdir)/common/cpright.texi
|
COMMON_FILES += $(top_srcdir)/common/cpright.texi
|
||||||
|
|
||||||
@@ -160,11 +160,16 @@ conf.texi: conf.t
|
|||||||
|
|
||||||
mp.texi: mp.t
|
mp.texi: mp.t
|
||||||
$(BMENU2) -p "Configuring a System Configuration Data Structures" \
|
$(BMENU2) -p "Configuring a System Configuration Data Structures" \
|
||||||
|
-u "Top" \
|
||||||
|
-n "Symmetric Multiprocessing Services" < $< > $@
|
||||||
|
|
||||||
|
smp.texi: smp.t
|
||||||
|
$(BMENU2) -p "Multiprocessing Manager MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet"\
|
||||||
-u "Top" \
|
-u "Top" \
|
||||||
-n "Stack Bounds Checker" < $< > $@
|
-n "Stack Bounds Checker" < $< > $@
|
||||||
|
|
||||||
stackchk.texi: stackchk.t
|
stackchk.texi: stackchk.t
|
||||||
$(BMENU2) -p "Multiprocessing Manager MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet" \
|
$(BMENU2) -p "Symmetric Multiprocessing Services rtems_task_set_affinity - Set Task Affinity" \
|
||||||
-u "Top" \
|
-u "Top" \
|
||||||
-n "CPU Usage Statistics" < $< > $@
|
-n "CPU Usage Statistics" < $< > $@
|
||||||
|
|
||||||
|
|||||||
@@ -106,6 +106,7 @@
|
|||||||
* User Extensions Manager::
|
* User Extensions Manager::
|
||||||
* Configuring a System::
|
* Configuring a System::
|
||||||
* Multiprocessing Manager::
|
* Multiprocessing Manager::
|
||||||
|
* Symmetric Multiprocessing Services::
|
||||||
* Stack Bounds Checker::
|
* Stack Bounds Checker::
|
||||||
* CPU Usage Statistics::
|
* CPU Usage Statistics::
|
||||||
* Object Services::
|
* Object Services::
|
||||||
@@ -149,6 +150,7 @@
|
|||||||
@include userext.texi
|
@include userext.texi
|
||||||
@include conf.texi
|
@include conf.texi
|
||||||
@include mp.texi
|
@include mp.texi
|
||||||
|
@include smp.texi
|
||||||
@include stackchk.texi
|
@include stackchk.texi
|
||||||
@include cpuuse.texi
|
@include cpuuse.texi
|
||||||
@include object.texi
|
@include object.texi
|
||||||
|
|||||||
165
doc/user/smp.t
Normal file
165
doc/user/smp.t
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
@c
|
||||||
|
@c COPYRIGHT (c) 2014.
|
||||||
|
@c On-Line Applications Research Corporation (OAR).
|
||||||
|
@c All rights reserved.
|
||||||
|
@c
|
||||||
|
|
||||||
|
@chapter Symmetric Multiprocessing Services
|
||||||
|
|
||||||
|
@section Introduction
|
||||||
|
|
||||||
|
This chapter describes the services related to Symmetric Multiprocessing
|
||||||
|
provided by RTEMS.
|
||||||
|
|
||||||
|
The application level services currently provided are:
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item @code{rtems_smp_get_processor_count} - Obtain Number of CPUs
|
||||||
|
@item @code{rtems_task_get_affinity} - Obtain Task Affinity
|
||||||
|
@item @code{rtems_task_set_affinity} - Set Task Affinity
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@section Background
|
||||||
|
|
||||||
|
@section Operations
|
||||||
|
|
||||||
|
@section Directives
|
||||||
|
|
||||||
|
This section details the symmetric multiprocessing services. A subsection
|
||||||
|
is dedicated to each of these services and describes the calling sequence,
|
||||||
|
related constants, usage, and status codes.
|
||||||
|
|
||||||
|
@c
|
||||||
|
@c rtems_smp_get_processor_count
|
||||||
|
@c
|
||||||
|
@page
|
||||||
|
@subsection rtems_smp_get_processor_count - Obtain Number of CPUs
|
||||||
|
|
||||||
|
@subheading CALLING SEQUENCE:
|
||||||
|
|
||||||
|
@ifset is-C
|
||||||
|
@example
|
||||||
|
#include <rtems.h>
|
||||||
|
|
||||||
|
int rtems_smp_get_processor_count(void);
|
||||||
|
@end example
|
||||||
|
@end ifset
|
||||||
|
|
||||||
|
@ifset is-Ada
|
||||||
|
@end ifset
|
||||||
|
|
||||||
|
@subheading STATUS CODES:
|
||||||
|
|
||||||
|
Returns the number of processors being utilized.
|
||||||
|
|
||||||
|
@subheading DESCRIPTION:
|
||||||
|
|
||||||
|
The @code{rtems_smp_get_processor_count} routine is used to obtain the
|
||||||
|
number of processor cores being utilized.
|
||||||
|
|
||||||
|
@subheading NOTES:
|
||||||
|
|
||||||
|
NONE
|
||||||
|
|
||||||
|
@c
|
||||||
|
@c rtems_task_get_affinity
|
||||||
|
@c
|
||||||
|
@page
|
||||||
|
@subsection rtems_task_get_affinity - Obtain Task Affinity
|
||||||
|
|
||||||
|
@subheading CALLING SEQUENCE:
|
||||||
|
|
||||||
|
@ifset is-C
|
||||||
|
@example
|
||||||
|
#include <rtems.h>
|
||||||
|
|
||||||
|
rtems_status_code rtems_task_get_affinity(
|
||||||
|
rtems_id id,
|
||||||
|
size_t cpusetsize,
|
||||||
|
cpu_set_t *cpuset
|
||||||
|
);
|
||||||
|
@end example
|
||||||
|
@end ifset
|
||||||
|
|
||||||
|
@ifset is-Ada
|
||||||
|
@end ifset
|
||||||
|
|
||||||
|
@subheading STATUS CODES:
|
||||||
|
|
||||||
|
@table @b
|
||||||
|
@item RTEMS_UNSATISFIED
|
||||||
|
The cpuset pointer argument is invalid.
|
||||||
|
|
||||||
|
@item RTEMS_UNSATISFIED
|
||||||
|
The @code{cpusetsize} does not match the value of @code{affinitysetsize}
|
||||||
|
field in the thread attribute object.
|
||||||
|
|
||||||
|
@item RTEMS_INVALID_ID
|
||||||
|
The @code{id} is invalid.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@subheading DESCRIPTION:
|
||||||
|
|
||||||
|
The @code{rtems_task_get_affinity} routine is used to obtain the
|
||||||
|
@code{affinityset} field from the thread object @code{id}.
|
||||||
|
The value of this field is returned in @code{cpuset}
|
||||||
|
|
||||||
|
@subheading NOTES:
|
||||||
|
|
||||||
|
NONE
|
||||||
|
|
||||||
|
@c
|
||||||
|
@c rtems_task_set_affinity
|
||||||
|
@c
|
||||||
|
@page
|
||||||
|
@subsection rtems_task_set_affinity - Set Task Affinity
|
||||||
|
|
||||||
|
@subheading CALLING SEQUENCE:
|
||||||
|
|
||||||
|
@ifset is-C
|
||||||
|
@example
|
||||||
|
#include <rtems.h>
|
||||||
|
|
||||||
|
rtems_status_code rtems_task_set_affinity(
|
||||||
|
rtems_id id,
|
||||||
|
size_t cpusetsize,
|
||||||
|
cpu_set_t *cpuset
|
||||||
|
);
|
||||||
|
@end example
|
||||||
|
@end ifset
|
||||||
|
|
||||||
|
@ifset is-Ada
|
||||||
|
@end ifset
|
||||||
|
|
||||||
|
@subheading STATUS CODES:
|
||||||
|
|
||||||
|
@table @b
|
||||||
|
@item RTEMS_UNSATISFIED
|
||||||
|
The cpuset pointer argument is invalid.
|
||||||
|
|
||||||
|
@item RTEMS_UNSATISFIED
|
||||||
|
The @code{cpusetsize} does not match the value of @code{affinitysetsize}
|
||||||
|
field in the thread attribute object.
|
||||||
|
|
||||||
|
@item RTEMS_UNSATISFIED
|
||||||
|
The @code{cpuset} did not select a valid cpu.
|
||||||
|
|
||||||
|
@item RTEMS_UNSATISFIED
|
||||||
|
The @code{cpuset} selected a cpu that was invalid.
|
||||||
|
|
||||||
|
@item RTEMS_INVALID_ID
|
||||||
|
The @code{id} is invalid.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@subheading DESCRIPTION:
|
||||||
|
|
||||||
|
The @code{rtems_task_set_affinity} routine is used to set the
|
||||||
|
@code{affinity.set} field of the thread control object associated
|
||||||
|
with @code{id}. This value controls the cpuset that the task can
|
||||||
|
execute on.
|
||||||
|
|
||||||
|
@subheading NOTES:
|
||||||
|
|
||||||
|
NONE
|
||||||
Reference in New Issue
Block a user