c-user: Fix index locations.

Update #3229.
This commit is contained in:
Chris Johns 2017-11-12 14:34:48 +11:00
parent 42d50d760e
commit 6c5640131f
36 changed files with 920 additions and 785 deletions

View File

@ -6,11 +6,11 @@
.. _ada_support .. _ada_support
.. index:: Ada
Ada Support Ada Support
************ ************
.. index:: Ada
Introduction Introduction
============ ============
RTEMS has long had support for the Ada programming language RTEMS has long had support for the Ada programming language
@ -24,7 +24,7 @@ components to this support:
Ada Programming Language Support Ada Programming Language Support
================================ ================================
The Ada programming natively supports multi-threaded programming The Ada programming natively supports multi-threaded programming
with its own tasking and concurrency model. Native Ada multi-threaded with its own tasking and concurrency model. Native Ada multi-threaded
applications should work using GNAT/RTEMS with no changes. applications should work using GNAT/RTEMS with no changes.
@ -90,10 +90,9 @@ to violating assumptions in the GNAT run-time. Specifically a priority
ceiling mutex should never be used from an ISR and it is difficult to ceiling mutex should never be used from an ISR and it is difficult to
predict when the Ada compiler or run-time will use a mutex. predict when the Ada compiler or run-time will use a mutex.
RTEMS has two capabilities which can assist in avoiding this problem. The RTEMS has two capabilities which can assist in avoiding this problem. The
Classic API Timer Manager allows the creation of Timer Service Routines Classic API Timer Manager allows the creation of Timer Service Routines
which execute in the context of a task rather than the clock tick which execute in the context of a task rather than the clock tick
Interrupt Service Routine. Similarly, there is support for Interrupt Tasks Interrupt Service Routine. Similarly, there is support for Interrupt Tasks
which is a mechanism to defer the processing of the event from the which is a mechanism to defer the processing of the event from the
hardware interrupt level to a thread. hardware interrupt level to a thread.

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: barrier
Barrier Manager Barrier Manager
*************** ***************
.. index:: barrier
Introduction Introduction
============ ============
@ -162,11 +162,12 @@ sequence, related constants, usage, and status codes.
.. _rtems_barrier_create: .. _rtems_barrier_create:
BARRIER_CREATE - Create a barrier
---------------------------------
.. index:: create a barrier .. index:: create a barrier
.. index:: rtems_barrier_create .. index:: rtems_barrier_create
BARRIER_CREATE - Create a barrier
---------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -237,12 +238,13 @@ NOTES:
.. _rtems_barrier_ident: .. _rtems_barrier_ident:
BARRIER_IDENT - Get ID of a barrier
-----------------------------------
.. index:: get ID of a barrier .. index:: get ID of a barrier
.. index:: obtain ID of a barrier .. index:: obtain ID of a barrier
.. index:: rtems_barrier_ident .. index:: rtems_barrier_ident
BARRIER_IDENT - Get ID of a barrier
-----------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -278,11 +280,12 @@ NOTES:
.. _rtems_barrier_delete: .. _rtems_barrier_delete:
BARRIER_DELETE - Delete a barrier
---------------------------------
.. index:: delete a barrier .. index:: delete a barrier
.. index:: rtems_barrier_delete .. index:: rtems_barrier_delete
BARRIER_DELETE - Delete a barrier
---------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -320,12 +323,13 @@ NOTES:
.. _rtems_barrier_wait: .. _rtems_barrier_wait:
BARRIER_OBTAIN - Acquire a barrier
----------------------------------
.. index:: obtain a barrier .. index:: obtain a barrier
.. index:: lock a barrier .. index:: lock a barrier
.. index:: rtems_barrier_wait .. index:: rtems_barrier_wait
BARRIER_OBTAIN - Acquire a barrier
----------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -394,12 +398,13 @@ NOTES:
.. _rtems_barrier_release: .. _rtems_barrier_release:
BARRIER_RELEASE - Release a barrier
-----------------------------------
.. index:: wait at a barrier .. index:: wait at a barrier
.. index:: release a barrier .. index:: release a barrier
.. index:: rtems_barrier_release .. index:: rtems_barrier_release
BARRIER_RELEASE - Release a barrier
-----------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -9,10 +9,10 @@ Board Support Packages
.. index:: Board Support Packages .. index:: Board Support Packages
.. index:: BSPs .. index:: BSPs
.. index:: BSP, definition
Introduction Introduction
============ ============
.. index:: BSP, definition
A board support package (BSP) is a collection of user-provided facilities which A board support package (BSP) is a collection of user-provided facilities which
interface RTEMS and an application with a specific hardware platform. These interface RTEMS and an application with a specific hardware platform. These

View File

@ -172,9 +172,10 @@ Add nodes with the following code:
The chain is initialized and the nodes allocated and appended to the The chain is initialized and the nodes allocated and appended to the
chain. This is an example of a pool of buffers. chain. This is an example of a pool of buffers.
.. index:: chain iterate
Iterating a Chain Iterating a Chain
----------------- -----------------
.. index:: chain iterate
Iterating a chain is a common function. The example shows how to iterate the Iterating a chain is a common function. The example shows how to iterate the
buffer pool chain created in the last section to find buffers starting with a buffer pool chain created in the last section to find buffers starting with a
@ -219,11 +220,12 @@ The section details the Chains directives.
.. _rtems_chain_initialize: .. _rtems_chain_initialize:
Initialize Chain With Nodes
---------------------------
.. index:: chain initialize .. index:: chain initialize
.. index:: rtems_chain_initialize .. index:: rtems_chain_initialize
Initialize Chain With Nodes
---------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -256,11 +258,12 @@ NOTES:
.. _rtems_chain_initialize_empty: .. _rtems_chain_initialize_empty:
Initialize Empty
----------------
.. index:: chain initialize empty .. index:: chain initialize empty
.. index:: rtems_chain_initialize_empty .. index:: rtems_chain_initialize_empty
Initialize Empty
----------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -284,11 +287,12 @@ NOTES:
.. _rtems_chain_is_null_node: .. _rtems_chain_is_null_node:
Is Null Node ?
--------------
.. index:: chain is node null .. index:: chain is node null
.. index:: rtems_chain_is_null_node .. index:: rtems_chain_is_null_node
Is Null Node ?
--------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -309,11 +313,12 @@ DESCRIPTION:
.. _rtems_chain_head: .. _rtems_chain_head:
Head
----
.. index:: chain get head .. index:: chain get head
.. index:: rtems_chain_head .. index:: rtems_chain_head
Head
----
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -333,11 +338,12 @@ DESCRIPTION:
.. _rtems_chain_tail: .. _rtems_chain_tail:
Tail
----
.. index:: chain get tail .. index:: chain get tail
.. index:: rtems_chain_tail .. index:: rtems_chain_tail
Tail
----
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -357,11 +363,12 @@ DESCRIPTION:
.. _rtems_chain_are_nodes_equal: .. _rtems_chain_are_nodes_equal:
Are Two Nodes Equal ?
---------------------
.. index:: chare are nodes equal .. index:: chare are nodes equal
.. index:: rtems_chain_are_nodes_equal .. index:: rtems_chain_are_nodes_equal
Are Two Nodes Equal ?
---------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -384,11 +391,12 @@ DESCRIPTION:
.. _rtems_chain_is_empty: .. _rtems_chain_is_empty:
Is the Chain Empty
------------------
.. index:: chain is chain empty .. index:: chain is chain empty
.. index:: rtems_chain_is_empty .. index:: rtems_chain_is_empty
Is the Chain Empty
------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -410,11 +418,12 @@ DESCRIPTION:
.. _rtems_chain_is_first: .. _rtems_chain_is_first:
Is this the First Node on the Chain ?
-------------------------------------
.. index:: chain is node the first .. index:: chain is node the first
.. index:: rtems_chain_is_first .. index:: rtems_chain_is_first
Is this the First Node on the Chain ?
-------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -436,11 +445,12 @@ DESCRIPTION:
.. _rtems_chain_is_last: .. _rtems_chain_is_last:
Is this the Last Node on the Chain ?
------------------------------------
.. index:: chain is node the last .. index:: chain is node the last
.. index:: rtems_chain_is_last .. index:: rtems_chain_is_last
Is this the Last Node on the Chain ?
------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -462,11 +472,12 @@ DESCRIPTION:
.. _rtems_chain_has_only_one_node: .. _rtems_chain_has_only_one_node:
Does this Chain have only One Node ?
------------------------------------
.. index:: chain only one node .. index:: chain only one node
.. index:: rtems_chain_has_only_one_node .. index:: rtems_chain_has_only_one_node
Does this Chain have only One Node ?
------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -488,11 +499,12 @@ DESCRIPTION:
.. _rtems_chain_node_count_unprotected: .. _rtems_chain_node_count_unprotected:
Returns the node count of the chain (unprotected)
-------------------------------------------------
.. index:: chain only one node .. index:: chain only one node
.. index:: rtems_chain_node_count_unprotected .. index:: rtems_chain_node_count_unprotected
Returns the node count of the chain (unprotected)
-------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -512,11 +524,12 @@ DESCRIPTION:
.. _rtems_chain_is_head: .. _rtems_chain_is_head:
Is this Node the Chain Head ?
-----------------------------
.. index:: chain is node the head .. index:: chain is node the head
.. index:: rtems_chain_is_head .. index:: rtems_chain_is_head
Is this Node the Chain Head ?
-----------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -539,11 +552,12 @@ DESCRIPTION:
.. _rtems_chain_is_tail: .. _rtems_chain_is_tail:
Is this Node the Chain Tail ?
-----------------------------
.. index:: chain is node the tail .. index:: chain is node the tail
.. index:: rtems_chain_is_tail .. index:: rtems_chain_is_tail
Is this Node the Chain Tail ?
-----------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -566,11 +580,12 @@ DESCRIPTION:
.. _rtems_chain_extract: .. _rtems_chain_extract:
Extract a Node
--------------
.. index:: chain extract a node .. index:: chain extract a node
.. index:: rtems_chain_extract .. index:: rtems_chain_extract
Extract a Node
--------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -596,11 +611,12 @@ NOTES:
.. _rtems_chain_extract_unprotected: .. _rtems_chain_extract_unprotected:
Extract a Node (unprotected)
----------------------------
.. index:: chain extract a node unprotected .. index:: chain extract a node unprotected
.. index:: rtems_chain_extract_unprotected .. index:: rtems_chain_extract_unprotected
Extract a Node (unprotected)
----------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -623,11 +639,12 @@ NOTES:
.. _rtems_chain_get: .. _rtems_chain_get:
Get the First Node
------------------
.. index:: chain get first node .. index:: chain get first node
.. index:: rtems_chain_get .. index:: rtems_chain_get
Get the First Node
------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -655,11 +672,12 @@ NOTES:
.. _rtems_chain_get_unprotected: .. _rtems_chain_get_unprotected:
Get the First Node (unprotected)
--------------------------------
.. index:: chain get first node .. index:: chain get first node
.. index:: rtems_chain_get_unprotected .. index:: rtems_chain_get_unprotected
Get the First Node (unprotected)
--------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -683,11 +701,12 @@ NOTES:
.. _rtems_chain_insert: .. _rtems_chain_insert:
Insert a Node
-------------
.. index:: chain insert a node .. index:: chain insert a node
.. index:: rtems_chain_insert .. index:: rtems_chain_insert
Insert a Node
-------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -715,11 +734,12 @@ NOTES:
.. _rtems_chain_insert_unprotected: .. _rtems_chain_insert_unprotected:
Insert a Node (unprotected)
---------------------------
.. index:: chain insert a node unprotected .. index:: chain insert a node unprotected
.. index:: rtems_chain_insert_unprotected .. index:: rtems_chain_insert_unprotected
Insert a Node (unprotected)
---------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -744,11 +764,12 @@ NOTES:
.. _rtems_chain_append: .. _rtems_chain_append:
Append a Node
-------------
.. index:: chain append a node .. index:: chain append a node
.. index:: rtems_chain_append .. index:: rtems_chain_append
Append a Node
-------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -775,11 +796,12 @@ NOTES:
.. _rtems_chain_append_unprotected: .. _rtems_chain_append_unprotected:
Append a Node (unprotected)
---------------------------
.. index:: chain append a node unprotected .. index:: chain append a node unprotected
.. index:: rtems_chain_append_unprotected .. index:: rtems_chain_append_unprotected
Append a Node (unprotected)
---------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -803,11 +825,12 @@ NOTES:
.. _rtems_chain_prepend: .. _rtems_chain_prepend:
Prepend a Node
--------------
.. index:: prepend node .. index:: prepend node
.. index:: rtems_chain_prepend .. index:: rtems_chain_prepend
Prepend a Node
--------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -834,11 +857,12 @@ NOTES:
.. _rtems_chain_prepend_unprotected: .. _rtems_chain_prepend_unprotected:
Prepend a Node (unprotected)
----------------------------
.. index:: prepend node unprotected .. index:: prepend node unprotected
.. index:: rtems_chain_prepend_unprotected .. index:: rtems_chain_prepend_unprotected
Prepend a Node (unprotected)
----------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -92,9 +92,10 @@ field in this data structure is the number of seconds since the POSIX epoch of
*January 1, 1970* but will never be prior to the RTEMS epoch of *January 1, *January 1, 1970* but will never be prior to the RTEMS epoch of *January 1,
1988*. 1988*.
.. index:: timeslicing
Clock Tick and Timeslicing Clock Tick and Timeslicing
-------------------------- --------------------------
.. index:: timeslicing
Timeslicing is a task scheduling discipline in which tasks of equal priority Timeslicing is a task scheduling discipline in which tasks of equal priority
are executed for a specific period of time before control of the CPU is passed are executed for a specific period of time before control of the CPU is passed
@ -111,9 +112,10 @@ running task's time-remaining counter when both timeslicing and preemption are
enabled. If the task's timeslice has expired, then that task will be preempted enabled. If the task's timeslice has expired, then that task will be preempted
if there exists a ready task of equal priority. if there exists a ready task of equal priority.
.. index:: delays
Delays Delays
------ ------
.. index:: delays
A sleep timer allows a task to delay for a given interval or up until a given A sleep timer allows a task to delay for a given interval or up until a given
time, and then wake and continue execution. This type of timer is created time, and then wake and continue execution. This type of timer is created
@ -122,9 +124,10 @@ directives and, as a result, does not have an RTEMS ID. Once activated, a
sleep timer cannot be explicitly deleted. Each task may activate one and only sleep timer cannot be explicitly deleted. Each task may activate one and only
one sleep timer at a time. one sleep timer at a time.
.. index:: timeouts
Timeouts Timeouts
-------- --------
.. index:: timeouts
Timeouts are a special type of timer automatically created when the timeout Timeouts are a special type of timer automatically created when the timeout
option is used on the ``rtems_message_queue_receive``, ``rtems_event_receive``, option is used on the ``rtems_message_queue_receive``, ``rtems_event_receive``,
@ -183,11 +186,11 @@ RTEMS provides multiple directives which can be used by an application to obtain
Calendar time operations will return an error code if invoked before the date Calendar time operations will return an error code if invoked before the date
and time have been set. and time have been set.
.. index:: rtems_clock_get
Transition Advice for the Obsolete rtems_clock_get Transition Advice for the Obsolete rtems_clock_get
-------------------------------------------------- --------------------------------------------------
.. index:: rtems_clock_get
The method ``rtems_clock_get`` took an untyped pointer with an The method ``rtems_clock_get`` took an untyped pointer with an
options argument to indicate the time information desired. This has options argument to indicate the time information desired. This has
been replaced with a set of typed directives whose name is of the form been replaced with a set of typed directives whose name is of the form
@ -211,11 +214,12 @@ related constants, usage, and status codes.
.. _rtems_clock_set: .. _rtems_clock_set:
CLOCK_SET - Set date and time
-----------------------------
.. index:: set the time of day .. index:: set the time of day
.. index:: rtems_clock_set .. index:: rtems_clock_set
CLOCK_SET - Set date and time
-----------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -260,11 +264,12 @@ NOTES:
.. _rtems_clock_get_tod: .. _rtems_clock_get_tod:
CLOCK_GET_TOD - Get date and time in TOD format
-----------------------------------------------
.. index:: obtain the time of day .. index:: obtain the time of day
.. index:: rtems_clock_get_tod .. index:: rtems_clock_get_tod
CLOCK_GET_TOD - Get date and time in TOD format
-----------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -303,11 +308,12 @@ NOTES:
.. _rtems_clock_get_tod_timeval: .. _rtems_clock_get_tod_timeval:
CLOCK_GET_TOD_TIMEVAL - Get date and time in timeval format
-----------------------------------------------------------
.. index:: obtain the time of day .. index:: obtain the time of day
.. index:: rtems_clock_get_tod_timeval .. index:: rtems_clock_get_tod_timeval
CLOCK_GET_TOD_TIMEVAL - Get date and time in timeval format
-----------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -346,11 +352,12 @@ NOTES:
.. _rtems_clock_get_seconds_since_epoch: .. _rtems_clock_get_seconds_since_epoch:
CLOCK_GET_SECONDS_SINCE_EPOCH - Get seconds since epoch
-------------------------------------------------------
.. index:: obtain seconds since epoch .. index:: obtain seconds since epoch
.. index:: rtems_clock_get_seconds_since_epoch .. index:: rtems_clock_get_seconds_since_epoch
CLOCK_GET_SECONDS_SINCE_EPOCH - Get seconds since epoch
-------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -389,11 +396,12 @@ NOTES:
.. _rtems_clock_get_ticks_per_second: .. _rtems_clock_get_ticks_per_second:
CLOCK_GET_TICKS_PER_SECOND - Get ticks per second
-------------------------------------------------
.. index:: obtain seconds since epoch .. index:: obtain seconds since epoch
.. index:: rtems_clock_get_ticks_per_second .. index:: rtems_clock_get_ticks_per_second
CLOCK_GET_TICKS_PER_SECOND - Get ticks per second
-------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -418,12 +426,13 @@ NOTES:
.. _rtems_clock_get_ticks_since_boot: .. _rtems_clock_get_ticks_since_boot:
CLOCK_GET_TICKS_SINCE_BOOT - Get current ticks counter value
------------------------------------------------------------
.. index:: obtain ticks since boot .. index:: obtain ticks since boot
.. index:: get current ticks counter value .. index:: get current ticks counter value
.. index:: rtems_clock_get_ticks_since_boot .. index:: rtems_clock_get_ticks_since_boot
CLOCK_GET_TICKS_SINCE_BOOT - Get current ticks counter value
------------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -452,9 +461,10 @@ NOTES:
.. _rtems_clock_tick_later: .. _rtems_clock_tick_later:
.. index:: rtems_clock_tick_later
CLOCK_TICK_LATER - Get tick value in the future CLOCK_TICK_LATER - Get tick value in the future
----------------------------------------------- -----------------------------------------------
.. index:: rtems_clock_tick_later
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -477,9 +487,10 @@ NOTES:
.. _rtems_clock_tick_later_usec: .. _rtems_clock_tick_later_usec:
.. index:: rtems_clock_tick_later_usec
CLOCK_TICK_LATER_USEC - Get tick value in the future in microseconds CLOCK_TICK_LATER_USEC - Get tick value in the future in microseconds
-------------------------------------------------------------------- --------------------------------------------------------------------
.. index:: rtems_clock_tick_later_usec
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -502,9 +513,10 @@ NOTES:
.. _rtems_clock_tick_before: .. _rtems_clock_tick_before:
.. index:: rtems_clock_tick_before
CLOCK_TICK_BEFORE - Is tick value is before a point in time CLOCK_TICK_BEFORE - Is tick value is before a point in time
----------------------------------------------------------- -----------------------------------------------------------
.. index:: rtems_clock_tick_before
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -542,12 +554,13 @@ EXAMPLE:
.. _rtems_clock_get_uptime: .. _rtems_clock_get_uptime:
CLOCK_GET_UPTIME - Get the time since boot
------------------------------------------
.. index:: clock get uptime .. index:: clock get uptime
.. index:: uptime .. index:: uptime
.. index:: rtems_clock_get_uptime .. index:: rtems_clock_get_uptime
CLOCK_GET_UPTIME - Get the time since boot
------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -577,12 +590,13 @@ NOTES:
.. _rtems_clock_get_uptime_timeval: .. _rtems_clock_get_uptime_timeval:
CLOCK_GET_UPTIME_TIMEVAL - Get the time since boot in timeval format
--------------------------------------------------------------------
.. index:: clock get uptime interval .. index:: clock get uptime interval
.. index:: uptime .. index:: uptime
.. index:: rtems_clock_get_uptime_timeval .. index:: rtems_clock_get_uptime_timeval
CLOCK_GET_UPTIME_TIMEVAL - Get the time since boot in timeval format
--------------------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -607,12 +621,13 @@ NOTES:
.. _rtems_clock_get_uptime_seconds: .. _rtems_clock_get_uptime_seconds:
CLOCK_GET_UPTIME_SECONDS - Get the seconds since boot
-----------------------------------------------------
.. index:: clock get uptime seconds .. index:: clock get uptime seconds
.. index:: uptime .. index:: uptime
.. index:: rtems_clock_get_uptime_seconds .. index:: rtems_clock_get_uptime_seconds
CLOCK_GET_UPTIME_SECONDS - Get the seconds since boot
-----------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -633,12 +648,13 @@ NOTES:
.. _rtems_clock_get_uptime_nanoseconds: .. _rtems_clock_get_uptime_nanoseconds:
CLOCK_GET_UPTIME_NANOSECONDS - Get the nanoseconds since boot
-------------------------------------------------------------
.. index:: clock get nanoseconds uptime .. index:: clock get nanoseconds uptime
.. index:: uptime .. index:: uptime
.. index:: rtems_clock_get_uptime_nanoseconds .. index:: rtems_clock_get_uptime_nanoseconds
CLOCK_GET_UPTIME_NANOSECONDS - Get the nanoseconds since boot
-------------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

