mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-15 08:47:19 +08:00
parent
42d50d760e
commit
6c5640131f
@ -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.
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
@ -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
|
||||||
|
@ -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
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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``.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
****************
|
****************
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
============
|
============
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user