summaryrefslogblamecommitdiffstats
path: root/doc/user/smp.t
blob: 240613ddeaef5203cae70e919385ccfab7fd128a (plain) (tree)




































































































































































                                                                          
@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