File diff suppressed because it is too large Load Diff

View File

@ -42,12 +42,11 @@ provided by the CBS API are:
Background Background
========== ==========
.. index:: CBS parameters
.. index:: rtems_cbs_parameters
Constant Bandwidth Server Definitions Constant Bandwidth Server Definitions
------------------------------------- -------------------------------------
.. index:: CBS parameters
.. index:: rtems_cbs_parameters
The Constant Bandwidth Server API enables tasks to communicate with the The Constant Bandwidth Server API enables tasks to communicate with the
scheduler and indicate its scheduling parameters. The scheduler has to be set scheduler and indicate its scheduling parameters. The scheduler has to be set
@ -71,10 +70,10 @@ ordinary tasks that are not attached to any server.
In order to make the server effective to the executing tasks, tasks have to be In order to make the server effective to the executing tasks, tasks have to be
attached to the servers. The ``rtems_cbs_server_id`` is a type denoting an id attached to the servers. The ``rtems_cbs_server_id`` is a type denoting an id
of a server and ``rtems_id`` a type for id of tasks. of a server and ``rtems_id`` a type for id of tasks.
.. index:: CBS periodic tasks
Handling Periodic Tasks Handling Periodic Tasks
----------------------- -----------------------
.. index:: CBS periodic tasks
Each task's execution begins with a default background priority (see the Each task's execution begins with a default background priority (see the
chapter Scheduling Concepts to understand the concept of priorities in chapter Scheduling Concepts to understand the concept of priorities in
@ -84,10 +83,10 @@ of periodic behavior, or you declare deadline and budget using the CBS API in
which case these properties are constant for all subsequent periods, unless you which case these properties are constant for all subsequent periods, unless you
change them using the CBS API again. Task now only has to indicate and end of change them using the CBS API again. Task now only has to indicate and end of
each period using ``rtems_rate_monotonic_period``. each period using ``rtems_rate_monotonic_period``.
.. index:: CBS overrun handler
Registering a Callback Function Registering a Callback Function
------------------------------- -------------------------------
.. index:: CBS overrun handler
In case tasks attached to servers are not aware of their execution time and In case tasks attached to servers are not aware of their execution time and
happen to exceed it, the scheduler does not guarantee execution any more and happen to exceed it, the scheduler does not guarantee execution any more and
@ -113,10 +112,10 @@ The calling convention of the callback function is:
void overrun_handler( void overrun_handler(
rtems_cbs_server_id server_id rtems_cbs_server_id server_id
); );
.. index:: CBS limitations
Limitations Limitations
----------- -----------
.. index:: CBS limitations
When using this scheduler you have to keep in mind several things: When using this scheduler you have to keep in mind several things:
@ -234,11 +233,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_cbs_initialize: .. _rtems_cbs_initialize:
.. index:: initialize the CBS library
.. index:: rtems_cbs_initialize
CBS_INITIALIZE - Initialize the CBS library CBS_INITIALIZE - Initialize the CBS library
------------------------------------------- -------------------------------------------
.. index:: initialize the CBS library
.. index:: rtems_cbs_initialize
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -272,11 +271,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_cleanup: .. _rtems_cbs_cleanup:
.. index:: cleanup the CBS library
.. index:: rtems_cbs_cleanup
CBS_CLEANUP - Cleanup the CBS library CBS_CLEANUP - Cleanup the CBS library
------------------------------------- -------------------------------------
.. index:: cleanup the CBS library
.. index:: rtems_cbs_cleanup
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -302,11 +301,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_create_server: .. _rtems_cbs_create_server:
.. index:: create a new bandwidth server
.. index:: rtems_cbs_create_server
CBS_CREATE_SERVER - Create a new bandwidth server CBS_CREATE_SERVER - Create a new bandwidth server
------------------------------------------------- -------------------------------------------------
.. index:: create a new bandwidth server
.. index:: rtems_cbs_create_server
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -350,11 +349,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_attach_thread: .. _rtems_cbs_attach_thread:
.. index:: attach a thread to server
.. index:: rtems_cbs_attach_thread
CBS_ATTACH_THREAD - Attach a thread to server CBS_ATTACH_THREAD - Attach a thread to server
--------------------------------------------- ---------------------------------------------
.. index:: attach a thread to server
.. index:: rtems_cbs_attach_thread
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -392,11 +391,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_detach_thread: .. _rtems_cbs_detach_thread:
.. index:: detach a thread from server
.. index:: rtems_cbs_detach_thread
CBS_DETACH_THREAD - Detach a thread from server CBS_DETACH_THREAD - Detach a thread from server
----------------------------------------------- -----------------------------------------------
.. index:: detach a thread from server
.. index:: rtems_cbs_detach_thread
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -429,11 +428,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_destroy_server: .. _rtems_cbs_destroy_server:
.. index:: destroy a bandwidth server
.. index:: rtems_cbs_destroy_server
CBS_DESTROY_SERVER - Destroy a bandwidth server CBS_DESTROY_SERVER - Destroy a bandwidth server
----------------------------------------------- -----------------------------------------------
.. index:: destroy a bandwidth server
.. index:: rtems_cbs_destroy_server
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -466,11 +465,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_get_server_id: .. _rtems_cbs_get_server_id:
.. index:: get an ID of a server
.. index:: rtems_cbs_get_server_id
CBS_GET_SERVER_ID - Get an ID of a server CBS_GET_SERVER_ID - Get an ID of a server
----------------------------------------- -----------------------------------------
.. index:: get an ID of a server
.. index:: rtems_cbs_get_server_id
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -497,11 +496,11 @@ DESCRIPTION:
\clearpage \clearpage
.. _rtems_cbs_get_parameters: .. _rtems_cbs_get_parameters:
.. index:: get scheduling parameters of a server
.. index:: rtems_cbs_get_parameters
CBS_GET_PARAMETERS - Get scheduling parameters of a server CBS_GET_PARAMETERS - Get scheduling parameters of a server
---------------------------------------------------------- ----------------------------------------------------------
.. index:: get scheduling parameters of a server
.. index:: rtems_cbs_get_parameters
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -534,11 +533,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_set_parameters: .. _rtems_cbs_set_parameters:
.. index:: set scheduling parameters
.. index:: rtems_cbs_set_parameters
CBS_SET_PARAMETERS - Set scheduling parameters CBS_SET_PARAMETERS - Set scheduling parameters
---------------------------------------------- ----------------------------------------------
.. index:: set scheduling parameters
.. index:: rtems_cbs_set_parameters
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -573,11 +572,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_get_execution_time: .. _rtems_cbs_get_execution_time:
.. index:: get elapsed execution time
.. index:: rtems_cbs_get_execution_time
CBS_GET_EXECUTION_TIME - Get elapsed execution time CBS_GET_EXECUTION_TIME - Get elapsed execution time
--------------------------------------------------- ---------------------------------------------------
.. index:: get elapsed execution time
.. index:: rtems_cbs_get_execution_time
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -611,11 +610,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_get_remaining_budget: .. _rtems_cbs_get_remaining_budget:
.. index:: get remaining execution time
.. index:: rtems_cbs_get_remaining_budget
CBS_GET_REMAINING_BUDGET - Get remaining execution time CBS_GET_REMAINING_BUDGET - Get remaining execution time
------------------------------------------------------- -------------------------------------------------------
.. index:: get remaining execution time
.. index:: rtems_cbs_get_remaining_budget
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -649,11 +648,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_cbs_get_approved_budget: .. _rtems_cbs_get_approved_budget:
.. index:: get scheduler approved execution time
.. index:: rtems_cbs_get_approved_budget
CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time
--------------------------------------------------------------- ---------------------------------------------------------------
.. index:: get scheduler approved execution time
.. index:: rtems_cbs_get_approved_budget
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,6 +4,8 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: CPU Usage
CPU Usage Statistics CPU Usage Statistics
******************** ********************
@ -109,6 +111,7 @@ calling sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_cpu_usage_report: .. _rtems_cpu_usage_report:
.. index:: rtems_cpu_usage_report
cpu_usage_report - Report CPU Usage Statistics cpu_usage_report - Report CPU Usage Statistics
---------------------------------------------- ----------------------------------------------
@ -133,6 +136,7 @@ NOTES:
\clearpage \clearpage
.. _rtems_cpu_usage_reset: .. _rtems_cpu_usage_reset:
.. index:: rtems_cpu_usage_reset
cpu_usage_reset - Reset CPU Usage Statistics cpu_usage_reset - Reset CPU Usage Statistics
-------------------------------------------- --------------------------------------------

View File

@ -3,6 +3,8 @@
.. COMMENT: Copyright 2015 embedded brains GmbH .. COMMENT: Copyright 2015 embedded brains GmbH
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: Status Codes
Directive Status Codes Directive Status Codes
********************** **********************
@ -18,6 +20,8 @@ Directives
The directives are: The directives are:
.. index:: rtems_status_code
.. list-table:: .. list-table::
:class: rtems-table :class: rtems-table
@ -81,10 +85,10 @@ The directives are:
\clearpage \clearpage
.. _rtems_status_text: .. _rtems_status_text:
.. index:: rtems_status_text
STATUS_TEXT - Returns the enumeration name for a status code STATUS_TEXT - Returns the enumeration name for a status code
------------------------------------------------------------ ------------------------------------------------------------
.. index:: rtems_status_text
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,12 +4,12 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
Dual-Ported Memory Manager
**************************
.. index:: ports .. index:: ports
.. index:: dual ported memory .. index:: dual ported memory
Dual-Ported Memory Manager
**************************
Introduction Introduction
============ ============
@ -27,12 +27,13 @@ areas (DPMA). The directives provided by the dual-ported memory manager are:
- rtems_port_internal_to_external_ - Convert internal to external address - rtems_port_internal_to_external_ - Convert internal to external address
Background
==========
.. index:: dual ported memory, definition .. index:: dual ported memory, definition
.. index:: external addresses, definition .. index:: external addresses, definition
.. index:: internal addresses, definition .. index:: internal addresses, definition
Background
==========
A dual-ported memory area (DPMA) is an contiguous block of RAM owned by a A dual-ported memory area (DPMA) is an contiguous block of RAM owned by a
particular processor but which can be accessed by other processors in the particular processor but which can be accessed by other processors in the
system. The owner accesses the memory using internal addresses, while other system. The owner accesses the memory using internal addresses, while other
@ -99,11 +100,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_port_create: .. _rtems_port_create:
.. index:: create a port
.. index:: rtems_port_create
PORT_CREATE - Create a port PORT_CREATE - Create a port
--------------------------- ---------------------------
.. index:: create a port
.. index:: rtems_port_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -152,13 +153,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_port_ident: .. _rtems_port_ident:
PORT_IDENT - Get ID of a port
-----------------------------
.. index:: get ID of a port .. index:: get ID of a port
.. index:: obtain ID of a port .. index:: obtain ID of a port
.. index:: rtems_port_ident .. index:: rtems_port_ident
PORT_IDENT - Get ID of a port
-----------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -193,11 +194,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_port_delete: .. _rtems_port_delete:
.. index:: delete a port
.. index:: rtems_port_delete
PORT_DELETE - Delete a port PORT_DELETE - Delete a port
--------------------------- ---------------------------
.. index:: delete a port
.. index:: rtems_port_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -230,11 +231,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_port_external_to_internal: .. _rtems_port_external_to_internal:
.. index:: convert external to internal address
.. index:: rtems_port_external_to_internal
PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address
---------------------------------------------------------------- ----------------------------------------------------------------
.. index:: convert external to internal address
.. index:: rtems_port_external_to_internal
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -270,11 +271,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_port_internal_to_external: .. _rtems_port_internal_to_external:
.. index:: convert internal to external address
.. index:: rtems_port_internal_to_external
PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address
---------------------------------------------------------------- ----------------------------------------------------------------
.. index:: convert internal to external address
.. index:: rtems_port_internal_to_external
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: events
Event Manager Event Manager
************* *************
.. index:: events
Introduction Introduction
============ ============
@ -21,12 +21,13 @@ and synchronization. The directives provided by the event manager are:
Background Background
========== ==========
Event Sets
----------
.. index:: event flag, definition .. index:: event flag, definition
.. index:: event set, definition .. index:: event set, definition
.. index:: rtems_event_set .. index:: rtems_event_set
Event Sets
----------
An event flag is used by a task (or ISR) to inform another task of the An event flag is used by a task (or ISR) to inform another task of the
occurrence of a significant situation. Thirty-two event flags are associated occurrence of a significant situation. Thirty-two event flags are associated
with each task. A collection of one or more event flags is referred to as an with each task. A collection of one or more event flags is referred to as an
@ -59,11 +60,12 @@ condition is satisfied when at least a single requested event is posted. The
``RTEMS_EVENT_ALL`` algorithm states that an event condition is satisfied when ``RTEMS_EVENT_ALL`` algorithm states that an event condition is satisfied when
every requested event is posted. every requested event is posted.
Building an Event Set or Condition
----------------------------------
.. index:: event condition, building .. index:: event condition, building
.. index:: event set, building .. index:: event set, building
Building an Event Set or Condition
----------------------------------
An event set or condition is built by a bitwise OR of the desired events. The An event set or condition is built by a bitwise OR of the desired events. The
set of valid events is ``RTEMS_EVENT_0`` through ``RTEMS_EVENT_31``. If an set of valid events is ``RTEMS_EVENT_0`` through ``RTEMS_EVENT_31``. If an
event is not explicitly specified in the set or condition, then it is not event is not explicitly specified in the set or condition, then it is not
@ -181,11 +183,11 @@ related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_event_send: .. _rtems_event_send:
.. index:: send event set to a task
.. index:: rtems_event_send
EVENT_SEND - Send event set to a task EVENT_SEND - Send event set to a task
------------------------------------- -------------------------------------
.. index:: send event set to a task
.. index:: rtems_event_send
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -232,11 +234,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_event_receive: .. _rtems_event_receive:
.. index:: receive event condition
.. index:: rtems_event_receive
EVENT_RECEIVE - Receive event condition EVENT_RECEIVE - Receive event condition
--------------------------------------- ---------------------------------------
.. index:: receive event condition
.. index:: rtems_event_receive
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -5,12 +5,11 @@
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. _fatal_error_manager: .. _fatal_error_manager:
.. index:: fatal errors
Fatal Error Manager Fatal Error Manager
******************* *******************
.. index:: fatal errors
Introduction Introduction
============ ============
@ -34,13 +33,13 @@ provided by the fatal error manager are:
Background Background
========== ==========
Overview
--------
.. index:: fatal error detection .. index:: fatal error detection
.. index:: fatal error processing .. index:: fatal error processing
.. index:: fatal error user extension .. index:: fatal error user extension
Overview
--------
The fatal error manager is called upon detection of an irrecoverable error The fatal error manager is called upon detection of an irrecoverable error
condition by either RTEMS or the application software. Fatal errors are also condition by either RTEMS or the application software. Fatal errors are also
used in case it is difficult or impossible to return an error condition by used in case it is difficult or impossible to return an error condition by
@ -388,10 +387,10 @@ Operations
========== ==========
.. _Terminate: .. _Terminate:
.. index:: _Terminate
Announcing a Fatal Error Announcing a Fatal Error
------------------------ ------------------------
.. index:: _Terminate
The :c:func:`_Terminate()` internal error handler is invoked when the The :c:func:`_Terminate()` internal error handler is invoked when the
application or the executive itself determines that a fatal error has occurred application or the executive itself determines that a fatal error has occurred
@ -443,13 +442,13 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_fatal: .. _rtems_fatal:
FATAL - Invoke the fatal error
------------------------------
.. index:: announce fatal error .. index:: announce fatal error
.. index:: fatal error, announce .. index:: fatal error, announce
.. index:: rtems_fatal .. index:: rtems_fatal
FATAL - Invoke the fatal error
------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -473,12 +472,12 @@ NOTE:
\clearpage \clearpage
.. _rtems_shutdown_executive: .. _rtems_shutdown_executive:
.. index:: shutdown RTEMS
.. index:: rtems_shutdown_executive
SHUTDOWN_EXECUTIVE - Shutdown RTEMS SHUTDOWN_EXECUTIVE - Shutdown RTEMS
----------------------------------- -----------------------------------
.. index:: shutdown RTEMS
.. index:: rtems_shutdown_executive
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -505,11 +504,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_exception_frame_print: .. _rtems_exception_frame_print:
.. index:: exception frame
.. index:: rtems_exception_frame_print
EXCEPTION_FRAME_PRINT - Prints the exception frame EXCEPTION_FRAME_PRINT - Prints the exception frame
-------------------------------------------------- --------------------------------------------------
.. index:: exception frame
.. index:: rtems_exception_frame_print
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -529,11 +528,11 @@ DESCRIPTION:
\clearpage \clearpage
.. _rtems_fatal_source_text: .. _rtems_fatal_source_text:
.. index:: fatal error
.. index:: rtems_fatal_source_text
FATAL_SOURCE_TEXT - Returns a text for a fatal source FATAL_SOURCE_TEXT - Returns a text for a fatal source
----------------------------------------------------- -----------------------------------------------------
.. index:: fatal error
.. index:: rtems_fatal_source_text
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -554,11 +553,11 @@ DESCRIPTION:
\clearpage \clearpage
.. _rtems_internal_error_text: .. _rtems_internal_error_text:
.. index:: fatal error
.. index:: rtems_internal_error_text
INTERNAL_ERROR_TEXT - Returns a text for an internal error code INTERNAL_ERROR_TEXT - Returns a text for an internal error code
--------------------------------------------------------------- ---------------------------------------------------------------
.. index:: fatal error
.. index:: rtems_internal_error_text
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -579,13 +578,13 @@ DESCRIPTION:
\clearpage \clearpage
.. _rtems_fatal_error_occurred: .. _rtems_fatal_error_occurred:
FATAL_ERROR_OCCURRED - Invoke the fatal error handler (deprecated)
------------------------------------------------------------------
.. index:: announce fatal error .. index:: announce fatal error
.. index:: fatal error, announce .. index:: fatal error, announce
.. index:: rtems_fatal_error_occurred .. index:: rtems_fatal_error_occurred
FATAL_ERROR_OCCURRED - Invoke the fatal error handler (deprecated)
------------------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -22,9 +22,10 @@ The Initialization Manager provides only one directive:
Background Background
========== ==========
.. index:: initialization tasks
Initialization Tasks Initialization Tasks
-------------------- --------------------
.. index:: initialization tasks
Initialization task(s) are the mechanism by which RTEMS transfers initial Initialization task(s) are the mechanism by which RTEMS transfers initial
control to the user's application. Initialization tasks differ from other control to the user's application. Initialization tasks differ from other
@ -305,13 +306,13 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_initialize_executive: .. _rtems_initialize_executive:
.. index:: initialize RTEMS
.. index:: start multitasking
.. index:: rtems_initialize_executive
INITIALIZE_EXECUTIVE - Initialize RTEMS INITIALIZE_EXECUTIVE - Initialize RTEMS
--------------------------------------- ---------------------------------------
.. index:: initialize RTEMS
.. index:: start multitasking
.. index:: rtems_initialize_executive
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,6 +4,8 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: interrupts
Interrupt Manager Interrupt Manager
***************** *****************
@ -44,9 +46,10 @@ from an ISR. The interrupt manager includes the following directive:
Background Background
========== ==========
.. index:: interrupt processing
Processing an Interrupt Processing an Interrupt
----------------------- -----------------------
.. index:: interrupt processing
The interrupt manager allows the application to connect a function to a The interrupt manager allows the application to connect a function to a
hardware interrupt vector. When an interrupt occurs, the processor will hardware interrupt vector. When an interrupt occurs, the processor will
@ -111,9 +114,10 @@ another ISR. RTEMS supports efficient interrupt nesting by allowing the nested
ISRs to terminate without performing any dispatch processing. Only when the ISRs to terminate without performing any dispatch processing. Only when the
outermost ISR terminates will the postponed dispatching occur. outermost ISR terminates will the postponed dispatching occur.
.. index:: interrupt levels
RTEMS Interrupt Levels RTEMS Interrupt Levels
---------------------- ----------------------
.. index:: interrupt levels
Many processors support multiple interrupt levels or priorities. The exact Many processors support multiple interrupt levels or priorities. The exact
number of interrupt levels is processor dependent. RTEMS internally supports number of interrupt levels is processor dependent. RTEMS internally supports
@ -122,9 +126,10 @@ specific information on the mapping between RTEMS and the target processor's
interrupt levels, refer to the Interrupt Processing chapter of the Applications interrupt levels, refer to the Interrupt Processing chapter of the Applications
Supplement document for a specific target processor. Supplement document for a specific target processor.
.. index:: disabling interrupts
Disabling of Interrupts by RTEMS Disabling of Interrupts by RTEMS
-------------------------------- --------------------------------
.. index:: disabling interrupts
During the execution of directive calls, critical sections of code may be During the execution of directive calls, critical sections of code may be
executed. When these sections are encountered, RTEMS disables all maskable executed. When these sections are encountered, RTEMS disables all maskable
@ -264,13 +269,13 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_interrupt_catch: .. _rtems_interrupt_catch:
INTERRUPT_CATCH - Establish an ISR
----------------------------------
.. index:: establish an ISR .. index:: establish an ISR
.. index:: install an ISR .. index:: install an ISR
.. index:: rtems_interrupt_catch .. index:: rtems_interrupt_catch
INTERRUPT_CATCH - Establish an ISR
----------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -308,11 +313,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_disable: .. _rtems_interrupt_disable:
.. index:: disable interrupts
.. index:: rtems_interrupt_disable
INTERRUPT_DISABLE - Disable Interrupts INTERRUPT_DISABLE - Disable Interrupts
-------------------------------------- --------------------------------------
.. index:: disable interrupts
.. index:: rtems_interrupt_disable
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -346,11 +351,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_enable: .. _rtems_interrupt_enable:
.. index:: enable interrupts
.. index:: rtems_interrupt_enable
INTERRUPT_ENABLE - Enable Interrupts INTERRUPT_ENABLE - Enable Interrupts
------------------------------------ ------------------------------------
.. index:: enable interrupts
.. index:: rtems_interrupt_enable
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -381,11 +386,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_flash: .. _rtems_interrupt_flash:
.. index:: flash interrupts
.. index:: rtems_interrupt_flash
INTERRUPT_FLASH - Flash Interrupts INTERRUPT_FLASH - Flash Interrupts
---------------------------------- ----------------------------------
.. index:: flash interrupts
.. index:: rtems_interrupt_flash
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -416,11 +421,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_local_disable: .. _rtems_interrupt_local_disable:
.. index:: disable interrupts
.. index:: rtems_interrupt_local_disable
INTERRUPT_LOCAL_DISABLE - Disable Interrupts on Current Processor INTERRUPT_LOCAL_DISABLE - Disable Interrupts on Current Processor
----------------------------------------------------------------- -----------------------------------------------------------------
.. index:: disable interrupts
.. index:: rtems_interrupt_local_disable
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -453,11 +458,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_local_enable: .. _rtems_interrupt_local_enable:
.. index:: enable interrupts
.. index:: rtems_interrupt_local_enable
INTERRUPT_LOCAL_ENABLE - Enable Interrupts on Current Processor INTERRUPT_LOCAL_ENABLE - Enable Interrupts on Current Processor
--------------------------------------------------------------- ---------------------------------------------------------------
.. index:: enable interrupts
.. index:: rtems_interrupt_local_enable
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -484,10 +489,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_lock_initialize: .. _rtems_interrupt_lock_initialize:
.. index:: rtems_interrupt_lock_initialize
INTERRUPT_LOCK_INITIALIZE - Initialize an ISR Lock INTERRUPT_LOCK_INITIALIZE - Initialize an ISR Lock
-------------------------------------------------- --------------------------------------------------
.. index:: rtems_interrupt_lock_initialize
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -512,10 +517,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_lock_acquire: .. _rtems_interrupt_lock_acquire:
.. index:: rtems_interrupt_lock_acquire
INTERRUPT_LOCK_ACQUIRE - Acquire an ISR Lock INTERRUPT_LOCK_ACQUIRE - Acquire an ISR Lock
-------------------------------------------- --------------------------------------------
.. index:: rtems_interrupt_lock_acquire
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -547,10 +552,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_lock_release: .. _rtems_interrupt_lock_release:
.. index:: rtems_interrupt_lock_release
INTERRUPT_LOCK_RELEASE - Release an ISR Lock INTERRUPT_LOCK_RELEASE - Release an ISR Lock
-------------------------------------------- --------------------------------------------
.. index:: rtems_interrupt_lock_release
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -579,10 +584,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_lock_acquire_isr: .. _rtems_interrupt_lock_acquire_isr:
.. index:: rtems_interrupt_lock_acquire_isr
INTERRUPT_LOCK_ACQUIRE_ISR - Acquire an ISR Lock from ISR INTERRUPT_LOCK_ACQUIRE_ISR - Acquire an ISR Lock from ISR
--------------------------------------------------------- ---------------------------------------------------------
.. index:: rtems_interrupt_lock_acquire_isr
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -617,10 +622,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_lock_release_isr: .. _rtems_interrupt_lock_release_isr:
.. index:: rtems_interrupt_lock_release_isr
INTERRUPT_LOCK_RELEASE_ISR - Release an ISR Lock from ISR INTERRUPT_LOCK_RELEASE_ISR - Release an ISR Lock from ISR
--------------------------------------------------------- ---------------------------------------------------------
.. index:: rtems_interrupt_lock_release_isr
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -649,11 +654,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_interrupt_is_in_progress: .. _rtems_interrupt_is_in_progress:
.. index:: is interrupt in progress
.. index:: rtems_interrupt_is_in_progress
INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress
------------------------------------------------ ------------------------------------------------
.. index:: is interrupt in progress
.. index:: rtems_interrupt_is_in_progress
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,12 +4,12 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
I/O Manager
***********
.. index:: device drivers .. index:: device drivers
.. index:: IO Manager .. index:: IO Manager
I/O Manager
***********
Introduction Introduction
============ ============
@ -40,9 +40,10 @@ drivers. The directives provided by the I/O manager are:
Background Background
========== ==========
.. index:: Device Driver Table
Device Driver Table Device Driver Table
------------------- -------------------
.. index:: Device Driver Table
Each application utilizing the RTEMS I/O manager must specify the address of a Each application utilizing the RTEMS I/O manager must specify the address of a
Device Driver Table in its Configuration Table. This table contains each device Device Driver Table in its Configuration Table. This table contains each device
@ -73,11 +74,12 @@ table.
The :file:`confdefs.h` entry ``CONFIGURE_MAXIMUM_DRIVERS`` configures the The :file:`confdefs.h` entry ``CONFIGURE_MAXIMUM_DRIVERS`` configures the
number of driver slots available to the application. number of driver slots available to the application.
Major and Minor Device Numbers
------------------------------
.. index:: major device number .. index:: major device number
.. index:: minor device number .. index:: minor device number
Major and Minor Device Numbers
------------------------------
Each call to the I/O manager must provide a device's major and minor numbers as Each call to the I/O manager must provide a device's major and minor numbers as
arguments. The major number is the index of the requested driver's entry arguments. The major number is the index of the requested driver's entry
points in the Device Driver Table, and is used to select a specific device points in the Device Driver Table, and is used to select a specific device
@ -91,9 +93,10 @@ driver.
The data types ``rtems_device_major_number`` and ``rtems_device_minor_number`` The data types ``rtems_device_major_number`` and ``rtems_device_minor_number``
are used to manipulate device major and minor numbers, respectively. are used to manipulate device major and minor numbers, respectively.
.. index:: device names
Device Names Device Names
------------ ------------
.. index:: device names
The I/O Manager provides facilities to associate a name with a particular The I/O Manager provides facilities to associate a name with a particular
device. Directives are provided to register the name of a device and to look device. Directives are provided to register the name of a device and to look
@ -122,9 +125,10 @@ Although the RTEMS I/O manager provides a framework for device drivers, it
makes no assumptions regarding the construction or operation of a device makes no assumptions regarding the construction or operation of a device
driver. driver.
.. index:: runtime driver registration
Runtime Driver Registration Runtime Driver Registration
--------------------------- ---------------------------
.. index:: runtime driver registration
Board support package and application developers can select wether a device Board support package and application developers can select wether a device
driver is statically entered into the default device table or registered at driver is statically entered into the default device table or registered at
@ -144,9 +148,10 @@ Dynamic registration helps applications where:
- Support for runtime loadable driver modules. - Support for runtime loadable driver modules.
.. index:: device driver interface
Device Driver Interface Device Driver Interface
----------------------- -----------------------
.. index:: device driver interface
When an application invokes an I/O manager directive, RTEMS determines which When an application invokes an I/O manager directive, RTEMS determines which
device driver entry point must be invoked. The information passed by the device driver entry point must be invoked. The information passed by the
@ -226,11 +231,11 @@ related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_io_register_driver: .. _rtems_io_register_driver:
.. index:: register a device driver
.. index:: rtems_io_register_driver
IO_REGISTER_DRIVER - Register a device driver IO_REGISTER_DRIVER - Register a device driver
--------------------------------------------- ---------------------------------------------
.. index:: register a device driver
.. index:: rtems_io_register_driver
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -284,11 +289,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_unregister_driver: .. _rtems_io_unregister_driver:
.. index:: unregister a device driver
.. index:: rtems_io_unregister_driver
IO_UNREGISTER_DRIVER - Unregister a device driver IO_UNREGISTER_DRIVER - Unregister a device driver
------------------------------------------------- -------------------------------------------------
.. index:: unregister a device driver
.. index:: rtems_io_unregister_driver
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -317,11 +322,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_initialize: .. _rtems_io_initialize:
.. index:: initialize a device driver
.. index:: rtems_io_initialize
IO_INITIALIZE - Initialize a device driver IO_INITIALIZE - Initialize a device driver
------------------------------------------ ------------------------------------------
.. index:: initialize a device driver
.. index:: rtems_io_initialize
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -360,11 +365,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_register_name: .. _rtems_io_register_name:
.. index:: register device
.. index:: rtems_io_register_name
IO_REGISTER_NAME - Register a device IO_REGISTER_NAME - Register a device
------------------------------------ ------------------------------------
.. index:: register device
.. index:: rtems_io_register_name
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -395,11 +400,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_lookup_name: .. _rtems_io_lookup_name:
.. index:: lookup device major and minor number
.. index:: rtems_io_lookup_name
IO_LOOKUP_NAME - Lookup a device IO_LOOKUP_NAME - Lookup a device
-------------------------------- --------------------------------
.. index:: lookup device major and minor number
.. index:: rtems_io_lookup_name
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -430,11 +435,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_open: .. _rtems_io_open:
.. index:: open a devive
.. index:: rtems_io_open
IO_OPEN - Open a device IO_OPEN - Open a device
----------------------- -----------------------
.. index:: open a devive
.. index:: rtems_io_open
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -468,11 +473,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_close: .. _rtems_io_close:
.. index:: close a device
.. index:: rtems_io_close
IO_CLOSE - Close a device IO_CLOSE - Close a device
------------------------- -------------------------
.. index:: close a device
.. index:: rtems_io_close
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -506,11 +511,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_read: .. _rtems_io_read:
.. index:: read from a device
.. index:: rtems_io_read
IO_READ - Read from a device IO_READ - Read from a device
---------------------------- ----------------------------
.. index:: read from a device
.. index:: rtems_io_read
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -545,11 +550,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_write: .. _rtems_io_write:
.. index:: write to a device
.. index:: rtems_io_write
IO_WRITE - Write to a device IO_WRITE - Write to a device
---------------------------- ----------------------------
.. index:: write to a device
.. index:: rtems_io_write
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -584,13 +589,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_io_control: .. _rtems_io_control:
IO_CONTROL - Special device services
------------------------------------
.. index:: special device services .. index:: special device services
.. index:: IO Control .. index:: IO Control
.. index:: rtems_io_control .. index:: rtems_io_control
IO_CONTROL - Special device services
------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -17,11 +17,11 @@ one with these concepts.
.. _objects: .. _objects:
.. index:: objects
Objects Objects
======= =======
.. index:: objects
RTEMS provides directives which can be used to dynamically create, delete, and RTEMS provides directives which can be used to dynamically create, delete, and
manipulate a set of predefined object types. These types include tasks, manipulate a set of predefined object types. These types include tasks,
message queues, semaphores, memory regions, memory partitions, timers, ports, message queues, semaphores, memory regions, memory partitions, timers, ports,
@ -37,14 +37,17 @@ selected by the user as a meaningful "tag" which may commonly reflect the
object's use in the application. Conversely, object IDs are designed to object's use in the application. Conversely, object IDs are designed to
facilitate efficient object manipulation by the executive. facilitate efficient object manipulation by the executive.
Object Names
------------
.. index:: object name .. index:: object name
.. index:: rtems_name .. index:: rtems_name
Object Names
------------
An object name is an unsigned thirty-two bit entity associated with the object An object name is an unsigned thirty-two bit entity associated with the object
by the user. The data type ``rtems_name`` is used to store object by the user. The data type ``rtems_name`` is used to store object
names... index:: rtems_build_name names.
.. index:: rtems_build_name
Although not required by RTEMS, object names are often composed of four ASCII Although not required by RTEMS, object names are often composed of four ASCII
characters which help identify that object. For example, a task which causes a characters which help identify that object. For example, a task which causes a
@ -84,12 +87,13 @@ name:
printk( "ID=0x%08x name=%s\n", id, ((result) ? result : "no name") ); printk( "ID=0x%08x name=%s\n", id, ((result) ? result : "no name") );
} }
Object IDs
----------
.. index:: object ID .. index:: object ID
.. index:: object ID composition .. index:: object ID composition
.. index:: rtems_id .. index:: rtems_id
Object IDs
----------
An object ID is a unique unsigned integer value which uniquely identifies an An object ID is a unique unsigned integer value which uniquely identifies an
object instance. Object IDs are passed as arguments to many directives in object instance. Object IDs are passed as arguments to many directives in
RTEMS and RTEMS translates the ID to an internal object pointer. The efficient RTEMS and RTEMS translates the ID to an internal object pointer. The efficient
@ -198,9 +202,10 @@ create time and freed when the object is deleted. With the exception of user
extension routines, object control blocks are not directly manipulated by user extension routines, object control blocks are not directly manipulated by user
applications. applications.
.. index:: communication and synchronization
Communication and Synchronization Communication and Synchronization
================================= =================================
.. index:: communication and synchronization
In real-time multitasking applications, the ability for cooperating execution In real-time multitasking applications, the ability for cooperating execution
threads to communicate and synchronize with each other is imperative. A threads to communicate and synchronize with each other is imperative. A
@ -239,9 +244,10 @@ synchronization, while the event manager primarily provides a high performance
synchronization mechanism. The signal manager supports only asynchronous synchronization mechanism. The signal manager supports only asynchronous
communication and is typically used for exception handling. communication and is typically used for exception handling.
.. index:: locking protocols
Locking Protocols Locking Protocols
================= =================
.. index:: locking protocols
RTEMS supports the four locking protocols RTEMS supports the four locking protocols
@ -265,10 +271,10 @@ obtain, release and timeout operations depend on the complexity of this
resource dependency graph. resource dependency graph.
.. _PriorityInversion: .. _PriorityInversion:
.. index:: priority inversion
Priority Inversion Priority Inversion
------------------ ------------------
.. index:: priority inversion
Priority inversion is a form of indefinite postponement which is common in Priority inversion is a form of indefinite postponement which is common in
multitasking, preemptive executives with shared resources. Priority inversion multitasking, preemptive executives with shared resources. Priority inversion
@ -281,11 +287,11 @@ complete its interaction with the resource and release that resource. The high
priority task is effectively prevented from executing by lower priority tasks. priority task is effectively prevented from executing by lower priority tasks.
.. _PriorityCeiling: .. _PriorityCeiling:
.. index:: priority ceiling protocol
.. index:: immediate ceiling priority protocol
Immediate Ceiling Priority Protocol (ICPP) Immediate Ceiling Priority Protocol (ICPP)
------------------------------------------ ------------------------------------------
.. index:: priority ceiling protocol
.. index:: immediate ceiling priority protocol
Each mutex using the Immediate Ceiling Priority Protocol (ICPP) has a ceiling Each mutex using the Immediate Ceiling Priority Protocol (ICPP) has a ceiling
priority. The priority of the mutex owner is immediately raised to the ceiling priority. The priority of the mutex owner is immediately raised to the ceiling
@ -307,10 +313,10 @@ protocol is more forgiving in that it does not require this apriori
information. information.
.. _PriorityInheritance: .. _PriorityInheritance:
.. index:: priority inheritance protocol
Priority Inheritance Protocol Priority Inheritance Protocol
----------------------------- -----------------------------
.. index:: priority inheritance protocol
The priority of the mutex owner is raised to the highest priority of all The priority of the mutex owner is raised to the highest priority of all
threads that currently wait for ownership of this mutex :cite:`Sha:1990:PI`. threads that currently wait for ownership of this mutex :cite:`Sha:1990:PI`.
@ -318,10 +324,10 @@ Since RTEMS 5.1, priority updates due to the priority inheritance protocol
take place immediately and are propagated recursively. take place immediately and are propagated recursively.
.. _MrsP: .. _MrsP:
.. index:: Multiprocessor Resource Sharing Protocol (MrsP)
Multiprocessor Resource Sharing Protocol (MrsP) Multiprocessor Resource Sharing Protocol (MrsP)
----------------------------------------------- -----------------------------------------------
.. index:: Multiprocessor Resource Sharing Protocol (MrsP)
The Multiprocessor Resource Sharing Protocol (MrsP) is a generalization of the The Multiprocessor Resource Sharing Protocol (MrsP) is a generalization of the
priority ceiling protocol to clustered scheduling :cite:`Burns:2013:MrsP`. One priority ceiling protocol to clustered scheduling :cite:`Burns:2013:MrsP`. One
@ -339,10 +345,10 @@ overcome some shortcomings of the original implementation
:cite:`Catellani:2015:MrsP`. :cite:`Catellani:2015:MrsP`.
.. _OMIP: .. _OMIP:
.. index:: O(m) Independence-Preserving Protocol (OMIP)
O(m) Independence-Preserving Protocol (OMIP) O(m) Independence-Preserving Protocol (OMIP)
---------------------------------------------------- ----------------------------------------------------
.. index:: O(m) Independence-Preserving Protocol (OMIP)
The :math:`O(m)` Independence-Preserving Protocol (OMIP) is a generalization of The :math:`O(m)` Independence-Preserving Protocol (OMIP) is a generalization of
the priority inheritance protocol to clustered scheduling which avoids the the priority inheritance protocol to clustered scheduling which avoids the
@ -355,9 +361,10 @@ need internal locking. The complex part of the implementation is contained in
the thread queues and shared with the MrsP support. This locking protocol is the thread queues and shared with the MrsP support. This locking protocol is
available since RTEMS 5.1. available since RTEMS 5.1.
.. index:: thread queues
Thread Queues Thread Queues
============= =============
.. index:: thread queues
In case more than one :term:`thread` may wait on a synchronization object, e.g. In case more than one :term:`thread` may wait on a synchronization object, e.g.
a semaphore or a message queue, then the waiting threads are added to a data a semaphore or a message queue, then the waiting threads are added to a data
@ -415,9 +422,10 @@ A red-black tree is used to implement the priority queues yielding a
:math:`O(log(n))` worst-case time complexity for enqueue and dequeue operations :math:`O(log(n))` worst-case time complexity for enqueue and dequeue operations
with :math:`n` being the count of threads already on the queue. with :math:`n` being the count of threads already on the queue.
.. index:: time
Time Time
==== ====
.. index:: time
The development of responsive real-time applications requires an understanding The development of responsive real-time applications requires an understanding
of how RTEMS maintains and supports time-related operations. The basic unit of of how RTEMS maintains and supports time-related operations. The basic unit of
@ -505,9 +513,10 @@ and removal operations offered by the timer wheel algorithms. See also
tree support already used in other areas, e.g. for the thread priority queues. tree support already used in other areas, e.g. for the thread priority queues.
Less code is a good thing for size, testing and verification. Less code is a good thing for size, testing and verification.
.. index:: memory management
Memory Management Memory Management
================= =================
.. index:: memory management
RTEMS memory management facilities can be grouped into two classes: dynamic RTEMS memory management facilities can be grouped into two classes: dynamic
memory allocation and address translation. Dynamic memory allocation is memory allocation and address translation. Dynamic memory allocation is

View File

@ -5,12 +5,11 @@
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. _linker_sets: .. _linker_sets:
.. index:: linkersets
Linker Sets Linker Sets
*********** ***********
.. index:: linkersets
Introduction Introduction
============ ============
@ -128,10 +127,10 @@ Directives
\clearpage \clearpage
.. _RTEMS_LINKER_SET_BEGIN: .. _RTEMS_LINKER_SET_BEGIN:
.. index:: RTEMS_LINKER_SET_BEGIN
RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker
------------------------------------------------------------------ ------------------------------------------------------------------
.. index:: RTEMS_LINKER_SET_BEGIN
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -161,10 +160,10 @@ NOTE:
\clearpage \clearpage
.. _RTEMS_LINKER_SET_END: .. _RTEMS_LINKER_SET_END:
.. index:: RTEMS_LINKER_SET_END
RTEMS_LINKER_SET_END - Designator of the linker set end marker RTEMS_LINKER_SET_END - Designator of the linker set end marker
-------------------------------------------------------------- --------------------------------------------------------------
.. index:: RTEMS_LINKER_SET_END
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -183,10 +182,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_SET_SIZE: .. _RTEMS_LINKER_SET_SIZE:
.. index:: RTEMS_LINKER_SET_SIZE
RTEMS_LINKER_SET_SIZE - The linker set size in characters RTEMS_LINKER_SET_SIZE - The linker set size in characters
--------------------------------------------------------- ---------------------------------------------------------
.. index:: RTEMS_LINKER_SET_SIZE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -204,10 +203,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_SET_ITEM_COUNT: .. _RTEMS_LINKER_SET_ITEM_COUNT:
.. index:: RTEMS_LINKER_SET_ITEM_COUNT
RTEMS_LINKER_SET_ITEM_COUNT - The linker set item count RTEMS_LINKER_SET_ITEM_COUNT - The linker set item count
--------------------------------------------------------- ---------------------------------------------------------
.. index:: RTEMS_LINKER_SET_ITEM_COUNT
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -224,10 +223,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_SET_IS_EMPTY: .. _RTEMS_LINKER_SET_IS_EMPTY:
.. index:: RTEMS_LINKER_SET_IS_EMPTY
RTEMS_LINKER_SET_IS_EMPTY - Is the linker set empty? RTEMS_LINKER_SET_IS_EMPTY - Is the linker set empty?
--------------------------------------------------------- ---------------------------------------------------------
.. index:: RTEMS_LINKER_SET_IS_EMPTY
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -245,10 +244,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_SET_FOREACH: .. _RTEMS_LINKER_SET_FOREACH:
.. index:: RTEMS_LINKER_SET_FOREACH
RTEMS_LINKER_SET_FOREACH - Iterate through the linker set items RTEMS_LINKER_SET_FOREACH - Iterate through the linker set items
--------------------------------------------------------- ---------------------------------------------------------
.. index:: RTEMS_LINKER_SET_FOREACH
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -281,10 +280,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET_DECLARE: .. _RTEMS_LINKER_ROSET_DECLARE:
.. index:: RTEMS_LINKER_ROSET_DECLARE
RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set
------------------------------------------------------------ ------------------------------------------------------------
.. index:: RTEMS_LINKER_ROSET_DECLARE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -304,10 +303,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET: .. _RTEMS_LINKER_ROSET:
.. index:: RTEMS_LINKER_ROSET
RTEMS_LINKER_ROSET - Defines a read-only linker set RTEMS_LINKER_ROSET - Defines a read-only linker set
--------------------------------------------------- ---------------------------------------------------
.. index:: RTEMS_LINKER_ROSET
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -327,10 +326,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET_ITEM_DECLARE: .. _RTEMS_LINKER_ROSET_ITEM_DECLARE:
.. index:: RTEMS_LINKER_ROSET_ITEM_DECLARE
RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item
---------------------------------------------------------------------- ----------------------------------------------------------------------
.. index:: RTEMS_LINKER_ROSET_ITEM_DECLARE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -352,10 +351,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET_ITEM_REFERENCE: .. _RTEMS_LINKER_ROSET_ITEM_REFERENCE:
.. index:: RTEMS_LINKER_ROSET_ITEM_REFERENCE
RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item
-------------------------------------------------------------------------- --------------------------------------------------------------------------
.. index:: RTEMS_LINKER_ROSET_ITEM_REFERENCE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -377,10 +376,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET_ITEM: .. _RTEMS_LINKER_ROSET_ITEM:
.. index:: RTEMS_LINKER_ROSET_ITEM
RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
------------------------------------------------------------- -------------------------------------------------------------
.. index:: RTEMS_LINKER_ROSET_ITEM
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -402,10 +401,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET_ITEM_ORDERED: .. _RTEMS_LINKER_ROSET_ITEM_ORDERED:
.. index:: RTEMS_LINKER_ROSET_ITEM_ORDERED
RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
.. index:: RTEMS_LINKER_ROSET_ITEM_ORDERED
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -459,10 +458,10 @@ NOTES:
\clearpage \clearpage
.. _RTEMS_LINKER_ROSET_CONTENT: .. _RTEMS_LINKER_ROSET_CONTENT:
.. index:: RTEMS_LINKER_ROSET_CONTENT
RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content
---------------------------------------------------------------------------------- ----------------------------------------------------------------------------------
.. index:: RTEMS_LINKER_ROSET_CONTENT
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -481,10 +480,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET_DECLARE: .. _RTEMS_LINKER_RWSET_DECLARE:
.. index:: RTEMS_LINKER_RWSET_DECLARE
RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
------------------------------------------------------------- -------------------------------------------------------------
.. index:: RTEMS_LINKER_RWSET_DECLARE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -504,10 +503,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET: .. _RTEMS_LINKER_RWSET:
.. index:: RTEMS_LINKER_RWSET
RTEMS_LINKER_RWSET - Defines a read-write linker set RTEMS_LINKER_RWSET - Defines a read-write linker set
---------------------------------------------------- ----------------------------------------------------
.. index:: RTEMS_LINKER_RWSET
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -527,10 +526,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET_ITEM_DECLARE: .. _RTEMS_LINKER_RWSET_ITEM_DECLARE:
.. index:: RTEMS_LINKER_RWSET_ITEM_DECLARE
RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
----------------------------------------------------------------------- -----------------------------------------------------------------------
.. index:: RTEMS_LINKER_RWSET_ITEM_DECLARE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -552,10 +551,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET_ITEM_REFERENCE: .. _RTEMS_LINKER_RWSET_ITEM_REFERENCE:
.. index:: RTEMS_LINKER_RWSET_ITEM_REFERENCE
RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
.. index:: RTEMS_LINKER_RWSET_ITEM_REFERENCE
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -577,10 +576,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET_ITEM: .. _RTEMS_LINKER_RWSET_ITEM:
.. index:: RTEMS_LINKER_RWSET_ITEM
RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
-------------------------------------------------------------- --------------------------------------------------------------
.. index:: RTEMS_LINKER_RWSET_ITEM
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -602,10 +601,10 @@ DESCRIPTION:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET_ITEM_ORDERED: .. _RTEMS_LINKER_RWSET_ITEM_ORDERED:
.. index:: RTEMS_LINKER_RWSET_ITEM_ORDERED
RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
.. index:: RTEMS_LINKER_RWSET_ITEM_ORDERED
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -659,10 +658,10 @@ NOTES:
\clearpage \clearpage
.. _RTEMS_LINKER_RWSET_CONTENT: .. _RTEMS_LINKER_RWSET_CONTENT:
.. index:: RTEMS_LINKER_RWSET_CONTENT
RTEMS_LINKER_RWSET_CONTENT - Marks a declaration as a read-write linker set content RTEMS_LINKER_RWSET_CONTENT - Marks a declaration as a read-write linker set content
----------------------------------------------------------------------------------- -----------------------------------------------------------------------------------
.. index:: RTEMS_LINKER_RWSET_CONTENT
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,12 +4,12 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
Message Manager
***************
.. index:: messages .. index:: messages
.. index:: message queues .. index:: message queues
Message Manager
***************
Introduction Introduction
============ ============
@ -64,9 +64,10 @@ buffer of the message queue or directly to a peer in certain cases. This copy
operation is performed with interrupts disabled. So it is advisable to keep operation is performed with interrupts disabled. So it is advisable to keep
the messages as short as possible. the messages as short as possible.
.. index:: message queue attributes
Building a Message Queue Attribute Set Building a Message Queue Attribute Set
-------------------------------------- --------------------------------------
.. index:: message queue attributes
In general, an attribute set is built by a bitwise OR of the desired attribute In general, an attribute set is built by a bitwise OR of the desired attribute
components. The set of valid message queue attributes is provided in the components. The set of valid message queue attributes is provided in the
@ -220,11 +221,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_message_queue_create: .. _rtems_message_queue_create:
.. index:: create a message queue
.. index:: rtems_message_queue_create
MESSAGE_QUEUE_CREATE - Create a queue MESSAGE_QUEUE_CREATE - Create a queue
------------------------------------- -------------------------------------
.. index:: create a message queue
.. index:: rtems_message_queue_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -307,11 +308,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_ident: .. _rtems_message_queue_ident:
.. index:: get ID of a message queue
.. index:: rtems_message_queue_ident
MESSAGE_QUEUE_IDENT - Get ID of a queue MESSAGE_QUEUE_IDENT - Get ID of a queue
--------------------------------------- ---------------------------------------
.. index:: get ID of a message queue
.. index:: rtems_message_queue_ident
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -360,11 +361,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_delete: .. _rtems_message_queue_delete:
.. index:: delete a message queue
.. index:: rtems_message_queue_delete
MESSAGE_QUEUE_DELETE - Delete a queue MESSAGE_QUEUE_DELETE - Delete a queue
------------------------------------- -------------------------------------
.. index:: delete a message queue
.. index:: rtems_message_queue_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -418,11 +419,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_send: .. _rtems_message_queue_send:
.. index:: send message to a queue
.. index:: rtems_message_queue_send
MESSAGE_QUEUE_SEND - Put message at rear of a queue MESSAGE_QUEUE_SEND - Put message at rear of a queue
--------------------------------------------------- ---------------------------------------------------
.. index:: send message to a queue
.. index:: rtems_message_queue_send
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -475,11 +476,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_urgent: .. _rtems_message_queue_urgent:
.. index:: put message at front of queue
.. index:: rtems_message_queue_urgent
MESSAGE_QUEUE_URGENT - Put message at front of a queue MESSAGE_QUEUE_URGENT - Put message at front of a queue
------------------------------------------------------ ------------------------------------------------------
.. index:: put message at front of queue
.. index:: rtems_message_queue_urgent
**CALLING SEQUENCE:** **CALLING SEQUENCE:**
.. code-block:: c .. code-block:: c
@ -532,11 +533,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_broadcast: .. _rtems_message_queue_broadcast:
.. index:: broadcast message to a queue
.. index:: rtems_message_queue_broadcast
MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
--------------------------------------------------------- ---------------------------------------------------------
.. index:: broadcast message to a queue
.. index:: rtems_message_queue_broadcast
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -592,11 +593,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_receive: .. _rtems_message_queue_receive:
.. index:: receive message from a queue
.. index:: rtems_message_queue_receive
MESSAGE_QUEUE_RECEIVE - Receive message from a queue MESSAGE_QUEUE_RECEIVE - Receive message from a queue
---------------------------------------------------- ----------------------------------------------------
.. index:: receive message from a queue
.. index:: rtems_message_queue_receive
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -679,11 +680,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_get_number_pending: .. _rtems_message_queue_get_number_pending:
.. index:: get number of pending messages
.. index:: rtems_message_queue_get_number_pending
MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
.. index:: get number of pending messages
.. index:: rtems_message_queue_get_number_pending
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -718,11 +719,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_message_queue_flush: .. _rtems_message_queue_flush:
.. index:: flush messages on a queue
.. index:: rtems_message_queue_flush
MESSAGE_QUEUE_FLUSH - Flush all messages on a queue MESSAGE_QUEUE_FLUSH - Flush all messages on a queue
--------------------------------------------------- ---------------------------------------------------
.. index:: flush messages on a queue
.. index:: rtems_message_queue_flush
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: multiprocessing
Multiprocessing Manager Multiprocessing Manager
*********************** ***********************
.. index:: multiprocessing
Introduction Introduction
============ ============
@ -42,11 +42,11 @@ The directives provided by the Manager are:
- rtems_multiprocessing_announce_ - A multiprocessing communications packet has - rtems_multiprocessing_announce_ - A multiprocessing communications packet has
arrived arrived
.. index:: multiprocessing topologies
Background Background
========== ==========
.. index:: multiprocessing topologies
RTEMS makes no assumptions regarding the connection media or topology of a RTEMS makes no assumptions regarding the connection media or topology of a
multiprocessor system. The tasks which compose a particular application can be multiprocessor system. The tasks which compose a particular application can be
spread among as many processors as needed to satisfy the application's timing spread among as many processors as needed to satisfy the application's timing
@ -68,9 +68,10 @@ a homogeneous one. In keeping with RTEMS philosophy of providing transparent
physical node boundaries, the minimal heterogeneous processing required is physical node boundaries, the minimal heterogeneous processing required is
isolated in the MPCI layer. isolated in the MPCI layer.
.. index:: nodes, definition
Nodes Nodes
----- -----
.. index:: nodes, definition
A processor in a RTEMS system is referred to as a node. Each node is assigned A processor in a RTEMS system is referred to as a node. Each node is assigned
a unique non-zero node number by the application designer. RTEMS assumes that a unique non-zero node number by the application designer. RTEMS assumes that
@ -85,9 +86,10 @@ The node number is used by RTEMS to identify each node when performing remote
operations. Thus, the Multiprocessor Communications Interface Layer (MPCI) operations. Thus, the Multiprocessor Communications Interface Layer (MPCI)
must be able to route messages based on the node number. must be able to route messages based on the node number.
.. index:: global objects, definition
Global Objects Global Objects
-------------- --------------
.. index:: global objects, definition
All RTEMS objects which are created with the GLOBAL attribute will be known on All RTEMS objects which are created with the GLOBAL attribute will be known on
all other nodes. Global objects can be referenced from any node in the system, all other nodes. Global objects can be referenced from any node in the system,
@ -99,9 +101,10 @@ field in the Multiprocessor Configuration Table. The distribution of tasks to
processors is performed during the application design phase. Dynamic task processors is performed during the application design phase. Dynamic task
relocation is not supported by RTEMS. relocation is not supported by RTEMS.
.. index:: global objects table
Global Object Table Global Object Table
------------------- -------------------
.. index:: global objects table
RTEMS maintains two tables containing object information on every node in a RTEMS maintains two tables containing object information on every node in a
multiprocessor system: a local object table and a global object table. The multiprocessor system: a local object table and a global object table. The
@ -118,9 +121,10 @@ This parameter, as well as the maximum_nodes parameter, is required to be the
same on all nodes. To maintain consistency among the table copies, every node same on all nodes. To maintain consistency among the table copies, every node
in the system must be informed of the creation or deletion of a global object. in the system must be informed of the creation or deletion of a global object.
.. index:: MPCI and remote operations
Remote Operations Remote Operations
----------------- -----------------
.. index:: MPCI and remote operations
When an application performs an operation on a remote global object, RTEMS must When an application performs an operation on a remote global object, RTEMS must
generate a Remote Request (RQ) message and send it to the appropriate node. generate a Remote Request (RQ) message and send it to the appropriate node.
@ -175,9 +179,10 @@ error handler should be invoked. RTEMS assumes the reliable transmission and
reception of messages by the MPCI and makes no attempt to detect or correct reception of messages by the MPCI and makes no attempt to detect or correct
errors. errors.
.. index:: proxy, definition
Proxies Proxies
------- -------
.. index:: proxy, definition
A proxy is an RTEMS data structure which resides on a remote node and is used A proxy is an RTEMS data structure which resides on a remote node and is used
to represent a task which must block as part of a remote operation. This action to represent a task which must block as part of a remote operation. This action
@ -381,9 +386,10 @@ The ``to_convert`` field of the ``rtems_packet_prefix`` portion of the packet
indicates how much of the packet in 32-bit units may require conversion in a indicates how much of the packet in 32-bit units may require conversion in a
heterogeneous system. heterogeneous system.
.. index:: heterogeneous multiprocessing
Supporting Heterogeneous Environments Supporting Heterogeneous Environments
------------------------------------- -------------------------------------
.. index:: heterogeneous multiprocessing
Developing an MPCI layer for a heterogeneous system requires a thorough Developing an MPCI layer for a heterogeneous system requires a thorough
understanding of the differences between the processors which comprise the understanding of the differences between the processors which comprise the
@ -476,11 +482,11 @@ usage, and status codes.
\clearpage \clearpage
.. _rtems_multiprocessing_announce: .. _rtems_multiprocessing_announce:
.. index:: announce arrival of package
.. index:: rtems_multiprocessing_announce
MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet
----------------------------------------------------------- -----------------------------------------------------------
.. index:: announce arrival of package
.. index:: rtems_multiprocessing_announce
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: object manipulation
Object Services Object Services
*************** ***************
.. index:: object manipulation
Introduction Introduction
============ ============
@ -181,11 +181,11 @@ Directives
\clearpage \clearpage
.. _rtems_build_name: .. _rtems_build_name:
.. index:: build object name
.. index:: rtems_build_name
BUILD_NAME - Build object name from characters BUILD_NAME - Build object name from characters
---------------------------------------------- ----------------------------------------------
.. index:: build object name
.. index:: rtems_build_name
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -213,13 +213,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_get_classic_name: .. _rtems_object_get_classic_name:
OBJECT_GET_CLASSIC_NAME - Lookup name from id
---------------------------------------------
.. index:: get name from id .. index:: get name from id
.. index:: obtain name from id .. index:: obtain name from id
.. index:: rtems_object_get_classic_name .. index:: rtems_object_get_classic_name
OBJECT_GET_CLASSIC_NAME - Lookup name from id
---------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -251,13 +251,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_get_name: .. _rtems_object_get_name:
OBJECT_GET_NAME - Obtain object name as string
----------------------------------------------
.. index:: get object name as string .. index:: get object name as string
.. index:: obtain object name as string .. index:: obtain object name as string
.. index:: rtems_object_get_name .. index:: rtems_object_get_name
OBJECT_GET_NAME - Obtain object name as string
----------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -284,11 +284,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_set_name: .. _rtems_object_set_name:
.. index:: set object name
.. index:: rtems_object_set_name
OBJECT_SET_NAME - Set object name OBJECT_SET_NAME - Set object name
--------------------------------- ---------------------------------
.. index:: set object name
.. index:: rtems_object_set_name
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -331,11 +331,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_get_api: .. _rtems_object_id_get_api:
.. index:: obtain API from id
.. index:: rtems_object_id_get_api
OBJECT_ID_GET_API - Obtain API from Id OBJECT_ID_GET_API - Obtain API from Id
-------------------------------------- --------------------------------------
.. index:: obtain API from id
.. index:: rtems_object_id_get_api
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -360,11 +360,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_get_class: .. _rtems_object_id_get_class:
.. index:: obtain class from object id
.. index:: rtems_object_id_get_class
OBJECT_ID_GET_CLASS - Obtain Class from Id OBJECT_ID_GET_CLASS - Obtain Class from Id
------------------------------------------ ------------------------------------------
.. index:: obtain class from object id
.. index:: rtems_object_id_get_class
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -389,11 +389,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_get_node: .. _rtems_object_id_get_node:
.. index:: obtain node from object id
.. index:: rtems_object_id_get_node
OBJECT_ID_GET_NODE - Obtain Node from Id OBJECT_ID_GET_NODE - Obtain Node from Id
---------------------------------------- ----------------------------------------
.. index:: obtain node from object id
.. index:: rtems_object_id_get_node
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -418,11 +418,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_get_index: .. _rtems_object_id_get_index:
.. index:: obtain index from object id
.. index:: rtems_object_id_get_index
OBJECT_ID_GET_INDEX - Obtain Index from Id OBJECT_ID_GET_INDEX - Obtain Index from Id
------------------------------------------ ------------------------------------------
.. index:: obtain index from object id
.. index:: rtems_object_id_get_index
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -447,11 +447,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_build_id: .. _rtems_build_id:
.. index:: build object id from components
.. index:: rtems_build_id
BUILD_ID - Build Object Id From Components BUILD_ID - Build Object Id From Components
------------------------------------------ ------------------------------------------
.. index:: build object id from components
.. index:: rtems_build_id
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -481,11 +481,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_api_minimum: .. _rtems_object_id_api_minimum:
.. index:: obtain minimum API value
.. index:: rtems_object_id_api_minimum
OBJECT_ID_API_MINIMUM - Obtain Minimum API Value OBJECT_ID_API_MINIMUM - Obtain Minimum API Value
------------------------------------------------ ------------------------------------------------
.. index:: obtain minimum API value
.. index:: rtems_object_id_api_minimum
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -506,11 +506,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_api_maximum: .. _rtems_object_id_api_maximum:
.. index:: obtain maximum API value
.. index:: rtems_object_id_api_maximum
OBJECT_ID_API_MAXIMUM - Obtain Maximum API Value OBJECT_ID_API_MAXIMUM - Obtain Maximum API Value
------------------------------------------------ ------------------------------------------------
.. index:: obtain maximum API value
.. index:: rtems_object_id_api_maximum
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -531,11 +531,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_api_minimum_class: .. _rtems_object_api_minimum_class:
.. index:: obtain minimum class value
.. index:: rtems_object_api_minimum_class
OBJECT_API_MINIMUM_CLASS - Obtain Minimum Class Value OBJECT_API_MINIMUM_CLASS - Obtain Minimum Class Value
----------------------------------------------------- -----------------------------------------------------
.. index:: obtain minimum class value
.. index:: rtems_object_api_minimum_class
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -562,11 +562,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_api_maximum_class: .. _rtems_object_api_maximum_class:
.. index:: obtain maximum class value
.. index:: rtems_object_api_maximum_class
OBJECT_API_MAXIMUM_CLASS - Obtain Maximum Class Value OBJECT_API_MAXIMUM_CLASS - Obtain Maximum Class Value
----------------------------------------------------- -----------------------------------------------------
.. index:: obtain maximum class value
.. index:: rtems_object_api_maximum_class
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -593,11 +593,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_api_minimum_class: .. _rtems_object_id_api_minimum_class:
.. index:: obtain minimum class value for an API
.. index:: rtems_object_id_api_minimum_class
OBJECT_ID_API_MINIMUM_CLASS - Obtain Minimum Class Value for an API OBJECT_ID_API_MINIMUM_CLASS - Obtain Minimum Class Value for an API
------------------------------------------------------------------- -------------------------------------------------------------------
.. index:: obtain minimum class value for an API
.. index:: rtems_object_id_api_minimum_class
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -624,11 +624,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_id_api_maximum_class: .. _rtems_object_id_api_maximum_class:
.. index:: obtain maximum class value for an API
.. index:: rtems_object_id_api_maximum_class
OBJECT_ID_API_MAXIMUM_CLASS - Obtain Maximum Class Value for an API OBJECT_ID_API_MAXIMUM_CLASS - Obtain Maximum Class Value for an API
------------------------------------------------------------------- -------------------------------------------------------------------
.. index:: obtain maximum class value for an API
.. index:: rtems_object_id_api_maximum_class
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -655,11 +655,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_get_api_name: .. _rtems_object_get_api_name:
.. index:: obtain API name
.. index:: rtems_object_get_api_name
OBJECT_GET_API_NAME - Obtain API Name OBJECT_GET_API_NAME - Obtain API Name
------------------------------------- -------------------------------------
.. index:: obtain API name
.. index:: rtems_object_get_api_name
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -687,11 +687,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_get_api_class_name: .. _rtems_object_get_api_class_name:
.. index:: obtain class name
.. index:: rtems_object_get_api_class_name
OBJECT_GET_API_CLASS_NAME - Obtain Class Name OBJECT_GET_API_CLASS_NAME - Obtain Class Name
--------------------------------------------- ---------------------------------------------
.. index:: obtain class name
.. index:: rtems_object_get_api_class_name
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -723,11 +723,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_object_get_class_information: .. _rtems_object_get_class_information:
.. index:: obtain class information
.. index:: rtems_object_get_class_information
OBJECT_GET_CLASS_INFORMATION - Obtain Class Information OBJECT_GET_CLASS_INFORMATION - Obtain Class Information
------------------------------------------------------- -------------------------------------------------------
.. index:: obtain class information
.. index:: rtems_object_get_class_information
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -38,6 +38,8 @@ dependent are provided in the Applications Supplement documents. A supplement
document which addresses specific architectural issues that affect RTEMS is document which addresses specific architectural issues that affect RTEMS is
provided for each processor type that is supported. provided for each processor type that is supported.
.. index:: Real-time applications
Real-time Application Systems Real-time Application Systems
============================= =============================
@ -73,6 +75,8 @@ communication channels and global resources that must be shared between
competing processors are introduced. The ramifications of multiple processors competing processors are introduced. The ramifications of multiple processors
complicate each and every characteristic of a real-time system. complicate each and every characteristic of a real-time system.
.. index:: Real-time executive
Real-time Executive Real-time Executive
=================== ===================
@ -113,6 +117,8 @@ developer is then able to concentrate solely on the application. By using
standard software components, the time and cost required to develop standard software components, the time and cost required to develop
sophisticated real-time applications is significantly reduced. sophisticated real-time applications is significantly reduced.
.. index:: Application architecture
RTEMS Application Architecture RTEMS Application Architecture
============================== ==============================
@ -135,6 +141,8 @@ real-time system can benefit from this architecture by building a rich library
of standard application components which can be used repeatedly in other of standard application components which can be used repeatedly in other
real-time projects. real-time projects.
.. index:: Internal Architecture
RTEMS Internal Architecture RTEMS Internal Architecture
=========================== ===========================

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: partitions
Partition Manager Partition Manager
***************** *****************
.. index:: partitions
Introduction Introduction
============ ============
@ -28,9 +28,10 @@ fixed-size units. The directives provided by the partition manager are:
Background Background
========== ==========
.. index:: partition, definition
Partition Manager Definitions Partition Manager Definitions
----------------------------- -----------------------------
.. index:: partition, definition
A partition is a physically contiguous memory area divided into fixed-size A partition is a physically contiguous memory area divided into fixed-size
buffers that can be dynamically allocated and deallocated. buffers that can be dynamically allocated and deallocated.
@ -45,9 +46,10 @@ buffer is allocated, the entire buffer is available for application use.
Therefore, modifying memory that is outside of an allocated buffer could Therefore, modifying memory that is outside of an allocated buffer could
destroy the free buffer chain or the contents of an adjacent allocated buffer. destroy the free buffer chain or the contents of an adjacent allocated buffer.
.. index:: partition attribute set, building
Building a Partition Attribute Set Building a Partition Attribute Set
---------------------------------- ----------------------------------
.. index:: partition attribute set, building
In general, an attribute set is built by a bitwise OR of the desired attribute In general, an attribute set is built by a bitwise OR of the desired attribute
components. The set of valid partition attributes is provided in the following components. The set of valid partition attributes is provided in the following
@ -134,11 +136,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_partition_create: .. _rtems_partition_create:
.. index:: create a partition
.. index:: rtems_partition_create
PARTITION_CREATE - Create a partition PARTITION_CREATE - Create a partition
------------------------------------- -------------------------------------
.. index:: create a partition
.. index:: rtems_partition_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -228,13 +230,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_partition_ident: .. _rtems_partition_ident:
PARTITION_IDENT - Get ID of a partition
---------------------------------------
.. index:: get ID of a partition .. index:: get ID of a partition
.. index:: obtain ID of a partition .. index:: obtain ID of a partition
.. index:: rtems_partition_ident .. index:: rtems_partition_ident
PARTITION_IDENT - Get ID of a partition
---------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -282,11 +284,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_partition_delete: .. _rtems_partition_delete:
.. index:: delete a partition
.. index:: rtems_partition_delete
PARTITION_DELETE - Delete a partition PARTITION_DELETE - Delete a partition
------------------------------------- -------------------------------------
.. index:: delete a partition
.. index:: rtems_partition_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -331,13 +333,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_partition_get_buffer: .. _rtems_partition_get_buffer:
PARTITION_GET_BUFFER - Get buffer from a partition
--------------------------------------------------
.. index:: get buffer from partition .. index:: get buffer from partition
.. index:: obtain buffer from partition .. index:: obtain buffer from partition
.. index:: rtems_partition_get_buffer .. index:: rtems_partition_get_buffer
PARTITION_GET_BUFFER - Get buffer from a partition
--------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -379,11 +381,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_partition_return_buffer: .. _rtems_partition_return_buffer:
.. index:: return buffer to partitition
.. index:: rtems_partition_return_buffer
PARTITION_RETURN_BUFFER - Return buffer to a partition PARTITION_RETURN_BUFFER - Return buffer to a partition
------------------------------------------------------ ------------------------------------------------------
.. index:: return buffer to partitition
.. index:: rtems_partition_return_buffer
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,12 +4,12 @@
.. COMMENT: Aeroflex Gaisler AB .. COMMENT: Aeroflex Gaisler AB
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: PCI
.. index:: libpci
PCI Library PCI Library
*********** ***********
.. index:: libpci
Introduction Introduction
============ ============
@ -390,6 +390,8 @@ this is mosly for debugging or for development systems. When the product is
finally deployed macros switch to using the inline functions instead which have finally deployed macros switch to using the inline functions instead which have
been configured for the correct endianness. been configured for the correct endianness.
.. index:: PCI address translation
PCI address translation PCI address translation
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
@ -408,6 +410,8 @@ different PCI spaces/regions.
/* Translate CPU accessible address into PCI address (for DMA) */ /* Translate CPU accessible address into PCI address (for DMA) */
static inline int pci_cpu2pci(uint32_t *address, int type); static inline int pci_cpu2pci(uint32_t *address, int type);
.. index:: PCI Interrupt
PCI Interrupt PCI Interrupt
------------- -------------

View File

@ -5,12 +5,12 @@
.. COMMENT: COPYRIGHT (c) 2017 Kuan-Hsun Chen. .. COMMENT: COPYRIGHT (c) 2017 Kuan-Hsun Chen.
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
Rate Monotonic Manager
**********************
.. index:: rate mononitonic tasks .. index:: rate mononitonic tasks
.. index:: periodic tasks .. index:: periodic tasks
Rate Monotonic Manager
**********************
Introduction Introduction
============ ============
@ -133,9 +133,10 @@ milliseconds every 100 (10 percent of the CPU). As a general rule of thumb,
the higher frequency at which a task executes, the more important it is to the higher frequency at which a task executes, the more important it is to
optimize that task. optimize that task.
.. index:: periodic task, definition
Periodicity Definitions Periodicity Definitions
---------------------------------- ----------------------------------
.. index:: periodic task, definition
A periodic task is one which must be executed at a regular interval. The A periodic task is one which must be executed at a regular interval. The
interval between successive iterations of the task is referred to as its interval between successive iterations of the task is referred to as its
@ -165,11 +166,12 @@ joystick. The mechanical action of the fire button ensures a minimum time
period between successive activations, but the missile must be launched by a period between successive activations, but the missile must be launched by a
hard deadline. hard deadline.
Rate Monotonic Scheduling Algorithm
-----------------------------------
.. index:: Rate Monotonic Scheduling Algorithm, definition .. index:: Rate Monotonic Scheduling Algorithm, definition
.. index:: RMS Algorithm, definition .. index:: RMS Algorithm, definition
Rate Monotonic Scheduling Algorithm
-----------------------------------
The Rate Monotonic Scheduling Algorithm (RMS) is important to real-time systems The Rate Monotonic Scheduling Algorithm (RMS) is important to real-time systems
designers because it allows one to sufficiently guarantee that a set of tasks designers because it allows one to sufficiently guarantee that a set of tasks
is schedulable (see :cite:`Liu:1973:Scheduling`, :cite:`Lehoczky:1989:RM`, is schedulable (see :cite:`Liu:1973:Scheduling`, :cite:`Lehoczky:1989:RM`,
@ -229,11 +231,11 @@ highest priority non-critical task. Although RMS may be used to assign
priorities to the non-critical tasks, it is not necessary. In this instance, priorities to the non-critical tasks, it is not necessary. In this instance,
schedulability is only guaranteed for the critical task set. schedulability is only guaranteed for the critical task set.
.. index:: RMS schedulability analysis
Schedulability Analysis Schedulability Analysis
----------------------- -----------------------
.. index:: RMS schedulability analysis
RMS allows application designers to ensure that tasks can meet all deadlines under fixed-priority assignment, RMS allows application designers to ensure that tasks can meet all deadlines under fixed-priority assignment,
even under transient overload, without knowing exactly when any given task will even under transient overload, without knowing exactly when any given task will
execute by applying proven schedulability analysis rules. execute by applying proven schedulability analysis rules.
@ -261,9 +263,10 @@ assumptions:
Once the basic schedulability analysis is understood, some of the above Once the basic schedulability analysis is understood, some of the above
assumptions can be relaxed and the side-effects accounted for. assumptions can be relaxed and the side-effects accounted for.
.. index:: RMS Processor Utilization Rule
Processor Utilization Rule Processor Utilization Rule
^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
.. index:: RMS Processor Utilization Rule
The Processor Utilization Rule requires that processor utilization be The Processor Utilization Rule requires that processor utilization be
calculated based upon the period and execution time of each task. calculated based upon the period and execution time of each task.
@ -312,9 +315,10 @@ upper bound of 3 * (2**(1/3) - 1), or 0.779, imposed by the Processor
Utilization Rule. Therefore, this task set is guaranteed to be schedulable Utilization Rule. Therefore, this task set is guaranteed to be schedulable
using RMS. using RMS.
.. index:: RMS First Deadline Rule
First Deadline Rule First Deadline Rule
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
.. index:: RMS First Deadline Rule
If a given set of tasks do exceed the processor utilization upper limit imposed If a given set of tasks do exceed the processor utilization upper limit imposed
by the Processor Utilization Rule, they can still be guaranteed to meet all by the Processor Utilization Rule, they can still be guaranteed to meet all
@ -631,11 +635,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_rate_monotonic_create: .. _rtems_rate_monotonic_create:
.. index:: create a period
.. index:: rtems_rate_monotonic_create
RATE_MONOTONIC_CREATE - Create a rate monotonic period RATE_MONOTONIC_CREATE - Create a rate monotonic period
------------------------------------------------------ ------------------------------------------------------
.. index:: create a period
.. index:: rtems_rate_monotonic_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -671,13 +675,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_ident: .. _rtems_rate_monotonic_ident:
RATE_MONOTONIC_IDENT - Get ID of a period
-----------------------------------------
.. index:: get ID of a period .. index:: get ID of a period
.. index:: obtain ID of a period .. index:: obtain ID of a period
.. index:: rtems_rate_monotonic_ident .. index:: rtems_rate_monotonic_ident
RATE_MONOTONIC_IDENT - Get ID of a period
-----------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -710,11 +714,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_cancel: .. _rtems_rate_monotonic_cancel:
.. index:: cancel a period
.. index:: rtems_rate_monotonic_cancel
RATE_MONOTONIC_CANCEL - Cancel a period RATE_MONOTONIC_CANCEL - Cancel a period
--------------------------------------- ---------------------------------------
.. index:: cancel a period
.. index:: rtems_rate_monotonic_cancel
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -752,10 +756,10 @@ NOTES:
.. _rtems_rate_monotonic_delete: .. _rtems_rate_monotonic_delete:
.. index:: rtems_rate_monotonic_delete .. index:: rtems_rate_monotonic_delete
.. index:: delete a period
RATE_MONOTONIC_DELETE - Delete a rate monotonic period RATE_MONOTONIC_DELETE - Delete a rate monotonic period
------------------------------------------------------ ------------------------------------------------------
.. index:: delete a period
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -790,14 +794,14 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_period: .. _rtems_rate_monotonic_period:
RATE_MONOTONIC_PERIOD - Conclude current/Start next period
----------------------------------------------------------
.. index:: conclude current period .. index:: conclude current period
.. index:: start current period .. index:: start current period
.. index:: period initiation .. index:: period initiation
.. index:: rtems_rate_monotonic_period .. index:: rtems_rate_monotonic_period
RATE_MONOTONIC_PERIOD - Conclude current/Start next period
----------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -844,13 +848,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_get_status: .. _rtems_rate_monotonic_get_status:
RATE_MONOTONIC_GET_STATUS - Obtain status from a period
-------------------------------------------------------
.. index:: get status of period .. index:: get status of period
.. index:: obtain status of period .. index:: obtain status of period
.. index:: rtems_rate_monotonic_get_status .. index:: rtems_rate_monotonic_get_status
RATE_MONOTONIC_GET_STATUS - Obtain status from a period
-------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -909,13 +913,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_get_statistics: .. _rtems_rate_monotonic_get_statistics:
RATE_MONOTONIC_GET_STATISTICS - Obtain statistics from a period
---------------------------------------------------------------
.. index:: get statistics of period .. index:: get statistics of period
.. index:: obtain statistics of period .. index:: obtain statistics of period
.. index:: rtems_rate_monotonic_get_statistics .. index:: rtems_rate_monotonic_get_statistics
RATE_MONOTONIC_GET_STATISTICS - Obtain statistics from a period
---------------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -978,11 +982,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_reset_statistics: .. _rtems_rate_monotonic_reset_statistics:
.. index:: reset statistics of period
.. index:: rtems_rate_monotonic_reset_statistics
RATE_MONOTONIC_RESET_STATISTICS - Reset statistics for a period RATE_MONOTONIC_RESET_STATISTICS - Reset statistics for a period
--------------------------------------------------------------- ---------------------------------------------------------------
.. index:: reset statistics of period
.. index:: rtems_rate_monotonic_reset_statistics
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1012,11 +1016,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_reset_all_statistics: .. _rtems_rate_monotonic_reset_all_statistics:
.. index:: reset statistics of all periods
.. index:: rtems_rate_monotonic_reset_all_statistics
RATE_MONOTONIC_RESET_ALL_STATISTICS - Reset statistics for all periods RATE_MONOTONIC_RESET_ALL_STATISTICS - Reset statistics for all periods
---------------------------------------------------------------------- ----------------------------------------------------------------------
.. index:: reset statistics of all periods
.. index:: rtems_rate_monotonic_reset_all_statistics
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1038,13 +1042,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_rate_monotonic_report_statistics: .. _rtems_rate_monotonic_report_statistics:
RATE_MONOTONIC_REPORT_STATISTICS - Print period statistics report
-----------------------------------------------------------------
.. index:: print period statistics report .. index:: print period statistics report
.. index:: period statistics report .. index:: period statistics report
.. index:: rtems_rate_monotonic_report_statistics .. index:: rtems_rate_monotonic_report_statistics
RATE_MONOTONIC_REPORT_STATISTICS - Print period statistics report
-----------------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,11 +4,12 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: Red-Black Trees
.. index:: rbtrees
Red-Black Trees Red-Black Trees
*************** ***************
.. index:: rbtrees
Introduction Introduction
============ ============
@ -111,9 +112,10 @@ Examples for using the red-black trees can be found in the
Directives Directives
========== ==========
.. index:: rbtree doc
Documentation for the Red-Black Tree Directives Documentation for the Red-Black Tree Directives
----------------------------------------------- -----------------------------------------------
.. index:: rbtree doc
Source documentation for the Red-Black Tree API can be found in the generated Source documentation for the Red-Black Tree API can be found in the generated
Doxygen output for ``cpukit/sapi``. Doxygen output for ``cpukit/sapi``.

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: regions
Region Manager Region Manager
************** **************
.. index:: regions
Introduction Introduction
============ ============
@ -34,11 +34,12 @@ variable sized units. The directives provided by the region manager are:
Background Background
========== ==========
Region Manager Definitions
--------------------------
.. index:: region, definition .. index:: region, definition
.. index:: segment, definition .. index:: segment, definition
Region Manager Definitions
--------------------------
A region makes up a physically contiguous memory space with user-defined A region makes up a physically contiguous memory space with user-defined
boundaries from which variable-sized segments are dynamically allocated and boundaries from which variable-sized segments are dynamically allocated and
deallocated. A segment is a variable size section of memory which is allocated deallocated. A segment is a variable size section of memory which is allocated
@ -59,9 +60,10 @@ boundaries while the region is currently active in the system.
Upon return to the region, the free block is coalesced with its neighbors (if Upon return to the region, the free block is coalesced with its neighbors (if
free) on both sides to produce the largest possible unused block. free) on both sides to produce the largest possible unused block.
.. index:: region attribute set, building
Building an Attribute Set Building an Attribute Set
------------------------- -------------------------
.. index:: region attribute set, building
In general, an attribute set is built by a bitwise OR of the desired attribute In general, an attribute set is built by a bitwise OR of the desired attribute
components. The set of valid region attributes is provided in the following components. The set of valid region attributes is provided in the following
@ -223,10 +225,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_region_create: .. _rtems_region_create:
.. index:: create a region
REGION_CREATE - Create a region REGION_CREATE - Create a region
------------------------------- -------------------------------
.. index:: create a region
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -298,13 +301,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_ident: .. _rtems_region_ident:
REGION_IDENT - Get ID of a region
---------------------------------
.. index:: get ID of a region .. index:: get ID of a region
.. index:: obtain ID of a region .. index:: obtain ID of a region
.. index:: rtems_region_ident .. index:: rtems_region_ident
REGION_IDENT - Get ID of a region
---------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -340,11 +343,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_delete: .. _rtems_region_delete:
.. index:: delete a region
.. index:: rtems_region_delete
REGION_DELETE - Delete a region REGION_DELETE - Delete a region
------------------------------- -------------------------------
.. index:: delete a region
.. index:: rtems_region_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -381,13 +384,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_extend: .. _rtems_region_extend:
REGION_EXTEND - Add memory to a region
--------------------------------------
.. index:: add memory to a region .. index:: add memory to a region
.. index:: region, add memory .. index:: region, add memory
.. index:: rtems_region_extend .. index:: rtems_region_extend
REGION_EXTEND - Add memory to a region
--------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -434,11 +437,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_get_segment: .. _rtems_region_get_segment:
.. index:: get segment from region
.. index:: rtems_region_get_segment
REGION_GET_SEGMENT - Get segment from a region REGION_GET_SEGMENT - Get segment from a region
---------------------------------------------- ----------------------------------------------
.. index:: get segment from region
.. index:: rtems_region_get_segment
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -520,11 +523,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_return_segment: .. _rtems_region_return_segment:
.. index:: return segment to region
.. index:: rtems_region_return_segment
REGION_RETURN_SEGMENT - Return segment to a region REGION_RETURN_SEGMENT - Return segment to a region
-------------------------------------------------- --------------------------------------------------
.. index:: return segment to region
.. index:: rtems_region_return_segment
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -569,11 +572,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_get_segment_size: .. _rtems_region_get_segment_size:
.. index:: get size of segment
.. index:: rtems_region_get_segment_size
REGION_GET_SEGMENT_SIZE - Obtain size of a segment REGION_GET_SEGMENT_SIZE - Obtain size of a segment
-------------------------------------------------- --------------------------------------------------
.. index:: get size of segment
.. index:: rtems_region_get_segment_size
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -611,11 +614,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_region_resize_segment: .. _rtems_region_resize_segment:
.. index:: resize segment
.. index:: rtems_region_resize_segment
REGION_RESIZE_SEGMENT - Change size of a segment REGION_RESIZE_SEGMENT - Change size of a segment
------------------------------------------------ ------------------------------------------------
.. index:: resize segment
.. index:: rtems_region_resize_segment
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,6 +4,9 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: RTEMS Data Types
.. index:: data types
RTEMS Data Types RTEMS Data Types
**************** ****************

View File

@ -4,12 +4,12 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
Scheduling Concepts
*******************
.. index:: scheduling .. index:: scheduling
.. index:: task scheduling .. index:: task scheduling
Scheduling Concepts
*******************
Introduction Introduction
============ ============
@ -39,11 +39,11 @@ The directives provided by the scheduler manager are:
- rtems_scheduler_remove_processor_ - Remove processor from a scheduler - rtems_scheduler_remove_processor_ - Remove processor from a scheduler
.. index:: scheduling algorithms
Scheduling Algorithms Scheduling Algorithms
--------------------- ---------------------
.. index:: scheduling algorithms
RTEMS provides a plugin framework which allows it to support multiple RTEMS provides a plugin framework which allows it to support multiple
scheduling algorithms. RTEMS includes multiple scheduling algorithms and the scheduling algorithms. RTEMS includes multiple scheduling algorithms and the
user can select which of these they wish to use in their application at user can select which of these they wish to use in their application at
@ -60,9 +60,10 @@ scheduling algorithm. This scheduling algoritm is suitable for uniprocessor
Scheduler*. Unless the user configures another scheduling algorithm, RTEMS Scheduler*. Unless the user configures another scheduling algorithm, RTEMS
will use this on uniprocessor systems. will use this on uniprocessor systems.
.. index:: priority scheduling
Priority Scheduling Priority Scheduling
------------------- -------------------
.. index:: priority scheduling
When using priority based scheduling, RTEMS allocates the processor using a When using priority based scheduling, RTEMS allocates the processor using a
priority-based, preemptive algorithm augmented to provide round-robin priority-based, preemptive algorithm augmented to provide round-robin
@ -153,9 +154,10 @@ supporting a large number of tasks.
This scheduler is only aware of a single core. This scheduler is only aware of a single core.
.. index:: earliest deadline first scheduling
Earliest Deadline First Scheduler Earliest Deadline First Scheduler
--------------------------------- ---------------------------------
.. index:: earliest deadline first scheduling
This is an alternative scheduler in RTEMS for single core applications. The This is an alternative scheduler in RTEMS for single core applications. The
primary EDF advantage is high total CPU utilization (theoretically up to primary EDF advantage is high total CPU utilization (theoretically up to
@ -185,9 +187,10 @@ period, it has to be finished until the end of this period. The call of
deadline. Moreover, the ``rtems_rate_monotonic_cancel`` and deadline. Moreover, the ``rtems_rate_monotonic_cancel`` and
``rtems_rate_monotonic_delete`` calls clear the deadlines assigned to the task. ``rtems_rate_monotonic_delete`` calls clear the deadlines assigned to the task.
.. index:: constant bandwidth server scheduling
Constant Bandwidth Server Scheduling (CBS) Constant Bandwidth Server Scheduling (CBS)
------------------------------------------ ------------------------------------------
.. index:: constant bandwidth server scheduling
This is an alternative scheduler in RTEMS for single core applications. The This is an alternative scheduler in RTEMS for single core applications. The
CBS is a budget aware extension of EDF scheduler. The main goal of this CBS is a budget aware extension of EDF scheduler. The main goal of this
@ -264,11 +267,11 @@ levels). This scheduler supports arbitrary task processor affinities. The
worst-case run-time complexity of some scheduler operations exceeds worst-case run-time complexity of some scheduler operations exceeds
:math:`O(n)` while :math:`n` is the count of ready tasks. :math:`O(n)` while :math:`n` is the count of ready tasks.
.. index:: scheduling mechanisms
Scheduling Modification Mechanisms Scheduling Modification Mechanisms
================================== ==================================
.. index:: scheduling mechanisms
RTEMS provides four mechanisms which allow the user to alter the task RTEMS provides four mechanisms which allow the user to alter the task
scheduling decisions: scheduling decisions:
@ -290,9 +293,10 @@ timeslicing and manual round-robin it is important to keep in mind that
preemption (if enabled) of a task by higher priority tasks will occur as preemption (if enabled) of a task by higher priority tasks will occur as
required, overriding the other factors presented in the description. required, overriding the other factors presented in the description.
.. index:: task priority
Task Priority and Scheduling Task Priority and Scheduling
---------------------------- ----------------------------
.. index:: task priority
The most significant task scheduling modification mechanism is the ability for The most significant task scheduling modification mechanism is the ability for
the user to assign a priority level to each individual task when it is created the user to assign a priority level to each individual task when it is created
@ -301,9 +305,10 @@ on the configured scheduler. A lower priority level means higher priority
(higher importance). The maximum priority level of the default uniprocessor (higher importance). The maximum priority level of the default uniprocessor
scheduler is 255. scheduler is 255.
.. index:: preemption
Preemption Preemption
---------- ----------
.. index:: preemption
Another way the user can alter the basic scheduling algorithm is by Another way the user can alter the basic scheduling algorithm is by
manipulating the preemption mode flag (``RTEMS_PREEMPT_MASK``) of individual manipulating the preemption mode flag (``RTEMS_PREEMPT_MASK``) of individual
@ -314,11 +319,12 @@ higher priority levels will not be allowed to execute. Note that the
preemption setting has no effect on the manner in which a task is scheduled. preemption setting has no effect on the manner in which a task is scheduled.
It only applies once a task has control of the processor. It only applies once a task has control of the processor.
Timeslicing
-----------
.. index:: timeslicing .. index:: timeslicing
.. index:: round robin scheduling .. index:: round robin scheduling
Timeslicing
-----------
Timeslicing or round-robin scheduling is an additional method which can be used Timeslicing or round-robin scheduling is an additional method which can be used
to alter the basic scheduling algorithm. Like preemption, timeslicing is to alter the basic scheduling algorithm. Like preemption, timeslicing is
specified on a task by task basis using the timeslicing mode flag specified on a task by task basis using the timeslicing mode flag
@ -333,9 +339,10 @@ and continues to run. Remember that a higher priority task will preempt the
task (unless preemption is disabled) as soon as it is ready to run, even if the task (unless preemption is disabled) as soon as it is ready to run, even if the
task has not used up its entire timeslice. task has not used up its entire timeslice.
.. index:: manual round robin
Manual Round-Robin Manual Round-Robin
------------------ ------------------
.. index:: manual round robin
The final mechanism for altering the RTEMS scheduling algorithm is called The final mechanism for altering the RTEMS scheduling algorithm is called
manual round-robin. Manual round-robin is invoked by using manual round-robin. Manual round-robin is invoked by using
@ -345,9 +352,10 @@ immediately returned to the ready chain at the end of its priority group. If
no other tasks of the same priority are ready to run, then the task does not no other tasks of the same priority are ready to run, then the task does not
lose control of the processor. lose control of the processor.
.. index:: dispatching
Dispatching Tasks Dispatching Tasks
================= =================
.. index:: dispatching
The dispatcher is the RTEMS component responsible for allocating the processor The dispatcher is the RTEMS component responsible for allocating the processor
to a ready task. In order to allocate the processor to one task, it must be to a ready task. In order to allocate the processor to one task, it must be
@ -370,9 +378,10 @@ unnecessary save and restore operations, the state of the numeric coprocessor
is only saved when a ``RTEMS_FLOATING_POINT`` task is dispatched and that task is only saved when a ``RTEMS_FLOATING_POINT`` task is dispatched and that task
was not the last task to utilize the coprocessor. was not the last task to utilize the coprocessor.
.. index:: task state transitions
Task State Transitions Task State Transitions
====================== ======================
.. index:: task state transitions
Tasks in an RTEMS system must always be in one of the five allowable task Tasks in an RTEMS system must always be in one of the five allowable task
states. These states are: executing, ready, blocked, dormant, and states. These states are: executing, ready, blocked, dormant, and

View File

@ -4,14 +4,14 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
Semaphore Manager
*****************
.. index:: semaphores .. index:: semaphores
.. index:: binary semaphores .. index:: binary semaphores
.. index:: counting semaphores .. index:: counting semaphores
.. index:: mutual exclusion .. index:: mutual exclusion
Semaphore Manager
*****************
Introduction Introduction
============ ============
@ -325,11 +325,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_semaphore_create: .. _rtems_semaphore_create:
.. index:: create a semaphore
.. index:: rtems_semaphore_create
SEMAPHORE_CREATE - Create a semaphore SEMAPHORE_CREATE - Create a semaphore
------------------------------------- -------------------------------------
.. index:: create a semaphore
.. index:: rtems_semaphore_create
CALLING SEQUENCE: CALLING SEQUENCE:
@ -437,13 +437,12 @@ NOTES:
\clearpage \clearpage
.. _rtems_semaphore_ident: .. _rtems_semaphore_ident:
.. index:: get ID of a semaphore
.. index:: obtain ID of a semaphore
.. index:: rtems_semaphore_ident
SEMAPHORE_IDENT - Get ID of a semaphore SEMAPHORE_IDENT - Get ID of a semaphore
--------------------------------------- ---------------------------------------
.. index:: get ID of a semaphore
.. index:: obtain ID of a semaphore
.. index:: rtems_semaphore_ident
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -490,11 +489,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_semaphore_delete: .. _rtems_semaphore_delete:
.. index:: delete a semaphore
.. index:: rtems_semaphore_delete
SEMAPHORE_DELETE - Delete a semaphore SEMAPHORE_DELETE - Delete a semaphore
------------------------------------- -------------------------------------
.. index:: delete a semaphore
.. index:: rtems_semaphore_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -546,13 +545,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_semaphore_obtain: .. _rtems_semaphore_obtain:
SEMAPHORE_OBTAIN - Acquire a semaphore
--------------------------------------
.. index:: obtain a semaphore .. index:: obtain a semaphore
.. index:: lock a semaphore .. index:: lock a semaphore
.. index:: rtems_semaphore_obtain .. index:: rtems_semaphore_obtain
SEMAPHORE_OBTAIN - Acquire a semaphore
--------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -645,13 +644,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_semaphore_release: .. _rtems_semaphore_release:
SEMAPHORE_RELEASE - Release a semaphore
---------------------------------------
.. index:: release a semaphore .. index:: release a semaphore
.. index:: unlock a semaphore .. index:: unlock a semaphore
.. index:: rtems_semaphore_release .. index:: rtems_semaphore_release
SEMAPHORE_RELEASE - Release a semaphore
---------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -706,13 +705,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_semaphore_flush: .. _rtems_semaphore_flush:
SEMAPHORE_FLUSH - Unblock all tasks waiting on a semaphore
----------------------------------------------------------
.. index:: flush a semaphore .. index:: flush a semaphore
.. index:: unblock all tasks waiting on a semaphore .. index:: unblock all tasks waiting on a semaphore
.. index:: rtems_semaphore_flush .. index:: rtems_semaphore_flush
SEMAPHORE_FLUSH - Unblock all tasks waiting on a semaphore
----------------------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -762,11 +761,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_semaphore_set_priority: .. _rtems_semaphore_set_priority:
.. index:: set priority by scheduler for a semaphore
.. index:: rtems_semaphore_set_priority
SEMAPHORE_SET_PRIORITY - Set priority by scheduler for a semaphore SEMAPHORE_SET_PRIORITY - Set priority by scheduler for a semaphore
------------------------------------------------------------------ ------------------------------------------------------------------
.. index:: set priority by scheduler for a semaphore
.. index:: rtems_semaphore_set_priority
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: signals
Signal Manager Signal Manager
************** **************
.. index:: signals
Introduction Introduction
============ ============
@ -22,11 +22,12 @@ communication. The directives provided by the signal manager are:
Background Background
========== ==========
Signal Manager Definitions
--------------------------
.. index:: asynchronous signal routine .. index:: asynchronous signal routine
.. index:: ASR .. index:: ASR
Signal Manager Definitions
--------------------------
The signal manager allows a task to optionally define an asynchronous signal The signal manager allows a task to optionally define an asynchronous signal
routine (ASR). An ASR is to a task what an ISR is to an application's set of routine (ASR). An ASR is to a task what an ISR is to an application's set of
tasks. When the processor is interrupted, the execution of an application is tasks. When the processor is interrupted, the execution of an application is
@ -46,11 +47,12 @@ A signal set is posted when it is directed (or sent) to a task. A pending
signal is a signal that has been sent to a task with a valid ASR, but has not signal is a signal that has been sent to a task with a valid ASR, but has not
been processed by that task's ASR. been processed by that task's ASR.
A Comparison of ASRs and ISRs
-----------------------------
.. index:: ASR vs. ISR .. index:: ASR vs. ISR
.. index:: ISR vs. ASR .. index:: ISR vs. ASR
A Comparison of ASRs and ISRs
-----------------------------
The format of an ASR is similar to that of an ISR with the following The format of an ASR is similar to that of an ISR with the following
exceptions: exceptions:
@ -66,9 +68,10 @@ exceptions:
- An ASR has a task mode which can be different from that of the task. An ISR - An ASR has a task mode which can be different from that of the task. An ISR
does not execute as a task and, as a result, does not have a task mode. does not execute as a task and, as a result, does not have a task mode.
.. index:: signal set, building
Building a Signal Set Building a Signal Set
--------------------- ---------------------
.. index:: signal set, building
A signal set is built by a bitwise OR of the desired signals. The set of valid A signal set is built by a bitwise OR of the desired signals. The set of valid
signals is ``RTEMS_SIGNAL_0`` through ``RTEMS_SIGNAL_31``. If a signal is not signals is ``RTEMS_SIGNAL_0`` through ``RTEMS_SIGNAL_31``. If a signal is not
@ -82,9 +85,10 @@ consisting of ``RTEMS_SIGNAL_6``, ``RTEMS_SIGNAL_15``, and ``RTEMS_SIGNAL_31``.
The signal parameter provided to the ``rtems_signal_send`` directive should be The signal parameter provided to the ``rtems_signal_send`` directive should be
``RTEMS_SIGNAL_6 | RTEMS_SIGNAL_15 | RTEMS_SIGNAL_31``. ``RTEMS_SIGNAL_6 | RTEMS_SIGNAL_15 | RTEMS_SIGNAL_31``.
.. index:: ASR mode, building
Building an ASR Mode Building an ASR Mode
-------------------- --------------------
.. index:: ASR mode, building
In general, an ASR's mode is built by a bitwise OR of the desired mode In general, an ASR's mode is built by a bitwise OR of the desired mode
components. The set of valid mode components is the same as those allowed with components. The set of valid mode components is the same as those allowed with
@ -175,6 +179,8 @@ sending the same signal multiple times to a task (without any intermediate
signal processing occurring for the task), has the same result as sending that signal processing occurring for the task), has the same result as sending that
signal to that task once. signal to that task once.
.. index:: rtems_asr
Processing an ASR Processing an ASR
----------------- -----------------
@ -185,8 +191,6 @@ and ISRs is limited to the meaning of the single argument passed to an ASR.
The ASR should have the following calling sequence and adhere to C calling The ASR should have the following calling sequence and adhere to C calling
conventions: conventions:
.. index:: rtems_asr
.. code-block:: c .. code-block:: c
rtems_asr user_routine( rtems_asr user_routine(
@ -208,13 +212,13 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_signal_catch: .. _rtems_signal_catch:
SIGNAL_CATCH - Establish an ASR
-------------------------------
.. index:: establish an ASR .. index:: establish an ASR
.. index:: install an ASR .. index:: install an ASR
.. index:: rtems_signal_catch .. index:: rtems_signal_catch
SIGNAL_CATCH - Establish an ASR
-------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -269,11 +273,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_signal_send: .. _rtems_signal_send:
.. index:: send signal set
.. index:: rtems_signal_send
SIGNAL_SEND - Send signal set to a task SIGNAL_SEND - Send signal set to a task
--------------------------------------- ---------------------------------------
.. index:: send signal set
.. index:: rtems_signal_send
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,11 +4,12 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: Stack Bounds Checker
.. index:: stack
Stack Bounds Checker Stack Bounds Checker
******************** ********************
.. index:: stack
Introduction Introduction
============ ============

View File

@ -5,6 +5,9 @@
.. COMMENT: Copyright (c) 2017 embedded brains GmbH. .. COMMENT: Copyright (c) 2017 embedded brains GmbH.
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: Symmetric Multiprocessing
.. index:: SMP
Symmetric Multiprocessing (SMP) Symmetric Multiprocessing (SMP)
******************************* *******************************
@ -124,11 +127,12 @@ when a task switch occurred at just the wrong moment. Now there are N-1 tasks
executing in parallel all the time and this results in many more opportunities executing in parallel all the time and this results in many more opportunities
for small windows in critical sections to be hit. for small windows in critical sections to be hit.
Task Affinity
-------------
.. index:: task affinity .. index:: task affinity
.. index:: thread affinity .. index:: thread affinity
Task Affinity
-------------
RTEMS provides services to manipulate the affinity of a task. Affinity is used RTEMS provides services to manipulate the affinity of a task. Affinity is used
to specify the subset of processors in an SMP system on which a particular task to specify the subset of processors in an SMP system on which a particular task
can execute. can execute.
@ -144,11 +148,12 @@ not support affinity, it is likely to ignore all attempts to set affinity.
The scheduler with support for arbitary processor affinities uses a proof of The scheduler with support for arbitary processor affinities uses a proof of
concept implementation. See https://devel.rtems.org/ticket/2510. concept implementation. See https://devel.rtems.org/ticket/2510.
Task Migration
--------------
.. index:: task migration .. index:: task migration
.. index:: thread migration .. index:: thread migration
Task Migration
--------------
With more than one processor in the system tasks can migrate from one processor With more than one processor in the system tasks can migrate from one processor
to another. There are four reasons why tasks migrate in RTEMS. to another. There are four reasons why tasks migrate in RTEMS.

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: tasks
Task Manager Task Manager
************ ************
.. index:: tasks
Introduction Introduction
============ ============
@ -56,9 +56,10 @@ and administer tasks. The directives provided by the task manager are:
Background Background
========== ==========
.. index:: task, definition
Task Definition Task Definition
--------------- ---------------
.. index:: task, definition
Many definitions of a task have been proposed in computer literature. Many definitions of a task have been proposed in computer literature.
Unfortunately, none of these definitions encompasses all facets of the concept Unfortunately, none of these definitions encompasses all facets of the concept
@ -102,9 +103,10 @@ regains control of the processor, its context is restored from the TCB. When a
task is restarted, the initial state of the task is restored from the starting task is restarted, the initial state of the task is restored from the starting
context area in the task's TCB. context area in the task's TCB.
.. index:: task name
Task Name Task Name
--------- ---------
.. index:: task name
By default, the task name is defined by the task object name given to By default, the task name is defined by the task object name given to
:ref:`rtems_task_create() <rtems_task_create>`. The task name can be obtained :ref:`rtems_task_create() <rtems_task_create>`. The task name can be obtained
@ -116,9 +118,10 @@ The maximum size of a task name is defined by the application configuration
option :ref:`CONFIGURE_MAXIMUM_THREAD_NAME_SIZE option :ref:`CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
<CONFIGURE_MAXIMUM_THREAD_NAME_SIZE>`. <CONFIGURE_MAXIMUM_THREAD_NAME_SIZE>`.
.. index:: task states
Task States Task States
----------- -----------
.. index:: task states
A task may exist in one of the following five states: A task may exist in one of the following five states:
@ -140,12 +143,13 @@ tasks appear to execute in parallel, but actually each is dispatched to the CPU
for periods of time determined by the RTEMS scheduling algorithm. The for periods of time determined by the RTEMS scheduling algorithm. The
scheduling of a task is based on its current state and priority. scheduling of a task is based on its current state and priority.
Task Priority
-------------
.. index:: task priority .. index:: task priority
.. index:: priority, task .. index:: priority, task
.. index:: rtems_task_priority .. index:: rtems_task_priority
Task Priority
-------------
A task's priority determines its importance in relation to the other tasks A task's priority determines its importance in relation to the other tasks
executing on the same processor. RTEMS supports 255 levels of priority ranging executing on the same processor. RTEMS supports 255 levels of priority ranging
from 1 to 255. The data type ``rtems_task_priority`` is used to store task from 1 to 255. The data type ``rtems_task_priority`` is used to store task
@ -164,11 +168,12 @@ Priorities are used by the scheduler to determine which ready task will be
allowed to execute. In general, the higher the logical priority of a task, the allowed to execute. In general, the higher the logical priority of a task, the
more likely it is to receive processor execution time. more likely it is to receive processor execution time.
Task Mode
---------
.. index:: task mode .. index:: task mode
.. index:: rtems_task_mode .. index:: rtems_task_mode
Task Mode
---------
A task's execution mode is a combination of the following four components: A task's execution mode is a combination of the following four components:
- preemption - preemption
@ -242,11 +247,12 @@ the task will execute at interrupt level n.
The set of default modes may be selected by specifying the The set of default modes may be selected by specifying the
``RTEMS_DEFAULT_MODES`` constant. ``RTEMS_DEFAULT_MODES`` constant.
Accessing Task Arguments
------------------------
.. index:: task arguments .. index:: task arguments
.. index:: task prototype .. index:: task prototype
Accessing Task Arguments
------------------------
All RTEMS tasks are invoked with a single argument which is specified when they All RTEMS tasks are invoked with a single argument which is specified when they
are started or restarted. The argument is commonly used to communicate startup are started or restarted. The argument is commonly used to communicate startup
information to the task. The simplest manner in which to define a task which information to the task. The simplest manner in which to define a task which
@ -263,9 +269,10 @@ accesses it argument is:
Application tasks requiring more information may view this single argument as Application tasks requiring more information may view this single argument as
an index into an array of parameter blocks. an index into an array of parameter blocks.
.. index:: floating point
Floating Point Considerations Floating Point Considerations
----------------------------- -----------------------------
.. index:: floating point
Creating a task with the ``RTEMS_FLOATING_POINT`` attribute flag results in Creating a task with the ``RTEMS_FLOATING_POINT`` attribute flag results in
additional memory being allocated for the TCB to store the state of the numeric additional memory being allocated for the TCB to store the state of the numeric
@ -313,9 +320,10 @@ consequence of a ``RTEMS_NO_FLOATING_POINT`` task attempting to access the
floating point unit is CPU dependent but will generally result in an exception floating point unit is CPU dependent but will generally result in an exception
condition. condition.
.. index:: task attributes, building
Building a Task Attribute Set Building a Task Attribute Set
----------------------------- -----------------------------
.. index:: task attributes, building
In general, an attribute set is built by a bitwise OR of the desired In general, an attribute set is built by a bitwise OR of the desired
components. The set of valid task attribute components is listed below: components. The set of valid task attribute components is listed below:
@ -347,9 +355,10 @@ attribute_set parameter can be set to ``RTEMS_FLOATING_POINT`` because
and used the numeric coprocessor, then the attribute_set parameter would be and used the numeric coprocessor, then the attribute_set parameter would be
``RTEMS_GLOBAL | RTEMS_FLOATING_POINT``. ``RTEMS_GLOBAL | RTEMS_FLOATING_POINT``.
.. index:: task mode, building
Building a Mode and Mask Building a Mode and Mask
------------------------ ------------------------
.. index:: task mode, building
In general, a mode and its corresponding mask is built by a bitwise OR of the In general, a mode and its corresponding mask is built by a bitwise OR of the
desired components. The set of valid mode constants and each mode's desired components. The set of valid mode constants and each mode's
@ -547,12 +556,12 @@ It is important to note that the ``cpuset`` is not validated until the
``rtems_task_set_affinity`` call is made. At that point, it is validated ``rtems_task_set_affinity`` call is made. At that point, it is validated
against the current system configuration. against the current system configuration.
Transition Advice for Obsolete Notepads
---------------------------------------
.. index:: rtems_task_get_note .. index:: rtems_task_get_note
.. index:: rtems_task_set_note .. index:: rtems_task_set_note
Transition Advice for Obsolete Notepads
---------------------------------------
Task notepads and the associated directives :ref:`rtems_task_get_note` and Task notepads and the associated directives :ref:`rtems_task_get_note` and
:ref:`rtems_task_set_note` were removed in RTEMS 5.1. These were never :ref:`rtems_task_set_note` were removed in RTEMS 5.1. These were never
thread-safe to access and subject to conflicting use of the notepad index by thread-safe to access and subject to conflicting use of the notepad index by
@ -564,13 +573,13 @@ over the key (e.g. notepad index) selection. For most applications, POSIX Keys
should be used. These are available in all RTEMS build configurations. It is should be used. These are available in all RTEMS build configurations. It is
also possible that thread-local storage (TLS) is an option for some use cases. also possible that thread-local storage (TLS) is an option for some use cases.
Transition Advice for Obsolete Task Variables
---------------------------------------------
.. index:: rtems_task_variable_add .. index:: rtems_task_variable_add
.. index:: rtems_task_variable_get .. index:: rtems_task_variable_get
.. index:: rtems_task_variable_delete .. index:: rtems_task_variable_delete
Transition Advice for Obsolete Task Variables
---------------------------------------------
Task notepads and the associated directives :ref:`rtems_task_variable_add`, Task notepads and the associated directives :ref:`rtems_task_variable_add`,
:ref:`rtems_task_variable_get` and :ref:`rtems_task_variable_delete` were :ref:`rtems_task_variable_get` and :ref:`rtems_task_variable_delete` were
removed in RTEMS 5.1. Task variables must be replaced by POSIX Keys or removed in RTEMS 5.1. Task variables must be replaced by POSIX Keys or
@ -590,11 +599,11 @@ related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_task_create: .. _rtems_task_create:
.. index:: create a task
.. index:: rtems_task_create
TASK_CREATE - Create a task TASK_CREATE - Create a task
--------------------------- ---------------------------
.. index:: create a task
.. index:: rtems_task_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -735,11 +744,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_ident: .. _rtems_task_ident:
.. index:: get ID of a task
.. index:: rtems_task_ident
TASK_IDENT - Get ID of a task TASK_IDENT - Get ID of a task
----------------------------- -----------------------------
.. index:: get ID of a task
.. index:: rtems_task_ident
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -789,11 +798,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_self: .. _rtems_task_self:
.. index:: obtain ID of caller
.. index:: rtems_task_self
TASK_SELF - Obtain ID of caller TASK_SELF - Obtain ID of caller
------------------------------- -------------------------------
.. index:: obtain ID of caller
.. index:: rtems_task_self
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -815,11 +824,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_start: .. _rtems_task_start:
.. index:: starting a task
.. index:: rtems_task_start
TASK_START - Start a task TASK_START - Start a task
------------------------- -------------------------
.. index:: starting a task
.. index:: rtems_task_start
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -869,11 +878,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_restart: .. _rtems_task_restart:
.. index:: restarting a task
.. index:: rtems_task_restart
TASK_RESTART - Restart a task TASK_RESTART - Restart a task
----------------------------- -----------------------------
.. index:: restarting a task
.. index:: rtems_task_restart
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -931,11 +940,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_delete: .. _rtems_task_delete:
.. index:: deleting a task
.. index:: rtems_task_delete
TASK_DELETE - Delete a task TASK_DELETE - Delete a task
--------------------------- ---------------------------
.. index:: deleting a task
.. index:: rtems_task_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -987,11 +996,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_suspend: .. _rtems_task_suspend:
.. index:: suspending a task
.. index:: rtems_task_suspend
TASK_SUSPEND - Suspend a task TASK_SUSPEND - Suspend a task
----------------------------- -----------------------------
.. index:: suspending a task
.. index:: rtems_task_suspend
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1034,11 +1043,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_resume: .. _rtems_task_resume:
.. index:: resuming a task
.. index:: rtems_task_resume
TASK_RESUME - Resume a task TASK_RESUME - Resume a task
--------------------------- ---------------------------
.. index:: resuming a task
.. index:: rtems_task_resume
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1079,11 +1088,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_is_suspended: .. _rtems_task_is_suspended:
.. index:: is task suspended
.. index:: rtems_task_is_suspended
TASK_IS_SUSPENDED - Determine if a task is Suspended TASK_IS_SUSPENDED - Determine if a task is Suspended
---------------------------------------------------- ----------------------------------------------------
.. index:: is task suspended
.. index:: rtems_task_is_suspended
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1117,15 +1126,15 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_set_priority: .. _rtems_task_set_priority:
TASK_SET_PRIORITY - Set task priority
-------------------------------------
.. index:: rtems_task_set_priority .. index:: rtems_task_set_priority
.. index:: current task priority .. index:: current task priority
.. index:: set task priority .. index:: set task priority
.. index:: get task priority .. index:: get task priority
.. index:: obtain task priority .. index:: obtain task priority
TASK_SET_PRIORITY - Set task priority
-------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1181,14 +1190,14 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_get_priority: .. _rtems_task_get_priority:
TASK_GET_PRIORITY - Get task priority
-------------------------------------
.. index:: rtems_task_get_priority .. index:: rtems_task_get_priority
.. index:: current task priority .. index:: current task priority
.. index:: get task priority .. index:: get task priority
.. index:: obtain task priority .. index:: obtain task priority
TASK_GET_PRIORITY - Get task priority
-------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1230,9 +1239,6 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_mode: .. _rtems_task_mode:
TASK_MODE - Change the current task mode
----------------------------------------
.. index:: current task mode .. index:: current task mode
.. index:: set task mode .. index:: set task mode
.. index:: get task mode .. index:: get task mode
@ -1241,6 +1247,9 @@ TASK_MODE - Change the current task mode
.. index:: obtain task mode .. index:: obtain task mode
.. index:: rtems_task_mode .. index:: rtems_task_mode
TASK_MODE - Change the current task mode
----------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1309,13 +1318,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_wake_after: .. _rtems_task_wake_after:
TASK_WAKE_AFTER - Wake up after interval
----------------------------------------
.. index:: delay a task for an interval .. index:: delay a task for an interval
.. index:: wake up after an interval .. index:: wake up after an interval
.. index:: rtems_task_wake_after .. index:: rtems_task_wake_after
TASK_WAKE_AFTER - Wake up after interval
----------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1352,13 +1361,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_wake_when: .. _rtems_task_wake_when:
TASK_WAKE_WHEN - Wake up when specified
---------------------------------------
.. index:: delay a task until a wall time .. index:: delay a task until a wall time
.. index:: wake up at a wall time .. index:: wake up at a wall time
.. index:: rtems_task_wake_when .. index:: rtems_task_wake_when
TASK_WAKE_WHEN - Wake up when specified
---------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1608,11 +1617,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_iterate: .. _rtems_task_iterate:
.. index:: iterate over all threads
.. index:: rtems_task_iterate
TASK_ITERATE - Iterate Over Tasks TASK_ITERATE - Iterate Over Tasks
--------------------------------- ---------------------------------
.. index:: iterate over all threads
.. index:: rtems_task_iterate
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -1650,10 +1659,10 @@ Deprecated and Removed Directives
\clearpage \clearpage
.. _rtems_iterate_over_all_threads: .. _rtems_iterate_over_all_threads:
.. index:: rtems_iterate_over_all_threads
ITERATE_OVER_ALL_THREADS - Iterate Over Tasks ITERATE_OVER_ALL_THREADS - Iterate Over Tasks
--------------------------------------------- ---------------------------------------------
.. index:: rtems_iterate_over_all_threads
.. warning:: .. warning::
@ -1689,11 +1698,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_get_note: .. _rtems_task_get_note:
.. index:: get task notepad entry
.. index:: rtems_task_get_note
TASK_GET_NOTE - Get task notepad entry TASK_GET_NOTE - Get task notepad entry
-------------------------------------- --------------------------------------
.. index:: get task notepad entry
.. index:: rtems_task_get_note
.. warning:: .. warning::
@ -1742,11 +1751,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_set_note: .. _rtems_task_set_note:
.. index:: set task notepad entry
.. index:: rtems_task_set_note
TASK_SET_NOTE - Set task notepad entry TASK_SET_NOTE - Set task notepad entry
-------------------------------------- --------------------------------------
.. index:: set task notepad entry
.. index:: rtems_task_set_note
.. warning:: .. warning::
@ -1794,14 +1803,14 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_variable_add: .. _rtems_task_variable_add:
TASK_VARIABLE_ADD - Associate per task variable
-----------------------------------------------
.. index:: per-task variable .. index:: per-task variable
.. index:: task private variable .. index:: task private variable
.. index:: task private data .. index:: task private data
.. index:: rtems_task_variable_add .. index:: rtems_task_variable_add
TASK_VARIABLE_ADD - Associate per task variable
-----------------------------------------------
.. warning:: .. warning::
This directive was removed in RTEMS 5.1. This directive was removed in RTEMS 5.1.
@ -1857,13 +1866,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_variable_get: .. _rtems_task_variable_get:
TASK_VARIABLE_GET - Obtain value of a per task variable
-------------------------------------------------------
.. index:: get per-task variable .. index:: get per-task variable
.. index:: obtain per-task variable .. index:: obtain per-task variable
.. index:: rtems_task_variable_get .. index:: rtems_task_variable_get
TASK_VARIABLE_GET - Obtain value of a per task variable
-------------------------------------------------------
.. warning:: .. warning::
This directive was removed in RTEMS 5.1. This directive was removed in RTEMS 5.1.
@ -1914,14 +1923,14 @@ NOTES:
\clearpage \clearpage
.. _rtems_task_variable_delete: .. _rtems_task_variable_delete:
TASK_VARIABLE_DELETE - Remove per task variable
-----------------------------------------------
.. index:: per-task variable .. index:: per-task variable
.. index:: task private variable .. index:: task private variable
.. index:: task private data .. index:: task private data
.. index:: rtems_task_variable_delete .. index:: rtems_task_variable_delete
TASK_VARIABLE_DELETE - Remove per task variable
-----------------------------------------------
.. warning:: .. warning::
This directive was removed in RTEMS 5.1. This directive was removed in RTEMS 5.1.

View File

@ -4,11 +4,11 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: timers
Timer Manager Timer Manager
************* *************
.. index:: timers
Introduction Introduction
============ ============
@ -84,14 +84,14 @@ service routine finished its work.
The Timer Server is designed to remain blocked until a task-based timer fires. The Timer Server is designed to remain blocked until a task-based timer fires.
This reduces the execution overhead of the Timer Server. This reduces the execution overhead of the Timer Server.
.. index:: rtems_timer_service_routine
Timer Service Routines Timer Service Routines
---------------------- ----------------------
The timer service routine should adhere to C calling conventions and have a The timer service routine should adhere to C calling conventions and have a
prototype similar to the following: prototype similar to the following:
.. index:: rtems_timer_service_routine
.. code-block:: c .. code-block:: c
rtems_timer_service_routine user_routine( rtems_timer_service_routine user_routine(
@ -195,11 +195,11 @@ related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_timer_create: .. _rtems_timer_create:
.. index:: create a timer
.. index:: rtems_timer_create
TIMER_CREATE - Create a timer TIMER_CREATE - Create a timer
----------------------------- -----------------------------
.. index:: create a timer
.. index:: rtems_timer_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -241,11 +241,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_ident: .. _rtems_timer_ident:
.. index:: obtain the ID of a timer
.. index:: rtems_timer_ident
TIMER_IDENT - Get ID of a timer TIMER_IDENT - Get ID of a timer
------------------------------- -------------------------------
.. index:: obtain the ID of a timer
.. index:: rtems_timer_ident
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -281,11 +281,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_cancel: .. _rtems_timer_cancel:
.. index:: cancel a timer
.. index:: rtems_timer_cancel
TIMER_CANCEL - Cancel a timer TIMER_CANCEL - Cancel a timer
----------------------------- -----------------------------
.. index:: cancel a timer
.. index:: rtems_timer_cancel
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -316,11 +316,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_delete: .. _rtems_timer_delete:
.. index:: delete a timer
.. index:: rtems_timer_delete
TIMER_DELETE - Delete a timer TIMER_DELETE - Delete a timer
----------------------------- -----------------------------
.. index:: delete a timer
.. index:: rtems_timer_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -355,11 +355,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_fire_after: .. _rtems_timer_fire_after:
.. index:: fire a timer after an interval
.. index:: rtems_timer_fire_after
TIMER_FIRE_AFTER - Fire timer after interval TIMER_FIRE_AFTER - Fire timer after interval
-------------------------------------------- --------------------------------------------
.. index:: fire a timer after an interval
.. index:: rtems_timer_fire_after
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -399,11 +399,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_fire_when: .. _rtems_timer_fire_when:
.. index:: fire a timer at wall time
.. index:: rtems_timer_fire_when
TIMER_FIRE_WHEN - Fire timer when specified TIMER_FIRE_WHEN - Fire timer when specified
------------------------------------------- -------------------------------------------
.. index:: fire a timer at wall time
.. index:: rtems_timer_fire_when
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -447,11 +447,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_initiate_server: .. _rtems_timer_initiate_server:
.. index:: initiate the Timer Server
.. index:: rtems_timer_initiate_server
TIMER_INITIATE_SERVER - Initiate server for task-based timers TIMER_INITIATE_SERVER - Initiate server for task-based timers
------------------------------------------------------------- -------------------------------------------------------------
.. index:: initiate the Timer Server
.. index:: rtems_timer_initiate_server
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -492,11 +492,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_server_fire_after: .. _rtems_timer_server_fire_after:
.. index:: fire task-based a timer after an interval
.. index:: rtems_timer_server_fire_after
TIMER_SERVER_FIRE_AFTER - Fire task-based timer after interval TIMER_SERVER_FIRE_AFTER - Fire task-based timer after interval
-------------------------------------------------------------- --------------------------------------------------------------
.. index:: fire task-based a timer after an interval
.. index:: rtems_timer_server_fire_after
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -540,11 +540,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_server_fire_when: .. _rtems_timer_server_fire_when:
.. index:: fire a task-based timer at wall time
.. index:: rtems_timer_server_fire_when
TIMER_SERVER_FIRE_WHEN - Fire task-based timer when specified TIMER_SERVER_FIRE_WHEN - Fire task-based timer when specified
------------------------------------------------------------- -------------------------------------------------------------
.. index:: fire a task-based timer at wall time
.. index:: rtems_timer_server_fire_when
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -592,11 +592,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_timer_reset: .. _rtems_timer_reset:
.. index:: reset a timer
.. index:: rtems_timer_reset
TIMER_RESET - Reset an interval timer TIMER_RESET - Reset an interval timer
------------------------------------- -------------------------------------
.. index:: reset a timer
.. index:: rtems_timer_reset
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -4,6 +4,8 @@
.. COMMENT: On-Line Applications Research Corporation (OAR). .. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. index:: TImespec Helpers
Timespec Helpers Timespec Helpers
**************** ****************
@ -124,11 +126,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_timespec_set: .. _rtems_timespec_set:
.. index:: set struct timespec instance
.. index:: rtems_timespec_set
TIMESPEC_SET - Set struct timespec Instance TIMESPEC_SET - Set struct timespec Instance
------------------------------------------- -------------------------------------------
.. index:: set struct timespec instance
.. index:: rtems_timespec_set
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -155,10 +157,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_zero: .. _rtems_timespec_zero:
.. index:: rtems_timespec_zero
TIMESPEC_ZERO - Zero struct timespec Instance TIMESPEC_ZERO - Zero struct timespec Instance
--------------------------------------------- ---------------------------------------------
.. index:: rtems_timespec_zero
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -182,10 +184,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_is_valid: .. _rtems_timespec_is_valid:
.. index:: rtems_timespec_is_valid
TIMESPEC_IS_VALID - Check validity of a struct timespec instance TIMESPEC_IS_VALID - Check validity of a struct timespec instance
---------------------------------------------------------------- ----------------------------------------------------------------
.. index:: rtems_timespec_is_valid
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -211,10 +213,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_add_to: .. _rtems_timespec_add_to:
.. index:: rtems_timespec_add_to
TIMESPEC_ADD_TO - Add Two struct timespec Instances TIMESPEC_ADD_TO - Add Two struct timespec Instances
--------------------------------------------------- ---------------------------------------------------
.. index:: rtems_timespec_add_to
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -240,10 +242,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_subtract: .. _rtems_timespec_subtract:
.. index:: rtems_timespec_subtract
TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances
---------------------------------------------------------- ----------------------------------------------------------
.. index:: rtems_timespec_subtract
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -274,10 +276,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_divide: .. _rtems_timespec_divide:
.. index:: rtems_timespec_divide
TIMESPEC_DIVIDE - Divide Two struct timespec Instances TIMESPEC_DIVIDE - Divide Two struct timespec Instances
------------------------------------------------------ ------------------------------------------------------
.. index:: rtems_timespec_divide
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -314,10 +316,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_divide_by_integer: .. _rtems_timespec_divide_by_integer:
.. index:: rtems_timespec_divide_by_integer
TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
.. index:: rtems_timespec_divide_by_integer
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -345,10 +347,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_less_than: .. _rtems_timespec_less_than:
.. index:: rtems_timespec_less_than
TIMESPEC_LESS_THAN - Less than operator TIMESPEC_LESS_THAN - Less than operator
--------------------------------------- ---------------------------------------
.. index:: rtems_timespec_less_than
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -375,10 +377,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_greater_than: .. _rtems_timespec_greater_than:
.. index:: rtems_timespec_greater_than
TIMESPEC_GREATER_THAN - Greater than operator TIMESPEC_GREATER_THAN - Greater than operator
--------------------------------------------- ---------------------------------------------
.. index:: rtems_timespec_greater_than
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -403,10 +405,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_equal_to: .. _rtems_timespec_equal_to:
.. index:: rtems_timespec_equal_to
TIMESPEC_EQUAL_TO - Check equality of timespecs TIMESPEC_EQUAL_TO - Check equality of timespecs
----------------------------------------------- -----------------------------------------------
.. index:: rtems_timespec_equal_to
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -431,10 +433,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_get_seconds: .. _rtems_timespec_get_seconds:
.. index:: rtems_timespec_get_seconds
TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance
---------------------------------------------------------------------- ----------------------------------------------------------------------
.. index:: rtems_timespec_get_seconds
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -459,10 +461,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_get_nanoseconds: .. _rtems_timespec_get_nanoseconds:
.. index:: rtems_timespec_get_nanoseconds
TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance
---------------------------------------------------------------------------------- ----------------------------------------------------------------------------------
.. index:: rtems_timespec_get_nanoseconds
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -487,10 +489,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_to_ticks: .. _rtems_timespec_to_ticks:
.. index:: rtems_timespec_to_ticks
TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks
------------------------------------------------------------- -------------------------------------------------------------
.. index:: rtems_timespec_to_ticks
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -514,10 +516,10 @@ NOTES:
\clearpage \clearpage
.. _rtems_timespec_from_ticks: .. _rtems_timespec_from_ticks:
.. index:: rtems_timespec_from_ticks
TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation
--------------------------------------------------------------------- ---------------------------------------------------------------------
.. index:: rtems_timespec_from_ticks
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c

View File

@ -5,12 +5,11 @@
.. COMMENT: All rights reserved. .. COMMENT: All rights reserved.
.. _User Extensions Manager: .. _User Extensions Manager:
.. index:: user extensions
User Extensions Manager User Extensions Manager
*********************** ***********************
.. index:: user extensions
Introduction Introduction
============ ============
@ -62,11 +61,12 @@ dynamic memory allocations and object creation/deletion. Some user extensions
are invoked with thread dispatching disabled. The fatal error extension is are invoked with thread dispatching disabled. The fatal error extension is
invoked in an arbitrary context. invoked in an arbitrary context.
Extension Sets
--------------
.. index:: user extension set .. index:: user extension set
.. index:: rtems_extensions_table .. index:: rtems_extensions_table
Extension Sets
--------------
User extensions are maintained as a set. All user extensions are optional and User extensions are maintained as a set. All user extensions are optional and
may be `NULL`. Together a set of these user extensions typically performs a may be `NULL`. Together a set of these user extensions typically performs a
specific functionality such as performance monitoring or debugger support. The specific functionality such as performance monitoring or debugger support. The
@ -86,9 +86,10 @@ extension set is defined via the following structure.
rtems_task_terminate_extension thread_terminate; rtems_task_terminate_extension thread_terminate;
} rtems_extensions_table; } rtems_extensions_table;
.. index:: TCB extension area
TCB Extension Area TCB Extension Area
------------------ ------------------
.. index:: TCB extension area
There is no system-provided storage for the initial extension sets. There is no system-provided storage for the initial extension sets.
@ -169,6 +170,8 @@ installed after the Standard C Library will operate correctly even if they
utilize the C Library because the C Library's thread delete extension is utilize the C Library because the C Library's thread delete extension is
invoked after that of the other thread delete extensions. invoked after that of the other thread delete extensions.
.. index:: rtems_task_create_extension
Thread Create Extension Thread Create Extension
----------------------- -----------------------
@ -176,8 +179,6 @@ The thread create extension is invoked during thread creation, for example
via :ref:`rtems_task_create() <rtems_task_create>` or :c:func:`pthread_create`. via :ref:`rtems_task_create() <rtems_task_create>` or :c:func:`pthread_create`.
The thread create extension is defined as follows. The thread create extension is defined as follows.
.. index:: rtems_task_create_extension
.. code-block:: c .. code-block:: c
typedef bool ( *rtems_task_create_extension )( typedef bool ( *rtems_task_create_extension )(
@ -202,6 +203,8 @@ must return :c:data:`true`.
The thread create extension is invoked in forward order with thread dispatching The thread create extension is invoked in forward order with thread dispatching
enabled (except during system initialization). enabled (except during system initialization).
.. index:: rtems_task_start_extension
Thread Start Extension Thread Start Extension
---------------------- ----------------------
@ -209,8 +212,6 @@ The thread start extension is invoked during a thread start, for example
via :ref:`rtems_task_start() <rtems_task_start>` or :c:func:`pthread_create`. via :ref:`rtems_task_start() <rtems_task_start>` or :c:func:`pthread_create`.
The thread start extension is defined as follows. The thread start extension is defined as follows.
.. index:: rtems_task_start_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_start_extension )( typedef void ( *rtems_task_start_extension )(
@ -228,6 +229,8 @@ invoked.
The thread start extension is invoked in forward order with thread dispatching The thread start extension is invoked in forward order with thread dispatching
disabled. disabled.
.. index:: rtems_task_restart_extension
Thread Restart Extension Thread Restart Extension
------------------------ ------------------------
@ -235,8 +238,6 @@ The thread restart extension is invoked during a thread restart, for example
via :ref:`rtems_task_restart() <rtems_task_start>`. via :ref:`rtems_task_restart() <rtems_task_start>`.
The thread restart extension is defined as follows. The thread restart extension is defined as follows.
.. index:: rtems_task_restart_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_restart_extension )( typedef void ( *rtems_task_restart_extension )(
@ -254,6 +255,8 @@ dispatching enabled (except during system initialization). The thread life is
protected. Thread restart and delete requests issued by thread restart protected. Thread restart and delete requests issued by thread restart
extensions lead to recursion. extensions lead to recursion.
.. index:: rtems_task_switch_extension
Thread Switch Extension Thread Switch Extension
----------------------- -----------------------
@ -261,8 +264,6 @@ The thread switch extension is invoked before the context switch from the
currently executing thread to the heir thread. The thread switch extension is currently executing thread to the heir thread. The thread switch extension is
defined as follows. defined as follows.
.. index:: rtems_task_switch_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_switch_extension )( typedef void ( *rtems_task_switch_extension )(
@ -280,14 +281,14 @@ SMP lock is owned.
The context switches initiated through the multitasking start are not covered The context switches initiated through the multitasking start are not covered
by the thread switch extension. by the thread switch extension.
.. index:: rtems_task_begin_extension
Thread Begin Extension Thread Begin Extension
---------------------- ----------------------
The thread begin extension is invoked during a thread begin before the thread The thread begin extension is invoked during a thread begin before the thread
entry function is called. The thread begin extension is defined as follows. entry function is called. The thread begin extension is defined as follows.
.. index:: rtems_task_begin_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_begin_extension )( typedef void ( *rtems_task_begin_extension )(
@ -303,14 +304,14 @@ The thread begin extension is invoked in forward order with thread dispatching
enabled. The thread switch extension may be called multiple times for this enabled. The thread switch extension may be called multiple times for this
thread before the thread begin extension is invoked. thread before the thread begin extension is invoked.
.. index:: rtems_task_exitted_extension
Thread Exitted Extension Thread Exitted Extension
------------------------ ------------------------
The thread exitted extension is invoked once the thread entry function returns. The thread exitted extension is invoked once the thread entry function returns.
The thread exitted extension is defined as follows. The thread exitted extension is defined as follows.
.. index:: rtems_task_exitted_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_exitted_extension )( typedef void ( *rtems_task_exitted_extension )(
@ -322,6 +323,8 @@ thread.
This extension is invoked in forward order with thread dispatching enabled. This extension is invoked in forward order with thread dispatching enabled.
.. index:: rtems_task_terminate_extension
Thread Termination Extension Thread Termination Extension
---------------------------- ----------------------------
@ -331,8 +334,6 @@ due to calls of :ref:`rtems_task_delete() <rtems_task_delete>`,
:c:func:`pthread_exit`, or :c:func:`pthread_cancel`. The thread termination :c:func:`pthread_exit`, or :c:func:`pthread_cancel`. The thread termination
extension is defined as follows. extension is defined as follows.
.. index:: rtems_task_terminate_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_terminate_extension )( typedef void ( *rtems_task_terminate_extension )(
@ -351,6 +352,8 @@ The thread terminate extension is invoked in reverse order with thread
dispatching enabled. The thread life is protected. Thread restart and delete dispatching enabled. The thread life is protected. Thread restart and delete
requests issued by thread terminate extensions lead to recursion. requests issued by thread terminate extensions lead to recursion.
.. index:: rtems_task_delete_extension
Thread Delete Extension Thread Delete Extension
----------------------- -----------------------
@ -358,8 +361,6 @@ The thread delete extension is invoked in case a zombie thread is killed. A
thread becomes a zombie thread after it terminated. The thread delete thread becomes a zombie thread after it terminated. The thread delete
extension is defined as follows. extension is defined as follows.
.. index:: rtems_task_delete_extension
.. code-block:: c .. code-block:: c
typedef void ( *rtems_task_delete_extension )( typedef void ( *rtems_task_delete_extension )(
@ -383,14 +384,14 @@ must first terminate and this may take some time. The thread delete extension
is invoked by :ref:`rtems_task_create() <rtems_task_create>` or similar as a is invoked by :ref:`rtems_task_create() <rtems_task_create>` or similar as a
result of a lazy garbage collection of zombie threads. result of a lazy garbage collection of zombie threads.
.. index:: rtems_fatal_extension
Fatal Error Extension Fatal Error Extension
--------------------- ---------------------
The fatal error extension is invoked during :ref:`system termination The fatal error extension is invoked during :ref:`system termination
<Terminate>`. The fatal error extension is defined as follows. <Terminate>`. The fatal error extension is defined as follows.
.. index:: rtems_fatal_extension
.. code-block:: c .. code-block:: c
typedef void( *rtems_fatal_extension )( typedef void( *rtems_fatal_extension )(
@ -424,11 +425,11 @@ sequence, related constants, usage, and status codes.
\clearpage \clearpage
.. _rtems_extension_create: .. _rtems_extension_create:
.. index:: create an extension set
.. index:: rtems_extension_create
EXTENSION_CREATE - Create a extension set EXTENSION_CREATE - Create a extension set
----------------------------------------- -----------------------------------------
.. index:: create an extension set
.. index:: rtems_extension_create
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -472,13 +473,13 @@ NOTES:
\clearpage \clearpage
.. _rtems_extension_ident: .. _rtems_extension_ident:
EXTENSION_IDENT - Get ID of a extension set
-------------------------------------------
.. index:: get ID of an extension set .. index:: get ID of an extension set
.. index:: obtain ID of an extension set .. index:: obtain ID of an extension set
.. index:: rtems_extension_ident .. index:: rtems_extension_ident
EXTENSION_IDENT - Get ID of a extension set
-------------------------------------------
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
@ -513,11 +514,11 @@ NOTES:
\clearpage \clearpage
.. _rtems_extension_delete: .. _rtems_extension_delete:
.. index:: delete an extension set
.. index:: rtems_extension_delete
EXTENSION_DELETE - Delete a extension set EXTENSION_DELETE - Delete a extension set
----------------------------------------- -----------------------------------------
.. index:: delete an extension set
.. index:: rtems_extension_delete
CALLING SEQUENCE: CALLING SEQUENCE:
.. code-block:: c .. code-block:: c