mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-15 02:16:41 +08:00
parent
42d50d760e
commit
6c5640131f
@ -6,11 +6,11 @@
|
||||
|
||||
.. _ada_support
|
||||
|
||||
.. index:: Ada
|
||||
|
||||
Ada Support
|
||||
************
|
||||
|
||||
.. index:: Ada
|
||||
|
||||
Introduction
|
||||
============
|
||||
RTEMS has long had support for the Ada programming language
|
||||
@ -24,7 +24,7 @@ components to this 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
|
||||
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
|
||||
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
|
||||
which execute in the context of a task rather than the clock tick
|
||||
Interrupt Service Routine. Similarly, there is support for Interrupt Tasks
|
||||
which is a mechanism to defer the processing of the event from the
|
||||
hardware interrupt level to a thread.
|
||||
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: barrier
|
||||
|
||||
Barrier Manager
|
||||
***************
|
||||
|
||||
.. index:: barrier
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -162,11 +162,12 @@ sequence, related constants, usage, and status codes.
|
||||
|
||||
.. _rtems_barrier_create:
|
||||
|
||||
BARRIER_CREATE - Create a barrier
|
||||
---------------------------------
|
||||
.. index:: create a barrier
|
||||
.. index:: rtems_barrier_create
|
||||
|
||||
BARRIER_CREATE - Create a barrier
|
||||
---------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -237,12 +238,13 @@ NOTES:
|
||||
|
||||
.. _rtems_barrier_ident:
|
||||
|
||||
BARRIER_IDENT - Get ID of a barrier
|
||||
-----------------------------------
|
||||
.. index:: get ID of a barrier
|
||||
.. index:: obtain ID of a barrier
|
||||
.. index:: rtems_barrier_ident
|
||||
|
||||
BARRIER_IDENT - Get ID of a barrier
|
||||
-----------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -278,11 +280,12 @@ NOTES:
|
||||
|
||||
.. _rtems_barrier_delete:
|
||||
|
||||
BARRIER_DELETE - Delete a barrier
|
||||
---------------------------------
|
||||
.. index:: delete a barrier
|
||||
.. index:: rtems_barrier_delete
|
||||
|
||||
BARRIER_DELETE - Delete a barrier
|
||||
---------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -320,12 +323,13 @@ NOTES:
|
||||
|
||||
.. _rtems_barrier_wait:
|
||||
|
||||
BARRIER_OBTAIN - Acquire a barrier
|
||||
----------------------------------
|
||||
.. index:: obtain a barrier
|
||||
.. index:: lock a barrier
|
||||
.. index:: rtems_barrier_wait
|
||||
|
||||
BARRIER_OBTAIN - Acquire a barrier
|
||||
----------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -394,12 +398,13 @@ NOTES:
|
||||
|
||||
.. _rtems_barrier_release:
|
||||
|
||||
BARRIER_RELEASE - Release a barrier
|
||||
-----------------------------------
|
||||
.. index:: wait at a barrier
|
||||
.. index:: release a barrier
|
||||
.. index:: rtems_barrier_release
|
||||
|
||||
BARRIER_RELEASE - Release a barrier
|
||||
-----------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -9,10 +9,10 @@ Board Support Packages
|
||||
|
||||
.. index:: Board Support Packages
|
||||
.. index:: BSPs
|
||||
.. index:: BSP, definition
|
||||
|
||||
Introduction
|
||||
============
|
||||
.. index:: BSP, definition
|
||||
|
||||
A board support package (BSP) is a collection of user-provided facilities which
|
||||
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
|
||||
chain. This is an example of a pool of buffers.
|
||||
|
||||
.. index:: chain iterate
|
||||
|
||||
Iterating a Chain
|
||||
-----------------
|
||||
.. index:: chain iterate
|
||||
|
||||
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
|
||||
@ -219,11 +220,12 @@ The section details the Chains directives.
|
||||
|
||||
.. _rtems_chain_initialize:
|
||||
|
||||
Initialize Chain With Nodes
|
||||
---------------------------
|
||||
.. index:: chain initialize
|
||||
.. index:: rtems_chain_initialize
|
||||
|
||||
Initialize Chain With Nodes
|
||||
---------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -256,11 +258,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_initialize_empty:
|
||||
|
||||
Initialize Empty
|
||||
----------------
|
||||
.. index:: chain initialize empty
|
||||
.. index:: rtems_chain_initialize_empty
|
||||
|
||||
Initialize Empty
|
||||
----------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -284,11 +287,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_is_null_node:
|
||||
|
||||
Is Null Node ?
|
||||
--------------
|
||||
.. index:: chain is node null
|
||||
.. index:: rtems_chain_is_null_node
|
||||
|
||||
Is Null Node ?
|
||||
--------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -309,11 +313,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_head:
|
||||
|
||||
Head
|
||||
----
|
||||
.. index:: chain get head
|
||||
.. index:: rtems_chain_head
|
||||
|
||||
Head
|
||||
----
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -333,11 +338,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_tail:
|
||||
|
||||
Tail
|
||||
----
|
||||
.. index:: chain get tail
|
||||
.. index:: rtems_chain_tail
|
||||
|
||||
Tail
|
||||
----
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -357,11 +363,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_are_nodes_equal:
|
||||
|
||||
Are Two Nodes Equal ?
|
||||
---------------------
|
||||
.. index:: chare are nodes equal
|
||||
.. index:: rtems_chain_are_nodes_equal
|
||||
|
||||
Are Two Nodes Equal ?
|
||||
---------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -384,11 +391,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_is_empty:
|
||||
|
||||
Is the Chain Empty
|
||||
------------------
|
||||
.. index:: chain is chain empty
|
||||
.. index:: rtems_chain_is_empty
|
||||
|
||||
Is the Chain Empty
|
||||
------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -410,11 +418,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_is_first:
|
||||
|
||||
Is this the First Node on the Chain ?
|
||||
-------------------------------------
|
||||
.. index:: chain is node the first
|
||||
.. index:: rtems_chain_is_first
|
||||
|
||||
Is this the First Node on the Chain ?
|
||||
-------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -436,11 +445,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_is_last:
|
||||
|
||||
Is this the Last Node on the Chain ?
|
||||
------------------------------------
|
||||
.. index:: chain is node the last
|
||||
.. index:: rtems_chain_is_last
|
||||
|
||||
Is this the Last Node on the Chain ?
|
||||
------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -462,11 +472,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_has_only_one_node:
|
||||
|
||||
Does this Chain have only One Node ?
|
||||
------------------------------------
|
||||
.. index:: chain only one node
|
||||
.. index:: rtems_chain_has_only_one_node
|
||||
|
||||
Does this Chain have only One Node ?
|
||||
------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -488,11 +499,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_node_count_unprotected:
|
||||
|
||||
Returns the node count of the chain (unprotected)
|
||||
-------------------------------------------------
|
||||
.. index:: chain only one node
|
||||
.. index:: rtems_chain_node_count_unprotected
|
||||
|
||||
Returns the node count of the chain (unprotected)
|
||||
-------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -512,11 +524,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_is_head:
|
||||
|
||||
Is this Node the Chain Head ?
|
||||
-----------------------------
|
||||
.. index:: chain is node the head
|
||||
.. index:: rtems_chain_is_head
|
||||
|
||||
Is this Node the Chain Head ?
|
||||
-----------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -539,11 +552,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_is_tail:
|
||||
|
||||
Is this Node the Chain Tail ?
|
||||
-----------------------------
|
||||
.. index:: chain is node the tail
|
||||
.. index:: rtems_chain_is_tail
|
||||
|
||||
Is this Node the Chain Tail ?
|
||||
-----------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -566,11 +580,12 @@ DESCRIPTION:
|
||||
|
||||
.. _rtems_chain_extract:
|
||||
|
||||
Extract a Node
|
||||
--------------
|
||||
.. index:: chain extract a node
|
||||
.. index:: rtems_chain_extract
|
||||
|
||||
Extract a Node
|
||||
--------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -596,11 +611,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_extract_unprotected:
|
||||
|
||||
Extract a Node (unprotected)
|
||||
----------------------------
|
||||
.. index:: chain extract a node unprotected
|
||||
.. index:: rtems_chain_extract_unprotected
|
||||
|
||||
Extract a Node (unprotected)
|
||||
----------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -623,11 +639,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_get:
|
||||
|
||||
Get the First Node
|
||||
------------------
|
||||
.. index:: chain get first node
|
||||
.. index:: rtems_chain_get
|
||||
|
||||
Get the First Node
|
||||
------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -655,11 +672,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_get_unprotected:
|
||||
|
||||
Get the First Node (unprotected)
|
||||
--------------------------------
|
||||
.. index:: chain get first node
|
||||
.. index:: rtems_chain_get_unprotected
|
||||
|
||||
Get the First Node (unprotected)
|
||||
--------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -683,11 +701,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_insert:
|
||||
|
||||
Insert a Node
|
||||
-------------
|
||||
.. index:: chain insert a node
|
||||
.. index:: rtems_chain_insert
|
||||
|
||||
Insert a Node
|
||||
-------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -715,11 +734,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_insert_unprotected:
|
||||
|
||||
Insert a Node (unprotected)
|
||||
---------------------------
|
||||
.. index:: chain insert a node unprotected
|
||||
.. index:: rtems_chain_insert_unprotected
|
||||
|
||||
Insert a Node (unprotected)
|
||||
---------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -744,11 +764,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_append:
|
||||
|
||||
Append a Node
|
||||
-------------
|
||||
.. index:: chain append a node
|
||||
.. index:: rtems_chain_append
|
||||
|
||||
Append a Node
|
||||
-------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -775,11 +796,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_append_unprotected:
|
||||
|
||||
Append a Node (unprotected)
|
||||
---------------------------
|
||||
.. index:: chain append a node unprotected
|
||||
.. index:: rtems_chain_append_unprotected
|
||||
|
||||
Append a Node (unprotected)
|
||||
---------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -803,11 +825,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_prepend:
|
||||
|
||||
Prepend a Node
|
||||
--------------
|
||||
.. index:: prepend node
|
||||
.. index:: rtems_chain_prepend
|
||||
|
||||
Prepend a Node
|
||||
--------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -834,11 +857,12 @@ NOTES:
|
||||
|
||||
.. _rtems_chain_prepend_unprotected:
|
||||
|
||||
Prepend a Node (unprotected)
|
||||
----------------------------
|
||||
.. index:: prepend node unprotected
|
||||
.. index:: rtems_chain_prepend_unprotected
|
||||
|
||||
Prepend a Node (unprotected)
|
||||
----------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. 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,
|
||||
1988*.
|
||||
|
||||
.. index:: timeslicing
|
||||
|
||||
Clock Tick and Timeslicing
|
||||
--------------------------
|
||||
.. index:: timeslicing
|
||||
|
||||
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
|
||||
@ -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
|
||||
if there exists a ready task of equal priority.
|
||||
|
||||
.. index:: delays
|
||||
|
||||
Delays
|
||||
------
|
||||
.. index:: delays
|
||||
|
||||
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
|
||||
@ -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
|
||||
one sleep timer at a time.
|
||||
|
||||
.. index:: timeouts
|
||||
|
||||
Timeouts
|
||||
--------
|
||||
.. index:: timeouts
|
||||
|
||||
Timeouts are a special type of timer automatically created when the timeout
|
||||
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
|
||||
and time have been set.
|
||||
|
||||
.. index:: 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
|
||||
options argument to indicate the time information desired. This has
|
||||
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:
|
||||
|
||||
CLOCK_SET - Set date and time
|
||||
-----------------------------
|
||||
.. index:: set the time of day
|
||||
.. index:: rtems_clock_set
|
||||
|
||||
CLOCK_SET - Set date and time
|
||||
-----------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -260,11 +264,12 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_tod:
|
||||
|
||||
CLOCK_GET_TOD - Get date and time in TOD format
|
||||
-----------------------------------------------
|
||||
.. index:: obtain the time of day
|
||||
.. index:: rtems_clock_get_tod
|
||||
|
||||
CLOCK_GET_TOD - Get date and time in TOD format
|
||||
-----------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -303,11 +308,12 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_tod_timeval:
|
||||
|
||||
CLOCK_GET_TOD_TIMEVAL - Get date and time in timeval format
|
||||
-----------------------------------------------------------
|
||||
.. index:: obtain the time of day
|
||||
.. index:: rtems_clock_get_tod_timeval
|
||||
|
||||
CLOCK_GET_TOD_TIMEVAL - Get date and time in timeval format
|
||||
-----------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -346,11 +352,12 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_seconds_since_epoch:
|
||||
|
||||
CLOCK_GET_SECONDS_SINCE_EPOCH - Get seconds since epoch
|
||||
-------------------------------------------------------
|
||||
.. index:: obtain seconds since epoch
|
||||
.. index:: rtems_clock_get_seconds_since_epoch
|
||||
|
||||
CLOCK_GET_SECONDS_SINCE_EPOCH - Get seconds since epoch
|
||||
-------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -389,11 +396,12 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_ticks_per_second:
|
||||
|
||||
CLOCK_GET_TICKS_PER_SECOND - Get ticks per second
|
||||
-------------------------------------------------
|
||||
.. index:: obtain seconds since epoch
|
||||
.. index:: rtems_clock_get_ticks_per_second
|
||||
|
||||
CLOCK_GET_TICKS_PER_SECOND - Get ticks per second
|
||||
-------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -418,12 +426,13 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_ticks_since_boot:
|
||||
|
||||
CLOCK_GET_TICKS_SINCE_BOOT - Get current ticks counter value
|
||||
------------------------------------------------------------
|
||||
.. index:: obtain ticks since boot
|
||||
.. index:: get current ticks counter value
|
||||
.. index:: rtems_clock_get_ticks_since_boot
|
||||
|
||||
CLOCK_GET_TICKS_SINCE_BOOT - Get current ticks counter value
|
||||
------------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -452,9 +461,10 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_tick_later:
|
||||
|
||||
.. index:: rtems_clock_tick_later
|
||||
|
||||
CLOCK_TICK_LATER - Get tick value in the future
|
||||
-----------------------------------------------
|
||||
.. index:: rtems_clock_tick_later
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -477,9 +487,10 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_tick_later_usec:
|
||||
|
||||
.. index:: rtems_clock_tick_later_usec
|
||||
|
||||
CLOCK_TICK_LATER_USEC - Get tick value in the future in microseconds
|
||||
--------------------------------------------------------------------
|
||||
.. index:: rtems_clock_tick_later_usec
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -502,9 +513,10 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_tick_before:
|
||||
|
||||
.. index:: rtems_clock_tick_before
|
||||
|
||||
CLOCK_TICK_BEFORE - Is tick value is before a point in time
|
||||
-----------------------------------------------------------
|
||||
.. index:: rtems_clock_tick_before
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -542,12 +554,13 @@ EXAMPLE:
|
||||
|
||||
.. _rtems_clock_get_uptime:
|
||||
|
||||
CLOCK_GET_UPTIME - Get the time since boot
|
||||
------------------------------------------
|
||||
.. index:: clock get uptime
|
||||
.. index:: uptime
|
||||
.. index:: rtems_clock_get_uptime
|
||||
|
||||
CLOCK_GET_UPTIME - Get the time since boot
|
||||
------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -577,12 +590,13 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_uptime_timeval:
|
||||
|
||||
CLOCK_GET_UPTIME_TIMEVAL - Get the time since boot in timeval format
|
||||
--------------------------------------------------------------------
|
||||
.. index:: clock get uptime interval
|
||||
.. index:: uptime
|
||||
.. index:: rtems_clock_get_uptime_timeval
|
||||
|
||||
CLOCK_GET_UPTIME_TIMEVAL - Get the time since boot in timeval format
|
||||
--------------------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -607,12 +621,13 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_uptime_seconds:
|
||||
|
||||
CLOCK_GET_UPTIME_SECONDS - Get the seconds since boot
|
||||
-----------------------------------------------------
|
||||
.. index:: clock get uptime seconds
|
||||
.. index:: uptime
|
||||
.. index:: rtems_clock_get_uptime_seconds
|
||||
|
||||
CLOCK_GET_UPTIME_SECONDS - Get the seconds since boot
|
||||
-----------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -633,12 +648,13 @@ NOTES:
|
||||
|
||||
.. _rtems_clock_get_uptime_nanoseconds:
|
||||
|
||||
CLOCK_GET_UPTIME_NANOSECONDS - Get the nanoseconds since boot
|
||||
-------------------------------------------------------------
|
||||
.. index:: clock get nanoseconds uptime
|
||||
.. index:: uptime
|
||||
.. index:: rtems_clock_get_uptime_nanoseconds
|
||||
|
||||
CLOCK_GET_UPTIME_NANOSECONDS - Get the nanoseconds since boot
|
||||
-------------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -42,12 +42,11 @@ provided by the CBS API are:
|
||||
|
||||
Background
|
||||
==========
|
||||
.. index:: CBS parameters
|
||||
.. index:: rtems_cbs_parameters
|
||||
|
||||
Constant Bandwidth Server Definitions
|
||||
-------------------------------------
|
||||
.. index:: CBS parameters
|
||||
|
||||
.. index:: rtems_cbs_parameters
|
||||
|
||||
The Constant Bandwidth Server API enables tasks to communicate with the
|
||||
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
|
||||
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.
|
||||
.. index:: CBS periodic tasks
|
||||
|
||||
Handling Periodic Tasks
|
||||
-----------------------
|
||||
.. index:: CBS periodic tasks
|
||||
|
||||
Each task's execution begins with a default background priority (see the
|
||||
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
|
||||
change them using the CBS API again. Task now only has to indicate and end of
|
||||
each period using ``rtems_rate_monotonic_period``.
|
||||
.. index:: CBS overrun handler
|
||||
|
||||
Registering a Callback Function
|
||||
-------------------------------
|
||||
.. index:: CBS overrun handler
|
||||
|
||||
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
|
||||
@ -113,10 +112,10 @@ The calling convention of the callback function is:
|
||||
void overrun_handler(
|
||||
rtems_cbs_server_id server_id
|
||||
);
|
||||
.. index:: CBS limitations
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
.. index:: CBS limitations
|
||||
|
||||
When using this scheduler you have to keep in mind several things:
|
||||
|
||||
@ -234,11 +233,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_initialize:
|
||||
.. index:: initialize the CBS library
|
||||
.. index:: rtems_cbs_initialize
|
||||
|
||||
CBS_INITIALIZE - Initialize the CBS library
|
||||
-------------------------------------------
|
||||
.. index:: initialize the CBS library
|
||||
.. index:: rtems_cbs_initialize
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -272,11 +271,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_cleanup:
|
||||
.. index:: cleanup the CBS library
|
||||
.. index:: rtems_cbs_cleanup
|
||||
|
||||
CBS_CLEANUP - Cleanup the CBS library
|
||||
-------------------------------------
|
||||
.. index:: cleanup the CBS library
|
||||
.. index:: rtems_cbs_cleanup
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -302,11 +301,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_create_server:
|
||||
.. index:: create a new bandwidth server
|
||||
.. index:: rtems_cbs_create_server
|
||||
|
||||
CBS_CREATE_SERVER - Create a new bandwidth server
|
||||
-------------------------------------------------
|
||||
.. index:: create a new bandwidth server
|
||||
.. index:: rtems_cbs_create_server
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -350,11 +349,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_attach_thread:
|
||||
.. index:: attach a thread to server
|
||||
.. index:: rtems_cbs_attach_thread
|
||||
|
||||
CBS_ATTACH_THREAD - Attach a thread to server
|
||||
---------------------------------------------
|
||||
.. index:: attach a thread to server
|
||||
.. index:: rtems_cbs_attach_thread
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -392,11 +391,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_detach_thread:
|
||||
.. index:: detach a thread from server
|
||||
.. index:: rtems_cbs_detach_thread
|
||||
|
||||
CBS_DETACH_THREAD - Detach a thread from server
|
||||
-----------------------------------------------
|
||||
.. index:: detach a thread from server
|
||||
.. index:: rtems_cbs_detach_thread
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -429,11 +428,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_destroy_server:
|
||||
.. index:: destroy a bandwidth server
|
||||
.. index:: rtems_cbs_destroy_server
|
||||
|
||||
CBS_DESTROY_SERVER - Destroy a bandwidth server
|
||||
-----------------------------------------------
|
||||
.. index:: destroy a bandwidth server
|
||||
.. index:: rtems_cbs_destroy_server
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -466,11 +465,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
-----------------------------------------
|
||||
.. index:: get an ID of a server
|
||||
.. index:: rtems_cbs_get_server_id
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -497,11 +496,11 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
----------------------------------------------------------
|
||||
.. index:: get scheduling parameters of a server
|
||||
.. index:: rtems_cbs_get_parameters
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -534,11 +533,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_set_parameters:
|
||||
.. index:: set scheduling parameters
|
||||
.. index:: rtems_cbs_set_parameters
|
||||
|
||||
CBS_SET_PARAMETERS - Set scheduling parameters
|
||||
----------------------------------------------
|
||||
.. index:: set scheduling parameters
|
||||
.. index:: rtems_cbs_set_parameters
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -573,11 +572,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_get_execution_time:
|
||||
.. index:: get elapsed execution time
|
||||
.. index:: rtems_cbs_get_execution_time
|
||||
|
||||
CBS_GET_EXECUTION_TIME - Get elapsed execution time
|
||||
---------------------------------------------------
|
||||
.. index:: get elapsed execution time
|
||||
.. index:: rtems_cbs_get_execution_time
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -611,11 +610,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cbs_get_remaining_budget:
|
||||
.. index:: get remaining execution time
|
||||
.. index:: rtems_cbs_get_remaining_budget
|
||||
|
||||
CBS_GET_REMAINING_BUDGET - Get remaining execution time
|
||||
-------------------------------------------------------
|
||||
.. index:: get remaining execution time
|
||||
.. index:: rtems_cbs_get_remaining_budget
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -649,11 +648,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
---------------------------------------------------------------
|
||||
.. index:: get scheduler approved execution time
|
||||
.. index:: rtems_cbs_get_approved_budget
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,6 +4,8 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: CPU Usage
|
||||
|
||||
CPU Usage Statistics
|
||||
********************
|
||||
|
||||
@ -109,6 +111,7 @@ calling sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cpu_usage_report:
|
||||
.. index:: rtems_cpu_usage_report
|
||||
|
||||
cpu_usage_report - Report CPU Usage Statistics
|
||||
----------------------------------------------
|
||||
@ -133,6 +136,7 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_cpu_usage_reset:
|
||||
.. index:: rtems_cpu_usage_reset
|
||||
|
||||
cpu_usage_reset - Reset CPU Usage Statistics
|
||||
--------------------------------------------
|
||||
|
@ -3,6 +3,8 @@
|
||||
.. COMMENT: Copyright 2015 embedded brains GmbH
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: Status Codes
|
||||
|
||||
Directive Status Codes
|
||||
**********************
|
||||
|
||||
@ -18,6 +20,8 @@ Directives
|
||||
|
||||
The directives are:
|
||||
|
||||
.. index:: rtems_status_code
|
||||
|
||||
.. list-table::
|
||||
:class: rtems-table
|
||||
|
||||
@ -81,10 +85,10 @@ The directives are:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_status_text:
|
||||
.. index:: rtems_status_text
|
||||
|
||||
STATUS_TEXT - Returns the enumeration name for a status code
|
||||
------------------------------------------------------------
|
||||
.. index:: rtems_status_text
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,12 +4,12 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
Dual-Ported Memory Manager
|
||||
**************************
|
||||
|
||||
.. index:: ports
|
||||
.. index:: dual ported memory
|
||||
|
||||
Dual-Ported Memory Manager
|
||||
**************************
|
||||
|
||||
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
|
||||
|
||||
Background
|
||||
==========
|
||||
.. index:: dual ported memory, definition
|
||||
.. index:: external addresses, definition
|
||||
.. index:: internal addresses, definition
|
||||
|
||||
Background
|
||||
==========
|
||||
|
||||
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
|
||||
system. The owner accesses the memory using internal addresses, while other
|
||||
@ -99,11 +100,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_port_create:
|
||||
.. index:: create a port
|
||||
.. index:: rtems_port_create
|
||||
|
||||
PORT_CREATE - Create a port
|
||||
---------------------------
|
||||
.. index:: create a port
|
||||
.. index:: rtems_port_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -152,13 +153,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_port_ident:
|
||||
|
||||
PORT_IDENT - Get ID of a port
|
||||
-----------------------------
|
||||
.. index:: get ID of a port
|
||||
.. index:: obtain ID of a port
|
||||
.. index:: rtems_port_ident
|
||||
|
||||
PORT_IDENT - Get ID of a port
|
||||
-----------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -193,11 +194,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_port_delete:
|
||||
.. index:: delete a port
|
||||
.. index:: rtems_port_delete
|
||||
|
||||
PORT_DELETE - Delete a port
|
||||
---------------------------
|
||||
.. index:: delete a port
|
||||
.. index:: rtems_port_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -230,11 +231,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
----------------------------------------------------------------
|
||||
.. index:: convert external to internal address
|
||||
.. index:: rtems_port_external_to_internal
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -270,11 +271,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
----------------------------------------------------------------
|
||||
.. index:: convert internal to external address
|
||||
.. index:: rtems_port_internal_to_external
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: events
|
||||
|
||||
Event Manager
|
||||
*************
|
||||
|
||||
.. index:: events
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -21,12 +21,13 @@ and synchronization. The directives provided by the event manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
Event Sets
|
||||
----------
|
||||
.. index:: event flag, definition
|
||||
.. index:: event set, definition
|
||||
.. index:: rtems_event_set
|
||||
|
||||
Event Sets
|
||||
----------
|
||||
|
||||
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
|
||||
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
|
||||
every requested event is posted.
|
||||
|
||||
Building an Event Set or Condition
|
||||
----------------------------------
|
||||
.. index:: event condition, 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
|
||||
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
|
||||
@ -181,11 +183,11 @@ related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_event_send:
|
||||
.. index:: send event set to a task
|
||||
.. index:: rtems_event_send
|
||||
|
||||
EVENT_SEND - Send event set to a task
|
||||
-------------------------------------
|
||||
.. index:: send event set to a task
|
||||
.. index:: rtems_event_send
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -232,11 +234,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_event_receive:
|
||||
.. index:: receive event condition
|
||||
.. index:: rtems_event_receive
|
||||
|
||||
EVENT_RECEIVE - Receive event condition
|
||||
---------------------------------------
|
||||
.. index:: receive event condition
|
||||
.. index:: rtems_event_receive
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -5,12 +5,11 @@
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. _fatal_error_manager:
|
||||
.. index:: fatal errors
|
||||
|
||||
Fatal Error Manager
|
||||
*******************
|
||||
|
||||
.. index:: fatal errors
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -34,13 +33,13 @@ provided by the fatal error manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
.. index:: fatal error detection
|
||||
.. index:: fatal error processing
|
||||
.. index:: fatal error user extension
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The fatal error manager is called upon detection of an irrecoverable error
|
||||
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
|
||||
@ -388,10 +387,10 @@ Operations
|
||||
==========
|
||||
|
||||
.. _Terminate:
|
||||
.. index:: _Terminate
|
||||
|
||||
Announcing a Fatal Error
|
||||
------------------------
|
||||
.. index:: _Terminate
|
||||
|
||||
The :c:func:`_Terminate()` internal error handler is invoked when the
|
||||
application or the executive itself determines that a fatal error has occurred
|
||||
@ -443,13 +442,13 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_fatal:
|
||||
|
||||
FATAL - Invoke the fatal error
|
||||
------------------------------
|
||||
.. index:: announce fatal error
|
||||
.. index:: fatal error, announce
|
||||
.. index:: rtems_fatal
|
||||
|
||||
FATAL - Invoke the fatal error
|
||||
------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -473,12 +472,12 @@ NOTE:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_shutdown_executive:
|
||||
.. index:: shutdown RTEMS
|
||||
.. index:: rtems_shutdown_executive
|
||||
|
||||
SHUTDOWN_EXECUTIVE - Shutdown RTEMS
|
||||
-----------------------------------
|
||||
.. index:: shutdown RTEMS
|
||||
|
||||
.. index:: rtems_shutdown_executive
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -505,11 +504,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_exception_frame_print:
|
||||
.. index:: exception frame
|
||||
.. index:: rtems_exception_frame_print
|
||||
|
||||
EXCEPTION_FRAME_PRINT - Prints the exception frame
|
||||
--------------------------------------------------
|
||||
.. index:: exception frame
|
||||
.. index:: rtems_exception_frame_print
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -529,11 +528,11 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_fatal_source_text:
|
||||
.. index:: fatal error
|
||||
.. index:: rtems_fatal_source_text
|
||||
|
||||
FATAL_SOURCE_TEXT - Returns a text for a fatal source
|
||||
-----------------------------------------------------
|
||||
.. index:: fatal error
|
||||
.. index:: rtems_fatal_source_text
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -554,11 +553,11 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_internal_error_text:
|
||||
.. index:: fatal error
|
||||
.. index:: rtems_internal_error_text
|
||||
|
||||
INTERNAL_ERROR_TEXT - Returns a text for an internal error code
|
||||
---------------------------------------------------------------
|
||||
.. index:: fatal error
|
||||
.. index:: rtems_internal_error_text
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -579,13 +578,13 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_fatal_error_occurred:
|
||||
|
||||
FATAL_ERROR_OCCURRED - Invoke the fatal error handler (deprecated)
|
||||
------------------------------------------------------------------
|
||||
.. index:: announce fatal error
|
||||
.. index:: fatal error, announce
|
||||
.. index:: rtems_fatal_error_occurred
|
||||
|
||||
FATAL_ERROR_OCCURRED - Invoke the fatal error handler (deprecated)
|
||||
------------------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -22,9 +22,10 @@ The Initialization Manager provides only one directive:
|
||||
Background
|
||||
==========
|
||||
|
||||
.. index:: initialization tasks
|
||||
|
||||
Initialization Tasks
|
||||
--------------------
|
||||
.. index:: initialization tasks
|
||||
|
||||
Initialization task(s) are the mechanism by which RTEMS transfers initial
|
||||
control to the user's application. Initialization tasks differ from other
|
||||
@ -305,13 +306,13 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_initialize_executive:
|
||||
.. index:: initialize RTEMS
|
||||
.. index:: start multitasking
|
||||
.. index:: rtems_initialize_executive
|
||||
|
||||
INITIALIZE_EXECUTIVE - Initialize RTEMS
|
||||
---------------------------------------
|
||||
.. index:: initialize RTEMS
|
||||
.. index:: start multitasking
|
||||
|
||||
.. index:: rtems_initialize_executive
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -4,6 +4,8 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: interrupts
|
||||
|
||||
Interrupt Manager
|
||||
*****************
|
||||
|
||||
@ -44,9 +46,10 @@ from an ISR. The interrupt manager includes the following directive:
|
||||
Background
|
||||
==========
|
||||
|
||||
.. index:: interrupt processing
|
||||
|
||||
Processing an Interrupt
|
||||
-----------------------
|
||||
.. index:: interrupt processing
|
||||
|
||||
The interrupt manager allows the application to connect a function to a
|
||||
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
|
||||
outermost ISR terminates will the postponed dispatching occur.
|
||||
|
||||
.. index:: interrupt levels
|
||||
|
||||
RTEMS Interrupt Levels
|
||||
----------------------
|
||||
.. index:: interrupt levels
|
||||
|
||||
Many processors support multiple interrupt levels or priorities. The exact
|
||||
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
|
||||
Supplement document for a specific target processor.
|
||||
|
||||
.. index:: disabling interrupts
|
||||
|
||||
Disabling of Interrupts by RTEMS
|
||||
--------------------------------
|
||||
.. index:: disabling interrupts
|
||||
|
||||
During the execution of directive calls, critical sections of code may be
|
||||
executed. When these sections are encountered, RTEMS disables all maskable
|
||||
@ -264,13 +269,13 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_catch:
|
||||
|
||||
INTERRUPT_CATCH - Establish an ISR
|
||||
----------------------------------
|
||||
.. index:: establish an ISR
|
||||
.. index:: install an ISR
|
||||
.. index:: rtems_interrupt_catch
|
||||
|
||||
INTERRUPT_CATCH - Establish an ISR
|
||||
----------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -308,11 +313,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_disable:
|
||||
.. index:: disable interrupts
|
||||
.. index:: rtems_interrupt_disable
|
||||
|
||||
INTERRUPT_DISABLE - Disable Interrupts
|
||||
--------------------------------------
|
||||
.. index:: disable interrupts
|
||||
.. index:: rtems_interrupt_disable
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -346,11 +351,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_enable:
|
||||
.. index:: enable interrupts
|
||||
.. index:: rtems_interrupt_enable
|
||||
|
||||
INTERRUPT_ENABLE - Enable Interrupts
|
||||
------------------------------------
|
||||
.. index:: enable interrupts
|
||||
.. index:: rtems_interrupt_enable
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -381,11 +386,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_flash:
|
||||
.. index:: flash interrupts
|
||||
.. index:: rtems_interrupt_flash
|
||||
|
||||
INTERRUPT_FLASH - Flash Interrupts
|
||||
----------------------------------
|
||||
.. index:: flash interrupts
|
||||
.. index:: rtems_interrupt_flash
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -416,11 +421,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_local_disable:
|
||||
.. index:: disable interrupts
|
||||
.. index:: rtems_interrupt_local_disable
|
||||
|
||||
INTERRUPT_LOCAL_DISABLE - Disable Interrupts on Current Processor
|
||||
-----------------------------------------------------------------
|
||||
.. index:: disable interrupts
|
||||
.. index:: rtems_interrupt_local_disable
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -453,11 +458,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_local_enable:
|
||||
.. index:: enable interrupts
|
||||
.. index:: rtems_interrupt_local_enable
|
||||
|
||||
INTERRUPT_LOCAL_ENABLE - Enable Interrupts on Current Processor
|
||||
---------------------------------------------------------------
|
||||
.. index:: enable interrupts
|
||||
.. index:: rtems_interrupt_local_enable
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -484,10 +489,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_lock_initialize:
|
||||
.. index:: rtems_interrupt_lock_initialize
|
||||
|
||||
INTERRUPT_LOCK_INITIALIZE - Initialize an ISR Lock
|
||||
--------------------------------------------------
|
||||
.. index:: rtems_interrupt_lock_initialize
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -512,10 +517,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_lock_acquire:
|
||||
.. index:: rtems_interrupt_lock_acquire
|
||||
|
||||
INTERRUPT_LOCK_ACQUIRE - Acquire an ISR Lock
|
||||
--------------------------------------------
|
||||
.. index:: rtems_interrupt_lock_acquire
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -547,10 +552,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_lock_release:
|
||||
.. index:: rtems_interrupt_lock_release
|
||||
|
||||
INTERRUPT_LOCK_RELEASE - Release an ISR Lock
|
||||
--------------------------------------------
|
||||
.. index:: rtems_interrupt_lock_release
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -579,10 +584,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_lock_acquire_isr:
|
||||
.. index:: rtems_interrupt_lock_acquire_isr
|
||||
|
||||
INTERRUPT_LOCK_ACQUIRE_ISR - Acquire an ISR Lock from ISR
|
||||
---------------------------------------------------------
|
||||
.. index:: rtems_interrupt_lock_acquire_isr
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -617,10 +622,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_interrupt_lock_release_isr:
|
||||
.. index:: rtems_interrupt_lock_release_isr
|
||||
|
||||
INTERRUPT_LOCK_RELEASE_ISR - Release an ISR Lock from ISR
|
||||
---------------------------------------------------------
|
||||
.. index:: rtems_interrupt_lock_release_isr
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -649,11 +654,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
------------------------------------------------
|
||||
.. index:: is interrupt in progress
|
||||
.. index:: rtems_interrupt_is_in_progress
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,12 +4,12 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
I/O Manager
|
||||
***********
|
||||
|
||||
.. index:: device drivers
|
||||
.. index:: IO Manager
|
||||
|
||||
I/O Manager
|
||||
***********
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -40,9 +40,10 @@ drivers. The directives provided by the I/O manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
.. index:: Device Driver Table
|
||||
|
||||
Device Driver Table
|
||||
-------------------
|
||||
.. index:: Device Driver Table
|
||||
|
||||
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
|
||||
@ -73,11 +74,12 @@ table.
|
||||
The :file:`confdefs.h` entry ``CONFIGURE_MAXIMUM_DRIVERS`` configures the
|
||||
number of driver slots available to the application.
|
||||
|
||||
Major and Minor Device Numbers
|
||||
------------------------------
|
||||
.. index:: major 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
|
||||
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
|
||||
@ -91,9 +93,10 @@ driver.
|
||||
The data types ``rtems_device_major_number`` and ``rtems_device_minor_number``
|
||||
are used to manipulate device major and minor numbers, respectively.
|
||||
|
||||
.. index:: device names
|
||||
|
||||
Device Names
|
||||
------------
|
||||
.. index:: device names
|
||||
|
||||
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
|
||||
@ -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
|
||||
driver.
|
||||
|
||||
.. index:: runtime driver registration
|
||||
|
||||
Runtime Driver Registration
|
||||
---------------------------
|
||||
.. index:: runtime driver registration
|
||||
|
||||
Board support package and application developers can select wether a device
|
||||
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.
|
||||
|
||||
.. index:: device driver interface
|
||||
|
||||
Device Driver Interface
|
||||
-----------------------
|
||||
.. index:: device driver interface
|
||||
|
||||
When an application invokes an I/O manager directive, RTEMS determines which
|
||||
device driver entry point must be invoked. The information passed by the
|
||||
@ -226,11 +231,11 @@ related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_register_driver:
|
||||
.. index:: register a device driver
|
||||
.. index:: rtems_io_register_driver
|
||||
|
||||
IO_REGISTER_DRIVER - Register a device driver
|
||||
---------------------------------------------
|
||||
.. index:: register a device driver
|
||||
.. index:: rtems_io_register_driver
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -284,11 +289,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_unregister_driver:
|
||||
.. index:: unregister a device driver
|
||||
.. index:: rtems_io_unregister_driver
|
||||
|
||||
IO_UNREGISTER_DRIVER - Unregister a device driver
|
||||
-------------------------------------------------
|
||||
.. index:: unregister a device driver
|
||||
.. index:: rtems_io_unregister_driver
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -317,11 +322,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_initialize:
|
||||
.. index:: initialize a device driver
|
||||
.. index:: rtems_io_initialize
|
||||
|
||||
IO_INITIALIZE - Initialize a device driver
|
||||
------------------------------------------
|
||||
.. index:: initialize a device driver
|
||||
.. index:: rtems_io_initialize
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -360,11 +365,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_register_name:
|
||||
.. index:: register device
|
||||
.. index:: rtems_io_register_name
|
||||
|
||||
IO_REGISTER_NAME - Register a device
|
||||
------------------------------------
|
||||
.. index:: register device
|
||||
.. index:: rtems_io_register_name
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -395,11 +400,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_lookup_name:
|
||||
.. index:: lookup device major and minor number
|
||||
.. index:: rtems_io_lookup_name
|
||||
|
||||
IO_LOOKUP_NAME - Lookup a device
|
||||
--------------------------------
|
||||
.. index:: lookup device major and minor number
|
||||
.. index:: rtems_io_lookup_name
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -430,11 +435,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_open:
|
||||
.. index:: open a devive
|
||||
.. index:: rtems_io_open
|
||||
|
||||
IO_OPEN - Open a device
|
||||
-----------------------
|
||||
.. index:: open a devive
|
||||
.. index:: rtems_io_open
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -468,11 +473,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_close:
|
||||
.. index:: close a device
|
||||
.. index:: rtems_io_close
|
||||
|
||||
IO_CLOSE - Close a device
|
||||
-------------------------
|
||||
.. index:: close a device
|
||||
.. index:: rtems_io_close
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -506,11 +511,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_read:
|
||||
.. index:: read from a device
|
||||
.. index:: rtems_io_read
|
||||
|
||||
IO_READ - Read from a device
|
||||
----------------------------
|
||||
.. index:: read from a device
|
||||
.. index:: rtems_io_read
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -545,11 +550,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_write:
|
||||
.. index:: write to a device
|
||||
.. index:: rtems_io_write
|
||||
|
||||
IO_WRITE - Write to a device
|
||||
----------------------------
|
||||
.. index:: write to a device
|
||||
.. index:: rtems_io_write
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -584,13 +589,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_io_control:
|
||||
|
||||
IO_CONTROL - Special device services
|
||||
------------------------------------
|
||||
.. index:: special device services
|
||||
.. index:: IO Control
|
||||
.. index:: rtems_io_control
|
||||
|
||||
IO_CONTROL - Special device services
|
||||
------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -17,11 +17,11 @@ one with these concepts.
|
||||
|
||||
.. _objects:
|
||||
|
||||
.. index:: objects
|
||||
|
||||
Objects
|
||||
=======
|
||||
|
||||
.. index:: objects
|
||||
|
||||
RTEMS provides directives which can be used to dynamically create, delete, and
|
||||
manipulate a set of predefined object types. These types include tasks,
|
||||
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
|
||||
facilitate efficient object manipulation by the executive.
|
||||
|
||||
Object Names
|
||||
------------
|
||||
.. index:: object name
|
||||
.. index:: rtems_name
|
||||
|
||||
Object Names
|
||||
------------
|
||||
|
||||
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
|
||||
names... index:: rtems_build_name
|
||||
names.
|
||||
|
||||
.. index:: rtems_build_name
|
||||
|
||||
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
|
||||
@ -84,12 +87,13 @@ name:
|
||||
printk( "ID=0x%08x name=%s\n", id, ((result) ? result : "no name") );
|
||||
}
|
||||
|
||||
Object IDs
|
||||
----------
|
||||
.. index:: object ID
|
||||
.. index:: object ID composition
|
||||
.. index:: rtems_id
|
||||
|
||||
Object IDs
|
||||
----------
|
||||
|
||||
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
|
||||
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
|
||||
applications.
|
||||
|
||||
.. index:: communication and synchronization
|
||||
|
||||
Communication and Synchronization
|
||||
=================================
|
||||
.. index:: communication and synchronization
|
||||
|
||||
In real-time multitasking applications, the ability for cooperating execution
|
||||
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
|
||||
communication and is typically used for exception handling.
|
||||
|
||||
.. index:: locking protocols
|
||||
|
||||
Locking Protocols
|
||||
=================
|
||||
.. index:: 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.
|
||||
|
||||
.. _PriorityInversion:
|
||||
.. index:: priority inversion
|
||||
|
||||
Priority Inversion
|
||||
------------------
|
||||
.. index:: priority inversion
|
||||
|
||||
Priority inversion is a form of indefinite postponement which is common in
|
||||
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.
|
||||
|
||||
.. _PriorityCeiling:
|
||||
.. index:: priority ceiling protocol
|
||||
.. index:: immediate ceiling priority protocol
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
.. _PriorityInheritance:
|
||||
.. index:: priority inheritance protocol
|
||||
|
||||
Priority Inheritance Protocol
|
||||
-----------------------------
|
||||
.. index:: priority inheritance protocol
|
||||
|
||||
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`.
|
||||
@ -318,10 +324,10 @@ Since RTEMS 5.1, priority updates due to the priority inheritance protocol
|
||||
take place immediately and are propagated recursively.
|
||||
|
||||
.. _MrsP:
|
||||
.. index:: 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
|
||||
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`.
|
||||
|
||||
.. _OMIP:
|
||||
.. index:: 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 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
|
||||
available since RTEMS 5.1.
|
||||
|
||||
.. index:: thread queues
|
||||
|
||||
Thread Queues
|
||||
=============
|
||||
.. index:: thread queues
|
||||
|
||||
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
|
||||
@ -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
|
||||
with :math:`n` being the count of threads already on the queue.
|
||||
|
||||
.. index:: time
|
||||
|
||||
Time
|
||||
====
|
||||
.. index:: time
|
||||
|
||||
The development of responsive real-time applications requires an understanding
|
||||
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.
|
||||
Less code is a good thing for size, testing and verification.
|
||||
|
||||
.. index:: memory management
|
||||
|
||||
Memory Management
|
||||
=================
|
||||
.. index:: memory management
|
||||
|
||||
RTEMS memory management facilities can be grouped into two classes: dynamic
|
||||
memory allocation and address translation. Dynamic memory allocation is
|
||||
|
@ -5,12 +5,11 @@
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. _linker_sets:
|
||||
.. index:: linkersets
|
||||
|
||||
Linker Sets
|
||||
***********
|
||||
|
||||
.. index:: linkersets
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -128,10 +127,10 @@ Directives
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_SET_BEGIN:
|
||||
.. index:: RTEMS_LINKER_SET_BEGIN
|
||||
|
||||
RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker
|
||||
------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_SET_BEGIN
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -161,10 +160,10 @@ NOTE:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_SET_END:
|
||||
.. index:: RTEMS_LINKER_SET_END
|
||||
|
||||
RTEMS_LINKER_SET_END - Designator of the linker set end marker
|
||||
--------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_SET_END
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -183,10 +182,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_SET_SIZE:
|
||||
.. index:: RTEMS_LINKER_SET_SIZE
|
||||
|
||||
RTEMS_LINKER_SET_SIZE - The linker set size in characters
|
||||
---------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_SET_SIZE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -204,10 +203,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_SET_ITEM_COUNT:
|
||||
.. index:: RTEMS_LINKER_SET_ITEM_COUNT
|
||||
|
||||
RTEMS_LINKER_SET_ITEM_COUNT - The linker set item count
|
||||
---------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_SET_ITEM_COUNT
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -224,10 +223,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_SET_IS_EMPTY:
|
||||
.. index:: RTEMS_LINKER_SET_IS_EMPTY
|
||||
|
||||
RTEMS_LINKER_SET_IS_EMPTY - Is the linker set empty?
|
||||
---------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_SET_IS_EMPTY
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -245,10 +244,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_SET_FOREACH:
|
||||
.. index:: RTEMS_LINKER_SET_FOREACH
|
||||
|
||||
RTEMS_LINKER_SET_FOREACH - Iterate through the linker set items
|
||||
---------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_SET_FOREACH
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -281,10 +280,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET_DECLARE:
|
||||
.. index:: RTEMS_LINKER_ROSET_DECLARE
|
||||
|
||||
RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set
|
||||
------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET_DECLARE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -304,10 +303,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET:
|
||||
.. index:: RTEMS_LINKER_ROSET
|
||||
|
||||
RTEMS_LINKER_ROSET - Defines a read-only linker set
|
||||
---------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -327,10 +326,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET_ITEM_DECLARE:
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM_DECLARE
|
||||
|
||||
RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item
|
||||
----------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM_DECLARE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -352,10 +351,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET_ITEM_REFERENCE:
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM_REFERENCE
|
||||
|
||||
RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item
|
||||
--------------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM_REFERENCE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -377,10 +376,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET_ITEM:
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM
|
||||
|
||||
RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
|
||||
-------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -402,10 +401,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET_ITEM_ORDERED:
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM_ORDERED
|
||||
|
||||
RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
|
||||
------------------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET_ITEM_ORDERED
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -459,10 +458,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_ROSET_CONTENT:
|
||||
.. index:: RTEMS_LINKER_ROSET_CONTENT
|
||||
|
||||
RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content
|
||||
----------------------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_ROSET_CONTENT
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -481,10 +480,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET_DECLARE:
|
||||
.. index:: RTEMS_LINKER_RWSET_DECLARE
|
||||
|
||||
RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
|
||||
-------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET_DECLARE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -504,10 +503,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET:
|
||||
.. index:: RTEMS_LINKER_RWSET
|
||||
|
||||
RTEMS_LINKER_RWSET - Defines a read-write linker set
|
||||
----------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -527,10 +526,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET_ITEM_DECLARE:
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM_DECLARE
|
||||
|
||||
RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
|
||||
-----------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM_DECLARE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -552,10 +551,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET_ITEM_REFERENCE:
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM_REFERENCE
|
||||
|
||||
RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
|
||||
---------------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM_REFERENCE
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -577,10 +576,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET_ITEM:
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM
|
||||
|
||||
RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
|
||||
--------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -602,10 +601,10 @@ DESCRIPTION:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET_ITEM_ORDERED:
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM_ORDERED
|
||||
|
||||
RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
|
||||
-------------------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET_ITEM_ORDERED
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -659,10 +658,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _RTEMS_LINKER_RWSET_CONTENT:
|
||||
.. index:: RTEMS_LINKER_RWSET_CONTENT
|
||||
|
||||
RTEMS_LINKER_RWSET_CONTENT - Marks a declaration as a read-write linker set content
|
||||
-----------------------------------------------------------------------------------
|
||||
.. index:: RTEMS_LINKER_RWSET_CONTENT
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,12 +4,12 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
Message Manager
|
||||
***************
|
||||
|
||||
.. index:: messages
|
||||
.. index:: message queues
|
||||
|
||||
Message Manager
|
||||
***************
|
||||
|
||||
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
|
||||
the messages as short as possible.
|
||||
|
||||
.. index:: message queue attributes
|
||||
|
||||
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
|
||||
components. The set of valid message queue attributes is provided in the
|
||||
@ -220,11 +221,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_message_queue_create:
|
||||
.. index:: create a message queue
|
||||
.. index:: rtems_message_queue_create
|
||||
|
||||
MESSAGE_QUEUE_CREATE - Create a queue
|
||||
-------------------------------------
|
||||
.. index:: create a message queue
|
||||
.. index:: rtems_message_queue_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -307,11 +308,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_message_queue_ident:
|
||||
.. index:: get ID of a message queue
|
||||
.. index:: rtems_message_queue_ident
|
||||
|
||||
MESSAGE_QUEUE_IDENT - Get ID of a queue
|
||||
---------------------------------------
|
||||
.. index:: get ID of a message queue
|
||||
.. index:: rtems_message_queue_ident
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -360,11 +361,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_message_queue_delete:
|
||||
.. index:: delete a message queue
|
||||
.. index:: rtems_message_queue_delete
|
||||
|
||||
MESSAGE_QUEUE_DELETE - Delete a queue
|
||||
-------------------------------------
|
||||
.. index:: delete a message queue
|
||||
.. index:: rtems_message_queue_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -418,11 +419,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
---------------------------------------------------
|
||||
.. index:: send message to a queue
|
||||
.. index:: rtems_message_queue_send
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -475,11 +476,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
------------------------------------------------------
|
||||
.. index:: put message at front of queue
|
||||
.. index:: rtems_message_queue_urgent
|
||||
|
||||
**CALLING SEQUENCE:**
|
||||
.. code-block:: c
|
||||
@ -532,11 +533,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_message_queue_broadcast:
|
||||
.. index:: broadcast message to a queue
|
||||
.. index:: rtems_message_queue_broadcast
|
||||
|
||||
MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
|
||||
---------------------------------------------------------
|
||||
.. index:: broadcast message to a queue
|
||||
.. index:: rtems_message_queue_broadcast
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -592,11 +593,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_message_queue_receive:
|
||||
.. index:: receive message from a queue
|
||||
.. index:: rtems_message_queue_receive
|
||||
|
||||
MESSAGE_QUEUE_RECEIVE - Receive message from a queue
|
||||
----------------------------------------------------
|
||||
.. index:: receive message from a queue
|
||||
.. index:: rtems_message_queue_receive
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -679,11 +680,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
----------------------------------------------------------------------------
|
||||
.. index:: get number of pending messages
|
||||
.. index:: rtems_message_queue_get_number_pending
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -718,11 +719,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_message_queue_flush:
|
||||
.. index:: flush messages on a queue
|
||||
.. index:: rtems_message_queue_flush
|
||||
|
||||
MESSAGE_QUEUE_FLUSH - Flush all messages on a queue
|
||||
---------------------------------------------------
|
||||
.. index:: flush messages on a queue
|
||||
.. index:: rtems_message_queue_flush
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: multiprocessing
|
||||
|
||||
Multiprocessing Manager
|
||||
***********************
|
||||
|
||||
.. index:: multiprocessing
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -42,11 +42,11 @@ The directives provided by the Manager are:
|
||||
- rtems_multiprocessing_announce_ - A multiprocessing communications packet has
|
||||
arrived
|
||||
|
||||
.. index:: multiprocessing topologies
|
||||
|
||||
Background
|
||||
==========
|
||||
|
||||
.. index:: multiprocessing topologies
|
||||
|
||||
RTEMS makes no assumptions regarding the connection media or topology of a
|
||||
multiprocessor system. The tasks which compose a particular application can be
|
||||
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
|
||||
isolated in the MPCI layer.
|
||||
|
||||
.. index:: nodes, definition
|
||||
|
||||
Nodes
|
||||
-----
|
||||
.. index:: nodes, definition
|
||||
|
||||
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
|
||||
@ -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)
|
||||
must be able to route messages based on the node number.
|
||||
|
||||
.. index:: global objects, definition
|
||||
|
||||
Global Objects
|
||||
--------------
|
||||
.. index:: global objects, definition
|
||||
|
||||
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,
|
||||
@ -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
|
||||
relocation is not supported by RTEMS.
|
||||
|
||||
.. index:: global objects table
|
||||
|
||||
Global Object Table
|
||||
-------------------
|
||||
.. index:: global objects table
|
||||
|
||||
RTEMS maintains two tables containing object information on every node in a
|
||||
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
|
||||
in the system must be informed of the creation or deletion of a global object.
|
||||
|
||||
.. index:: MPCI and remote operations
|
||||
|
||||
Remote Operations
|
||||
-----------------
|
||||
.. index:: MPCI and remote operations
|
||||
|
||||
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.
|
||||
@ -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
|
||||
errors.
|
||||
|
||||
.. index:: proxy, definition
|
||||
|
||||
Proxies
|
||||
-------
|
||||
.. index:: proxy, definition
|
||||
|
||||
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
|
||||
@ -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
|
||||
heterogeneous system.
|
||||
|
||||
.. index:: heterogeneous multiprocessing
|
||||
|
||||
Supporting Heterogeneous Environments
|
||||
-------------------------------------
|
||||
.. index:: heterogeneous multiprocessing
|
||||
|
||||
Developing an MPCI layer for a heterogeneous system requires a thorough
|
||||
understanding of the differences between the processors which comprise the
|
||||
@ -476,11 +482,11 @@ usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_multiprocessing_announce:
|
||||
.. index:: announce arrival of package
|
||||
.. index:: rtems_multiprocessing_announce
|
||||
|
||||
MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet
|
||||
-----------------------------------------------------------
|
||||
.. index:: announce arrival of package
|
||||
.. index:: rtems_multiprocessing_announce
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: object manipulation
|
||||
|
||||
Object Services
|
||||
***************
|
||||
|
||||
.. index:: object manipulation
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -181,11 +181,11 @@ Directives
|
||||
\clearpage
|
||||
|
||||
.. _rtems_build_name:
|
||||
.. index:: build object name
|
||||
.. index:: rtems_build_name
|
||||
|
||||
BUILD_NAME - Build object name from characters
|
||||
----------------------------------------------
|
||||
.. index:: build object name
|
||||
.. index:: rtems_build_name
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -213,13 +213,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_get_classic_name:
|
||||
|
||||
OBJECT_GET_CLASSIC_NAME - Lookup name from id
|
||||
---------------------------------------------
|
||||
.. index:: get name from id
|
||||
.. index:: obtain name from id
|
||||
.. index:: rtems_object_get_classic_name
|
||||
|
||||
OBJECT_GET_CLASSIC_NAME - Lookup name from id
|
||||
---------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -251,13 +251,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_get_name:
|
||||
|
||||
OBJECT_GET_NAME - Obtain object name as string
|
||||
----------------------------------------------
|
||||
.. index:: get object name as string
|
||||
.. index:: obtain object name as string
|
||||
.. index:: rtems_object_get_name
|
||||
|
||||
OBJECT_GET_NAME - Obtain object name as string
|
||||
----------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -284,11 +284,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_set_name:
|
||||
.. index:: set object name
|
||||
.. index:: rtems_object_set_name
|
||||
|
||||
OBJECT_SET_NAME - Set object name
|
||||
---------------------------------
|
||||
.. index:: set object name
|
||||
.. index:: rtems_object_set_name
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -331,11 +331,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_id_get_api:
|
||||
.. index:: obtain API from id
|
||||
.. index:: rtems_object_id_get_api
|
||||
|
||||
OBJECT_ID_GET_API - Obtain API from Id
|
||||
--------------------------------------
|
||||
.. index:: obtain API from id
|
||||
.. index:: rtems_object_id_get_api
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -360,11 +360,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
------------------------------------------
|
||||
.. index:: obtain class from object id
|
||||
.. index:: rtems_object_id_get_class
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -389,11 +389,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
----------------------------------------
|
||||
.. index:: obtain node from object id
|
||||
.. index:: rtems_object_id_get_node
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -418,11 +418,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
------------------------------------------
|
||||
.. index:: obtain index from object id
|
||||
.. index:: rtems_object_id_get_index
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -447,11 +447,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_build_id:
|
||||
.. index:: build object id from components
|
||||
.. index:: rtems_build_id
|
||||
|
||||
BUILD_ID - Build Object Id From Components
|
||||
------------------------------------------
|
||||
.. index:: build object id from components
|
||||
.. index:: rtems_build_id
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -481,11 +481,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_id_api_minimum:
|
||||
.. index:: obtain minimum API value
|
||||
.. index:: rtems_object_id_api_minimum
|
||||
|
||||
OBJECT_ID_API_MINIMUM - Obtain Minimum API Value
|
||||
------------------------------------------------
|
||||
.. index:: obtain minimum API value
|
||||
.. index:: rtems_object_id_api_minimum
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -506,11 +506,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_id_api_maximum:
|
||||
.. index:: obtain maximum API value
|
||||
.. index:: rtems_object_id_api_maximum
|
||||
|
||||
OBJECT_ID_API_MAXIMUM - Obtain Maximum API Value
|
||||
------------------------------------------------
|
||||
.. index:: obtain maximum API value
|
||||
.. index:: rtems_object_id_api_maximum
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -531,11 +531,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_api_minimum_class:
|
||||
.. index:: obtain minimum class value
|
||||
.. index:: rtems_object_api_minimum_class
|
||||
|
||||
OBJECT_API_MINIMUM_CLASS - Obtain Minimum Class Value
|
||||
-----------------------------------------------------
|
||||
.. index:: obtain minimum class value
|
||||
.. index:: rtems_object_api_minimum_class
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -562,11 +562,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_api_maximum_class:
|
||||
.. index:: obtain maximum class value
|
||||
.. index:: rtems_object_api_maximum_class
|
||||
|
||||
OBJECT_API_MAXIMUM_CLASS - Obtain Maximum Class Value
|
||||
-----------------------------------------------------
|
||||
.. index:: obtain maximum class value
|
||||
.. index:: rtems_object_api_maximum_class
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -593,11 +593,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
-------------------------------------------------------------------
|
||||
.. index:: obtain minimum class value for an API
|
||||
.. index:: rtems_object_id_api_minimum_class
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -624,11 +624,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
-------------------------------------------------------------------
|
||||
.. index:: obtain maximum class value for an API
|
||||
.. index:: rtems_object_id_api_maximum_class
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -655,11 +655,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_get_api_name:
|
||||
.. index:: obtain API name
|
||||
.. index:: rtems_object_get_api_name
|
||||
|
||||
OBJECT_GET_API_NAME - Obtain API Name
|
||||
-------------------------------------
|
||||
.. index:: obtain API name
|
||||
.. index:: rtems_object_get_api_name
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -687,11 +687,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
---------------------------------------------
|
||||
.. index:: obtain class name
|
||||
.. index:: rtems_object_get_api_class_name
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -723,11 +723,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_object_get_class_information:
|
||||
.. index:: obtain class information
|
||||
.. index:: rtems_object_get_class_information
|
||||
|
||||
OBJECT_GET_CLASS_INFORMATION - Obtain Class Information
|
||||
-------------------------------------------------------
|
||||
.. index:: obtain class information
|
||||
.. index:: rtems_object_get_class_information
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. 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
|
||||
provided for each processor type that is supported.
|
||||
|
||||
.. index:: Real-time applications
|
||||
|
||||
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
|
||||
complicate each and every characteristic of a real-time system.
|
||||
|
||||
.. index:: 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
|
||||
sophisticated real-time applications is significantly reduced.
|
||||
|
||||
.. index:: 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
|
||||
real-time projects.
|
||||
|
||||
.. index:: Internal Architecture
|
||||
|
||||
RTEMS Internal Architecture
|
||||
===========================
|
||||
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: partitions
|
||||
|
||||
Partition Manager
|
||||
*****************
|
||||
|
||||
.. index:: partitions
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -28,9 +28,10 @@ fixed-size units. The directives provided by the partition manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
.. index:: partition, definition
|
||||
|
||||
Partition Manager Definitions
|
||||
-----------------------------
|
||||
.. index:: partition, definition
|
||||
|
||||
A partition is a physically contiguous memory area divided into fixed-size
|
||||
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
|
||||
destroy the free buffer chain or the contents of an adjacent allocated buffer.
|
||||
|
||||
.. index:: partition attribute set, building
|
||||
|
||||
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
|
||||
components. The set of valid partition attributes is provided in the following
|
||||
@ -134,11 +136,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_partition_create:
|
||||
.. index:: create a partition
|
||||
.. index:: rtems_partition_create
|
||||
|
||||
PARTITION_CREATE - Create a partition
|
||||
-------------------------------------
|
||||
.. index:: create a partition
|
||||
.. index:: rtems_partition_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -228,13 +230,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_partition_ident:
|
||||
|
||||
PARTITION_IDENT - Get ID of a partition
|
||||
---------------------------------------
|
||||
.. index:: get ID of a partition
|
||||
.. index:: obtain ID of a partition
|
||||
.. index:: rtems_partition_ident
|
||||
|
||||
PARTITION_IDENT - Get ID of a partition
|
||||
---------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -282,11 +284,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_partition_delete:
|
||||
.. index:: delete a partition
|
||||
.. index:: rtems_partition_delete
|
||||
|
||||
PARTITION_DELETE - Delete a partition
|
||||
-------------------------------------
|
||||
.. index:: delete a partition
|
||||
.. index:: rtems_partition_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -331,13 +333,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_partition_get_buffer:
|
||||
|
||||
PARTITION_GET_BUFFER - Get buffer from a partition
|
||||
--------------------------------------------------
|
||||
.. index:: get buffer from partition
|
||||
.. index:: obtain buffer from partition
|
||||
.. index:: rtems_partition_get_buffer
|
||||
|
||||
PARTITION_GET_BUFFER - Get buffer from a partition
|
||||
--------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -379,11 +381,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_partition_return_buffer:
|
||||
.. index:: return buffer to partitition
|
||||
.. index:: rtems_partition_return_buffer
|
||||
|
||||
PARTITION_RETURN_BUFFER - Return buffer to a partition
|
||||
------------------------------------------------------
|
||||
.. index:: return buffer to partitition
|
||||
.. index:: rtems_partition_return_buffer
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,12 +4,12 @@
|
||||
.. COMMENT: Aeroflex Gaisler AB
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: PCI
|
||||
.. index:: libpci
|
||||
|
||||
PCI Library
|
||||
***********
|
||||
|
||||
.. index:: libpci
|
||||
|
||||
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
|
||||
been configured for the correct endianness.
|
||||
|
||||
.. index:: PCI address translation
|
||||
|
||||
PCI address translation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -408,6 +410,8 @@ different PCI spaces/regions.
|
||||
/* Translate CPU accessible address into PCI address (for DMA) */
|
||||
static inline int pci_cpu2pci(uint32_t *address, int type);
|
||||
|
||||
.. index:: PCI Interrupt
|
||||
|
||||
PCI Interrupt
|
||||
-------------
|
||||
|
||||
|
@ -5,12 +5,12 @@
|
||||
.. COMMENT: COPYRIGHT (c) 2017 Kuan-Hsun Chen.
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
Rate Monotonic Manager
|
||||
**********************
|
||||
|
||||
.. index:: rate mononitonic tasks
|
||||
.. index:: periodic tasks
|
||||
|
||||
Rate Monotonic Manager
|
||||
**********************
|
||||
|
||||
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
|
||||
optimize that task.
|
||||
|
||||
.. index:: periodic task, definition
|
||||
|
||||
Periodicity Definitions
|
||||
----------------------------------
|
||||
.. index:: periodic task, definition
|
||||
|
||||
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
|
||||
@ -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
|
||||
hard deadline.
|
||||
|
||||
Rate Monotonic Scheduling Algorithm
|
||||
-----------------------------------
|
||||
.. index:: Rate Monotonic Scheduling Algorithm, definition
|
||||
.. index:: RMS Algorithm, definition
|
||||
|
||||
Rate Monotonic Scheduling Algorithm
|
||||
-----------------------------------
|
||||
|
||||
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
|
||||
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,
|
||||
schedulability is only guaranteed for the critical task set.
|
||||
|
||||
.. index:: RMS schedulability analysis
|
||||
|
||||
Schedulability Analysis
|
||||
-----------------------
|
||||
|
||||
.. index:: RMS schedulability analysis
|
||||
|
||||
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
|
||||
execute by applying proven schedulability analysis rules.
|
||||
@ -261,9 +263,10 @@ assumptions:
|
||||
Once the basic schedulability analysis is understood, some of the above
|
||||
assumptions can be relaxed and the side-effects accounted for.
|
||||
|
||||
.. index:: RMS Processor Utilization Rule
|
||||
|
||||
Processor Utilization Rule
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
.. index:: RMS Processor Utilization Rule
|
||||
|
||||
The Processor Utilization Rule requires that processor utilization be
|
||||
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
|
||||
using RMS.
|
||||
|
||||
.. index:: RMS 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
|
||||
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
|
||||
|
||||
.. _rtems_rate_monotonic_create:
|
||||
.. index:: create a period
|
||||
.. index:: rtems_rate_monotonic_create
|
||||
|
||||
RATE_MONOTONIC_CREATE - Create a rate monotonic period
|
||||
------------------------------------------------------
|
||||
.. index:: create a period
|
||||
.. index:: rtems_rate_monotonic_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -671,13 +675,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_rate_monotonic_ident:
|
||||
|
||||
RATE_MONOTONIC_IDENT - Get ID of a period
|
||||
-----------------------------------------
|
||||
.. index:: get ID of a period
|
||||
.. index:: obtain ID of a period
|
||||
.. index:: rtems_rate_monotonic_ident
|
||||
|
||||
RATE_MONOTONIC_IDENT - Get ID of a period
|
||||
-----------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -710,11 +714,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_rate_monotonic_cancel:
|
||||
.. index:: cancel a period
|
||||
.. index:: rtems_rate_monotonic_cancel
|
||||
|
||||
RATE_MONOTONIC_CANCEL - Cancel a period
|
||||
---------------------------------------
|
||||
.. index:: cancel a period
|
||||
.. index:: rtems_rate_monotonic_cancel
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -752,10 +756,10 @@ NOTES:
|
||||
|
||||
.. _rtems_rate_monotonic_delete:
|
||||
.. index:: rtems_rate_monotonic_delete
|
||||
.. index:: delete a period
|
||||
|
||||
RATE_MONOTONIC_DELETE - Delete a rate monotonic period
|
||||
------------------------------------------------------
|
||||
.. index:: delete a period
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -790,14 +794,14 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_rate_monotonic_period:
|
||||
|
||||
RATE_MONOTONIC_PERIOD - Conclude current/Start next period
|
||||
----------------------------------------------------------
|
||||
.. index:: conclude current period
|
||||
.. index:: start current period
|
||||
.. index:: period initiation
|
||||
.. index:: rtems_rate_monotonic_period
|
||||
|
||||
RATE_MONOTONIC_PERIOD - Conclude current/Start next period
|
||||
----------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -844,13 +848,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_rate_monotonic_get_status:
|
||||
|
||||
RATE_MONOTONIC_GET_STATUS - Obtain status from a period
|
||||
-------------------------------------------------------
|
||||
.. index:: get status of period
|
||||
.. index:: obtain status of period
|
||||
.. index:: rtems_rate_monotonic_get_status
|
||||
|
||||
RATE_MONOTONIC_GET_STATUS - Obtain status from a period
|
||||
-------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -909,13 +913,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_rate_monotonic_get_statistics:
|
||||
|
||||
RATE_MONOTONIC_GET_STATISTICS - Obtain statistics from a period
|
||||
---------------------------------------------------------------
|
||||
.. index:: get statistics of period
|
||||
.. index:: obtain statistics of period
|
||||
.. index:: rtems_rate_monotonic_get_statistics
|
||||
|
||||
RATE_MONOTONIC_GET_STATISTICS - Obtain statistics from a period
|
||||
---------------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -978,11 +982,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
---------------------------------------------------------------
|
||||
.. index:: reset statistics of period
|
||||
.. index:: rtems_rate_monotonic_reset_statistics
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -1012,11 +1016,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
----------------------------------------------------------------------
|
||||
.. index:: reset statistics of all periods
|
||||
.. index:: rtems_rate_monotonic_reset_all_statistics
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -1038,13 +1042,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_rate_monotonic_report_statistics:
|
||||
|
||||
RATE_MONOTONIC_REPORT_STATISTICS - Print period statistics report
|
||||
-----------------------------------------------------------------
|
||||
.. index:: print period statistics report
|
||||
.. index:: period statistics report
|
||||
.. index:: rtems_rate_monotonic_report_statistics
|
||||
|
||||
RATE_MONOTONIC_REPORT_STATISTICS - Print period statistics report
|
||||
-----------------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -4,11 +4,12 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: Red-Black Trees
|
||||
.. index:: rbtrees
|
||||
|
||||
Red-Black Trees
|
||||
***************
|
||||
|
||||
.. index:: rbtrees
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -111,9 +112,10 @@ Examples for using the red-black trees can be found in the
|
||||
Directives
|
||||
==========
|
||||
|
||||
.. index:: rbtree doc
|
||||
|
||||
Documentation for the Red-Black Tree Directives
|
||||
-----------------------------------------------
|
||||
.. index:: rbtree doc
|
||||
|
||||
Source documentation for the Red-Black Tree API can be found in the generated
|
||||
Doxygen output for ``cpukit/sapi``.
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: regions
|
||||
|
||||
Region Manager
|
||||
**************
|
||||
|
||||
.. index:: regions
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -34,11 +34,12 @@ variable sized units. The directives provided by the region manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
Region Manager Definitions
|
||||
--------------------------
|
||||
.. index:: region, definition
|
||||
.. index:: segment, definition
|
||||
|
||||
Region Manager Definitions
|
||||
--------------------------
|
||||
|
||||
A region makes up a physically contiguous memory space with user-defined
|
||||
boundaries from which variable-sized segments are dynamically allocated and
|
||||
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
|
||||
free) on both sides to produce the largest possible unused block.
|
||||
|
||||
.. index:: region attribute set, building
|
||||
|
||||
Building an Attribute Set
|
||||
-------------------------
|
||||
.. index:: region attribute set, building
|
||||
|
||||
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
|
||||
@ -223,10 +225,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_create:
|
||||
.. index:: create a region
|
||||
|
||||
REGION_CREATE - Create a region
|
||||
-------------------------------
|
||||
.. index:: create a region
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -298,13 +301,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_ident:
|
||||
|
||||
REGION_IDENT - Get ID of a region
|
||||
---------------------------------
|
||||
.. index:: get ID of a region
|
||||
.. index:: obtain ID of a region
|
||||
.. index:: rtems_region_ident
|
||||
|
||||
REGION_IDENT - Get ID of a region
|
||||
---------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -340,11 +343,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_delete:
|
||||
.. index:: delete a region
|
||||
.. index:: rtems_region_delete
|
||||
|
||||
REGION_DELETE - Delete a region
|
||||
-------------------------------
|
||||
.. index:: delete a region
|
||||
.. index:: rtems_region_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -381,13 +384,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_extend:
|
||||
|
||||
REGION_EXTEND - Add memory to a region
|
||||
--------------------------------------
|
||||
.. index:: add memory to a region
|
||||
.. index:: region, add memory
|
||||
.. index:: rtems_region_extend
|
||||
|
||||
REGION_EXTEND - Add memory to a region
|
||||
--------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -434,11 +437,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_get_segment:
|
||||
.. index:: get segment from region
|
||||
.. index:: rtems_region_get_segment
|
||||
|
||||
REGION_GET_SEGMENT - Get segment from a region
|
||||
----------------------------------------------
|
||||
.. index:: get segment from region
|
||||
.. index:: rtems_region_get_segment
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -520,11 +523,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_return_segment:
|
||||
.. index:: return segment to region
|
||||
.. index:: rtems_region_return_segment
|
||||
|
||||
REGION_RETURN_SEGMENT - Return segment to a region
|
||||
--------------------------------------------------
|
||||
.. index:: return segment to region
|
||||
.. index:: rtems_region_return_segment
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -569,11 +572,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
--------------------------------------------------
|
||||
.. index:: get size of segment
|
||||
.. index:: rtems_region_get_segment_size
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -611,11 +614,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_region_resize_segment:
|
||||
.. index:: resize segment
|
||||
.. index:: rtems_region_resize_segment
|
||||
|
||||
REGION_RESIZE_SEGMENT - Change size of a segment
|
||||
------------------------------------------------
|
||||
.. index:: resize segment
|
||||
.. index:: rtems_region_resize_segment
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,6 +4,9 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: RTEMS Data Types
|
||||
.. index:: data types
|
||||
|
||||
RTEMS Data Types
|
||||
****************
|
||||
|
||||
|
@ -4,12 +4,12 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
Scheduling Concepts
|
||||
*******************
|
||||
|
||||
.. index:: scheduling
|
||||
.. index:: task scheduling
|
||||
|
||||
Scheduling Concepts
|
||||
*******************
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -39,11 +39,11 @@ The directives provided by the scheduler manager are:
|
||||
|
||||
- rtems_scheduler_remove_processor_ - Remove processor from a scheduler
|
||||
|
||||
.. index:: scheduling algorithms
|
||||
|
||||
Scheduling Algorithms
|
||||
---------------------
|
||||
|
||||
.. index:: scheduling algorithms
|
||||
|
||||
RTEMS provides a plugin framework which allows it to support multiple
|
||||
scheduling algorithms. RTEMS includes multiple scheduling algorithms and the
|
||||
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
|
||||
will use this on uniprocessor systems.
|
||||
|
||||
.. index:: priority scheduling
|
||||
|
||||
Priority Scheduling
|
||||
-------------------
|
||||
.. index:: priority scheduling
|
||||
|
||||
When using priority based scheduling, RTEMS allocates the processor using a
|
||||
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.
|
||||
|
||||
.. index:: earliest deadline first scheduling
|
||||
|
||||
Earliest Deadline First Scheduler
|
||||
---------------------------------
|
||||
.. index:: earliest deadline first scheduling
|
||||
|
||||
This is an alternative scheduler in RTEMS for single core applications. The
|
||||
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
|
||||
``rtems_rate_monotonic_delete`` calls clear the deadlines assigned to the task.
|
||||
|
||||
.. index:: constant bandwidth server scheduling
|
||||
|
||||
Constant Bandwidth Server Scheduling (CBS)
|
||||
------------------------------------------
|
||||
.. index:: constant bandwidth server scheduling
|
||||
|
||||
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
|
||||
@ -264,11 +267,11 @@ levels). This scheduler supports arbitrary task processor affinities. The
|
||||
worst-case run-time complexity of some scheduler operations exceeds
|
||||
:math:`O(n)` while :math:`n` is the count of ready tasks.
|
||||
|
||||
.. index:: scheduling mechanisms
|
||||
|
||||
Scheduling Modification Mechanisms
|
||||
==================================
|
||||
|
||||
.. index:: scheduling mechanisms
|
||||
|
||||
RTEMS provides four mechanisms which allow the user to alter the task
|
||||
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
|
||||
required, overriding the other factors presented in the description.
|
||||
|
||||
.. index:: task priority
|
||||
|
||||
Task Priority and Scheduling
|
||||
----------------------------
|
||||
.. index:: task priority
|
||||
|
||||
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
|
||||
@ -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
|
||||
scheduler is 255.
|
||||
|
||||
.. index:: preemption
|
||||
|
||||
Preemption
|
||||
----------
|
||||
.. index:: preemption
|
||||
|
||||
Another way the user can alter the basic scheduling algorithm is by
|
||||
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.
|
||||
It only applies once a task has control of the processor.
|
||||
|
||||
Timeslicing
|
||||
-----------
|
||||
.. index:: timeslicing
|
||||
.. index:: round robin scheduling
|
||||
|
||||
Timeslicing
|
||||
-----------
|
||||
|
||||
Timeslicing or round-robin scheduling is an additional method which can be used
|
||||
to alter the basic scheduling algorithm. Like preemption, timeslicing is
|
||||
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 has not used up its entire timeslice.
|
||||
|
||||
.. index:: manual round robin
|
||||
|
||||
Manual Round-Robin
|
||||
------------------
|
||||
.. index:: manual round robin
|
||||
|
||||
The final mechanism for altering the RTEMS scheduling algorithm is called
|
||||
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
|
||||
lose control of the processor.
|
||||
|
||||
.. index:: dispatching
|
||||
|
||||
Dispatching Tasks
|
||||
=================
|
||||
.. index:: dispatching
|
||||
|
||||
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
|
||||
@ -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
|
||||
was not the last task to utilize the coprocessor.
|
||||
|
||||
.. index:: 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
|
||||
states. These states are: executing, ready, blocked, dormant, and
|
||||
|
@ -4,14 +4,14 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
Semaphore Manager
|
||||
*****************
|
||||
|
||||
.. index:: semaphores
|
||||
.. index:: binary semaphores
|
||||
.. index:: counting semaphores
|
||||
.. index:: mutual exclusion
|
||||
|
||||
Semaphore Manager
|
||||
*****************
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -325,11 +325,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_semaphore_create:
|
||||
.. index:: create a semaphore
|
||||
.. index:: rtems_semaphore_create
|
||||
|
||||
SEMAPHORE_CREATE - Create a semaphore
|
||||
-------------------------------------
|
||||
.. index:: create a semaphore
|
||||
.. index:: rtems_semaphore_create
|
||||
|
||||
|
||||
CALLING SEQUENCE:
|
||||
@ -437,13 +437,12 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
---------------------------------------
|
||||
.. index:: get ID of a semaphore
|
||||
.. index:: obtain ID of a semaphore
|
||||
|
||||
.. index:: rtems_semaphore_ident
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -490,11 +489,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_semaphore_delete:
|
||||
.. index:: delete a semaphore
|
||||
.. index:: rtems_semaphore_delete
|
||||
|
||||
SEMAPHORE_DELETE - Delete a semaphore
|
||||
-------------------------------------
|
||||
.. index:: delete a semaphore
|
||||
.. index:: rtems_semaphore_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -546,13 +545,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_semaphore_obtain:
|
||||
|
||||
SEMAPHORE_OBTAIN - Acquire a semaphore
|
||||
--------------------------------------
|
||||
.. index:: obtain a semaphore
|
||||
.. index:: lock a semaphore
|
||||
.. index:: rtems_semaphore_obtain
|
||||
|
||||
SEMAPHORE_OBTAIN - Acquire a semaphore
|
||||
--------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -645,13 +644,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_semaphore_release:
|
||||
|
||||
SEMAPHORE_RELEASE - Release a semaphore
|
||||
---------------------------------------
|
||||
.. index:: release a semaphore
|
||||
.. index:: unlock a semaphore
|
||||
.. index:: rtems_semaphore_release
|
||||
|
||||
SEMAPHORE_RELEASE - Release a semaphore
|
||||
---------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -706,13 +705,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_semaphore_flush:
|
||||
|
||||
SEMAPHORE_FLUSH - Unblock all tasks waiting on a semaphore
|
||||
----------------------------------------------------------
|
||||
.. index:: flush a semaphore
|
||||
.. index:: unblock all tasks waiting on a semaphore
|
||||
.. index:: rtems_semaphore_flush
|
||||
|
||||
SEMAPHORE_FLUSH - Unblock all tasks waiting on a semaphore
|
||||
----------------------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -762,11 +761,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
------------------------------------------------------------------
|
||||
.. index:: set priority by scheduler for a semaphore
|
||||
.. index:: rtems_semaphore_set_priority
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: signals
|
||||
|
||||
Signal Manager
|
||||
**************
|
||||
|
||||
.. index:: signals
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -22,11 +22,12 @@ communication. The directives provided by the signal manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
Signal Manager Definitions
|
||||
--------------------------
|
||||
.. index:: asynchronous signal routine
|
||||
.. index:: ASR
|
||||
|
||||
Signal Manager Definitions
|
||||
--------------------------
|
||||
|
||||
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
|
||||
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
|
||||
been processed by that task's ASR.
|
||||
|
||||
A Comparison of ASRs and ISRs
|
||||
-----------------------------
|
||||
.. index:: ASR vs. ISR
|
||||
.. 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
|
||||
exceptions:
|
||||
|
||||
@ -66,9 +68,10 @@ exceptions:
|
||||
- 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.
|
||||
|
||||
.. index:: signal set, building
|
||||
|
||||
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
|
||||
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
|
||||
``RTEMS_SIGNAL_6 | RTEMS_SIGNAL_15 | RTEMS_SIGNAL_31``.
|
||||
|
||||
.. index:: ASR mode, building
|
||||
|
||||
Building an ASR Mode
|
||||
--------------------
|
||||
.. index:: ASR mode, building
|
||||
|
||||
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
|
||||
@ -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 to that task once.
|
||||
|
||||
.. index:: rtems_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
|
||||
conventions:
|
||||
|
||||
.. index:: rtems_asr
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
rtems_asr user_routine(
|
||||
@ -208,13 +212,13 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_signal_catch:
|
||||
|
||||
SIGNAL_CATCH - Establish an ASR
|
||||
-------------------------------
|
||||
.. index:: establish an ASR
|
||||
.. index:: install an ASR
|
||||
.. index:: rtems_signal_catch
|
||||
|
||||
SIGNAL_CATCH - Establish an ASR
|
||||
-------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -269,11 +273,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_signal_send:
|
||||
.. index:: send signal set
|
||||
.. index:: rtems_signal_send
|
||||
|
||||
SIGNAL_SEND - Send signal set to a task
|
||||
---------------------------------------
|
||||
.. index:: send signal set
|
||||
.. index:: rtems_signal_send
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,11 +4,12 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: Stack Bounds Checker
|
||||
.. index:: stack
|
||||
|
||||
Stack Bounds Checker
|
||||
********************
|
||||
|
||||
.. index:: stack
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
|
@ -5,6 +5,9 @@
|
||||
.. COMMENT: Copyright (c) 2017 embedded brains GmbH.
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: Symmetric Multiprocessing
|
||||
.. index:: 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
|
||||
for small windows in critical sections to be hit.
|
||||
|
||||
Task Affinity
|
||||
-------------
|
||||
.. index:: task affinity
|
||||
.. index:: thread affinity
|
||||
|
||||
Task Affinity
|
||||
-------------
|
||||
|
||||
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
|
||||
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
|
||||
concept implementation. See https://devel.rtems.org/ticket/2510.
|
||||
|
||||
Task Migration
|
||||
--------------
|
||||
.. index:: task migration
|
||||
.. index:: thread migration
|
||||
|
||||
Task Migration
|
||||
--------------
|
||||
|
||||
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.
|
||||
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: tasks
|
||||
|
||||
Task Manager
|
||||
************
|
||||
|
||||
.. index:: tasks
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -56,9 +56,10 @@ and administer tasks. The directives provided by the task manager are:
|
||||
Background
|
||||
==========
|
||||
|
||||
.. index:: task, definition
|
||||
|
||||
Task Definition
|
||||
---------------
|
||||
.. index:: task, definition
|
||||
|
||||
Many definitions of a task have been proposed in computer literature.
|
||||
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
|
||||
context area in the task's TCB.
|
||||
|
||||
.. index:: task name
|
||||
|
||||
Task Name
|
||||
---------
|
||||
.. index:: task name
|
||||
|
||||
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
|
||||
@ -116,9 +118,10 @@ The maximum size of a task name is defined by the application configuration
|
||||
option :ref:`CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
|
||||
<CONFIGURE_MAXIMUM_THREAD_NAME_SIZE>`.
|
||||
|
||||
.. index:: task states
|
||||
|
||||
Task States
|
||||
-----------
|
||||
.. index:: task 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
|
||||
scheduling of a task is based on its current state and priority.
|
||||
|
||||
Task Priority
|
||||
-------------
|
||||
.. index:: task priority
|
||||
.. index:: priority, task
|
||||
.. index:: rtems_task_priority
|
||||
|
||||
Task Priority
|
||||
-------------
|
||||
|
||||
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
|
||||
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
|
||||
more likely it is to receive processor execution time.
|
||||
|
||||
Task Mode
|
||||
---------
|
||||
.. index:: task mode
|
||||
.. index:: rtems_task_mode
|
||||
|
||||
Task Mode
|
||||
---------
|
||||
|
||||
A task's execution mode is a combination of the following four components:
|
||||
|
||||
- preemption
|
||||
@ -242,11 +247,12 @@ the task will execute at interrupt level n.
|
||||
The set of default modes may be selected by specifying the
|
||||
``RTEMS_DEFAULT_MODES`` constant.
|
||||
|
||||
Accessing Task Arguments
|
||||
------------------------
|
||||
.. index:: task arguments
|
||||
.. index:: task prototype
|
||||
|
||||
Accessing Task Arguments
|
||||
------------------------
|
||||
|
||||
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
|
||||
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
|
||||
an index into an array of parameter blocks.
|
||||
|
||||
.. index:: floating point
|
||||
|
||||
Floating Point Considerations
|
||||
-----------------------------
|
||||
.. index:: floating point
|
||||
|
||||
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
|
||||
@ -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
|
||||
condition.
|
||||
|
||||
.. index:: task attributes, building
|
||||
|
||||
Building a Task Attribute Set
|
||||
-----------------------------
|
||||
.. index:: task attributes, building
|
||||
|
||||
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:
|
||||
@ -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
|
||||
``RTEMS_GLOBAL | RTEMS_FLOATING_POINT``.
|
||||
|
||||
.. index:: task mode, building
|
||||
|
||||
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
|
||||
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
|
||||
against the current system configuration.
|
||||
|
||||
Transition Advice for Obsolete Notepads
|
||||
---------------------------------------
|
||||
|
||||
.. index:: rtems_task_get_note
|
||||
.. index:: rtems_task_set_note
|
||||
|
||||
Transition Advice for Obsolete Notepads
|
||||
---------------------------------------
|
||||
|
||||
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
|
||||
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
|
||||
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_get
|
||||
.. index:: rtems_task_variable_delete
|
||||
|
||||
Transition Advice for Obsolete Task Variables
|
||||
---------------------------------------------
|
||||
|
||||
Task notepads and the associated directives :ref:`rtems_task_variable_add`,
|
||||
: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
|
||||
@ -590,11 +599,11 @@ related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_create:
|
||||
.. index:: create a task
|
||||
.. index:: rtems_task_create
|
||||
|
||||
TASK_CREATE - Create a task
|
||||
---------------------------
|
||||
.. index:: create a task
|
||||
.. index:: rtems_task_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -735,11 +744,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_ident:
|
||||
.. index:: get ID of a task
|
||||
.. index:: rtems_task_ident
|
||||
|
||||
TASK_IDENT - Get ID of a task
|
||||
-----------------------------
|
||||
.. index:: get ID of a task
|
||||
.. index:: rtems_task_ident
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -789,11 +798,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_self:
|
||||
.. index:: obtain ID of caller
|
||||
.. index:: rtems_task_self
|
||||
|
||||
TASK_SELF - Obtain ID of caller
|
||||
-------------------------------
|
||||
.. index:: obtain ID of caller
|
||||
.. index:: rtems_task_self
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -815,11 +824,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_start:
|
||||
.. index:: starting a task
|
||||
.. index:: rtems_task_start
|
||||
|
||||
TASK_START - Start a task
|
||||
-------------------------
|
||||
.. index:: starting a task
|
||||
.. index:: rtems_task_start
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -869,11 +878,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_restart:
|
||||
.. index:: restarting a task
|
||||
.. index:: rtems_task_restart
|
||||
|
||||
TASK_RESTART - Restart a task
|
||||
-----------------------------
|
||||
.. index:: restarting a task
|
||||
.. index:: rtems_task_restart
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -931,11 +940,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_delete:
|
||||
.. index:: deleting a task
|
||||
.. index:: rtems_task_delete
|
||||
|
||||
TASK_DELETE - Delete a task
|
||||
---------------------------
|
||||
.. index:: deleting a task
|
||||
.. index:: rtems_task_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -987,11 +996,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_suspend:
|
||||
.. index:: suspending a task
|
||||
.. index:: rtems_task_suspend
|
||||
|
||||
TASK_SUSPEND - Suspend a task
|
||||
-----------------------------
|
||||
.. index:: suspending a task
|
||||
.. index:: rtems_task_suspend
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -1034,11 +1043,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_resume:
|
||||
.. index:: resuming a task
|
||||
.. index:: rtems_task_resume
|
||||
|
||||
TASK_RESUME - Resume a task
|
||||
---------------------------
|
||||
.. index:: resuming a task
|
||||
.. index:: rtems_task_resume
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -1079,11 +1088,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_is_suspended:
|
||||
.. index:: is task suspended
|
||||
.. index:: rtems_task_is_suspended
|
||||
|
||||
TASK_IS_SUSPENDED - Determine if a task is Suspended
|
||||
----------------------------------------------------
|
||||
.. index:: is task suspended
|
||||
.. index:: rtems_task_is_suspended
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -1117,15 +1126,15 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_set_priority:
|
||||
|
||||
TASK_SET_PRIORITY - Set task priority
|
||||
-------------------------------------
|
||||
.. index:: rtems_task_set_priority
|
||||
.. index:: current task priority
|
||||
.. index:: set task priority
|
||||
.. index:: get task priority
|
||||
.. index:: obtain task priority
|
||||
|
||||
TASK_SET_PRIORITY - Set task priority
|
||||
-------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -1181,14 +1190,14 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_get_priority:
|
||||
|
||||
TASK_GET_PRIORITY - Get task priority
|
||||
-------------------------------------
|
||||
.. index:: rtems_task_get_priority
|
||||
.. index:: current task priority
|
||||
.. index:: get task priority
|
||||
.. index:: obtain task priority
|
||||
|
||||
TASK_GET_PRIORITY - Get task priority
|
||||
-------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -1230,9 +1239,6 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_mode:
|
||||
|
||||
TASK_MODE - Change the current task mode
|
||||
----------------------------------------
|
||||
.. index:: current task mode
|
||||
.. index:: set task mode
|
||||
.. index:: get task mode
|
||||
@ -1241,6 +1247,9 @@ TASK_MODE - Change the current task mode
|
||||
.. index:: obtain task mode
|
||||
.. index:: rtems_task_mode
|
||||
|
||||
TASK_MODE - Change the current task mode
|
||||
----------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -1309,13 +1318,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_wake_after:
|
||||
|
||||
TASK_WAKE_AFTER - Wake up after interval
|
||||
----------------------------------------
|
||||
.. index:: delay a task for an interval
|
||||
.. index:: wake up after an interval
|
||||
.. index:: rtems_task_wake_after
|
||||
|
||||
TASK_WAKE_AFTER - Wake up after interval
|
||||
----------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -1352,13 +1361,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_wake_when:
|
||||
|
||||
TASK_WAKE_WHEN - Wake up when specified
|
||||
---------------------------------------
|
||||
.. index:: delay a task until a wall time
|
||||
.. index:: wake up at a wall time
|
||||
.. index:: rtems_task_wake_when
|
||||
|
||||
TASK_WAKE_WHEN - Wake up when specified
|
||||
---------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -1608,11 +1617,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_iterate:
|
||||
.. index:: iterate over all threads
|
||||
.. index:: rtems_task_iterate
|
||||
|
||||
TASK_ITERATE - Iterate Over Tasks
|
||||
---------------------------------
|
||||
.. index:: iterate over all threads
|
||||
.. index:: rtems_task_iterate
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -1650,10 +1659,10 @@ Deprecated and Removed Directives
|
||||
\clearpage
|
||||
|
||||
.. _rtems_iterate_over_all_threads:
|
||||
.. index:: rtems_iterate_over_all_threads
|
||||
|
||||
ITERATE_OVER_ALL_THREADS - Iterate Over Tasks
|
||||
---------------------------------------------
|
||||
.. index:: rtems_iterate_over_all_threads
|
||||
|
||||
.. warning::
|
||||
|
||||
@ -1689,11 +1698,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_get_note:
|
||||
.. index:: get task notepad entry
|
||||
.. index:: rtems_task_get_note
|
||||
|
||||
TASK_GET_NOTE - Get task notepad entry
|
||||
--------------------------------------
|
||||
.. index:: get task notepad entry
|
||||
.. index:: rtems_task_get_note
|
||||
|
||||
.. warning::
|
||||
|
||||
@ -1742,11 +1751,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_set_note:
|
||||
.. index:: set task notepad entry
|
||||
.. index:: rtems_task_set_note
|
||||
|
||||
TASK_SET_NOTE - Set task notepad entry
|
||||
--------------------------------------
|
||||
.. index:: set task notepad entry
|
||||
.. index:: rtems_task_set_note
|
||||
|
||||
.. warning::
|
||||
|
||||
@ -1794,14 +1803,14 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_variable_add:
|
||||
|
||||
TASK_VARIABLE_ADD - Associate per task variable
|
||||
-----------------------------------------------
|
||||
.. index:: per-task variable
|
||||
.. index:: task private variable
|
||||
.. index:: task private data
|
||||
.. index:: rtems_task_variable_add
|
||||
|
||||
TASK_VARIABLE_ADD - Associate per task variable
|
||||
-----------------------------------------------
|
||||
|
||||
.. warning::
|
||||
|
||||
This directive was removed in RTEMS 5.1.
|
||||
@ -1857,13 +1866,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_variable_get:
|
||||
|
||||
TASK_VARIABLE_GET - Obtain value of a per task variable
|
||||
-------------------------------------------------------
|
||||
.. index:: get per-task variable
|
||||
.. index:: obtain per-task variable
|
||||
.. index:: rtems_task_variable_get
|
||||
|
||||
TASK_VARIABLE_GET - Obtain value of a per task variable
|
||||
-------------------------------------------------------
|
||||
|
||||
.. warning::
|
||||
|
||||
This directive was removed in RTEMS 5.1.
|
||||
@ -1914,14 +1923,14 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_task_variable_delete:
|
||||
|
||||
TASK_VARIABLE_DELETE - Remove per task variable
|
||||
-----------------------------------------------
|
||||
.. index:: per-task variable
|
||||
.. index:: task private variable
|
||||
.. index:: task private data
|
||||
.. index:: rtems_task_variable_delete
|
||||
|
||||
TASK_VARIABLE_DELETE - Remove per task variable
|
||||
-----------------------------------------------
|
||||
|
||||
.. warning::
|
||||
|
||||
This directive was removed in RTEMS 5.1.
|
||||
|
@ -4,11 +4,11 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: timers
|
||||
|
||||
Timer Manager
|
||||
*************
|
||||
|
||||
.. index:: timers
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@ -84,14 +84,14 @@ service routine finished its work.
|
||||
The Timer Server is designed to remain blocked until a task-based timer fires.
|
||||
This reduces the execution overhead of the Timer Server.
|
||||
|
||||
.. index:: rtems_timer_service_routine
|
||||
|
||||
Timer Service Routines
|
||||
----------------------
|
||||
|
||||
The timer service routine should adhere to C calling conventions and have a
|
||||
prototype similar to the following:
|
||||
|
||||
.. index:: rtems_timer_service_routine
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
rtems_timer_service_routine user_routine(
|
||||
@ -195,11 +195,11 @@ related constants, usage, and status codes.
|
||||
|
||||
\clearpage
|
||||
.. _rtems_timer_create:
|
||||
.. index:: create a timer
|
||||
.. index:: rtems_timer_create
|
||||
|
||||
TIMER_CREATE - Create a timer
|
||||
-----------------------------
|
||||
.. index:: create a timer
|
||||
.. index:: rtems_timer_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -241,11 +241,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_ident:
|
||||
.. index:: obtain the ID of a timer
|
||||
.. index:: rtems_timer_ident
|
||||
|
||||
TIMER_IDENT - Get ID of a timer
|
||||
-------------------------------
|
||||
.. index:: obtain the ID of a timer
|
||||
.. index:: rtems_timer_ident
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -281,11 +281,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_cancel:
|
||||
.. index:: cancel a timer
|
||||
.. index:: rtems_timer_cancel
|
||||
|
||||
TIMER_CANCEL - Cancel a timer
|
||||
-----------------------------
|
||||
.. index:: cancel a timer
|
||||
.. index:: rtems_timer_cancel
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -316,11 +316,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_delete:
|
||||
.. index:: delete a timer
|
||||
.. index:: rtems_timer_delete
|
||||
|
||||
TIMER_DELETE - Delete a timer
|
||||
-----------------------------
|
||||
.. index:: delete a timer
|
||||
.. index:: rtems_timer_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -355,11 +355,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_fire_after:
|
||||
.. index:: fire a timer after an interval
|
||||
.. index:: rtems_timer_fire_after
|
||||
|
||||
TIMER_FIRE_AFTER - Fire timer after interval
|
||||
--------------------------------------------
|
||||
.. index:: fire a timer after an interval
|
||||
.. index:: rtems_timer_fire_after
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -399,11 +399,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_fire_when:
|
||||
.. index:: fire a timer at wall time
|
||||
.. index:: rtems_timer_fire_when
|
||||
|
||||
TIMER_FIRE_WHEN - Fire timer when specified
|
||||
-------------------------------------------
|
||||
.. index:: fire a timer at wall time
|
||||
.. index:: rtems_timer_fire_when
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -447,11 +447,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_initiate_server:
|
||||
.. index:: initiate the Timer Server
|
||||
.. index:: rtems_timer_initiate_server
|
||||
|
||||
TIMER_INITIATE_SERVER - Initiate server for task-based timers
|
||||
-------------------------------------------------------------
|
||||
.. index:: initiate the Timer Server
|
||||
.. index:: rtems_timer_initiate_server
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -492,11 +492,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
--------------------------------------------------------------
|
||||
.. index:: fire task-based a timer after an interval
|
||||
.. index:: rtems_timer_server_fire_after
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -540,11 +540,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _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
|
||||
-------------------------------------------------------------
|
||||
.. index:: fire a task-based timer at wall time
|
||||
.. index:: rtems_timer_server_fire_when
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -592,11 +592,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timer_reset:
|
||||
.. index:: reset a timer
|
||||
.. index:: rtems_timer_reset
|
||||
|
||||
TIMER_RESET - Reset an interval timer
|
||||
-------------------------------------
|
||||
.. index:: reset a timer
|
||||
.. index:: rtems_timer_reset
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -4,6 +4,8 @@
|
||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. index:: TImespec Helpers
|
||||
|
||||
Timespec Helpers
|
||||
****************
|
||||
|
||||
@ -124,11 +126,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_set:
|
||||
.. index:: set struct timespec instance
|
||||
.. index:: rtems_timespec_set
|
||||
|
||||
TIMESPEC_SET - Set struct timespec Instance
|
||||
-------------------------------------------
|
||||
.. index:: set struct timespec instance
|
||||
.. index:: rtems_timespec_set
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -155,10 +157,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_zero:
|
||||
.. index:: rtems_timespec_zero
|
||||
|
||||
TIMESPEC_ZERO - Zero struct timespec Instance
|
||||
---------------------------------------------
|
||||
.. index:: rtems_timespec_zero
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -182,10 +184,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_is_valid:
|
||||
.. index:: rtems_timespec_is_valid
|
||||
|
||||
TIMESPEC_IS_VALID - Check validity of a struct timespec instance
|
||||
----------------------------------------------------------------
|
||||
.. index:: rtems_timespec_is_valid
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -211,10 +213,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_add_to:
|
||||
.. index:: rtems_timespec_add_to
|
||||
|
||||
TIMESPEC_ADD_TO - Add Two struct timespec Instances
|
||||
---------------------------------------------------
|
||||
.. index:: rtems_timespec_add_to
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -240,10 +242,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_subtract:
|
||||
.. index:: rtems_timespec_subtract
|
||||
|
||||
TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances
|
||||
----------------------------------------------------------
|
||||
.. index:: rtems_timespec_subtract
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -274,10 +276,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_divide:
|
||||
.. index:: rtems_timespec_divide
|
||||
|
||||
TIMESPEC_DIVIDE - Divide Two struct timespec Instances
|
||||
------------------------------------------------------
|
||||
.. index:: rtems_timespec_divide
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -314,10 +316,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_divide_by_integer:
|
||||
.. index:: rtems_timespec_divide_by_integer
|
||||
|
||||
TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer
|
||||
----------------------------------------------------------------------------
|
||||
.. index:: rtems_timespec_divide_by_integer
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -345,10 +347,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_less_than:
|
||||
.. index:: rtems_timespec_less_than
|
||||
|
||||
TIMESPEC_LESS_THAN - Less than operator
|
||||
---------------------------------------
|
||||
.. index:: rtems_timespec_less_than
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -375,10 +377,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_greater_than:
|
||||
.. index:: rtems_timespec_greater_than
|
||||
|
||||
TIMESPEC_GREATER_THAN - Greater than operator
|
||||
---------------------------------------------
|
||||
.. index:: rtems_timespec_greater_than
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -403,10 +405,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_equal_to:
|
||||
.. index:: rtems_timespec_equal_to
|
||||
|
||||
TIMESPEC_EQUAL_TO - Check equality of timespecs
|
||||
-----------------------------------------------
|
||||
.. index:: rtems_timespec_equal_to
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -431,10 +433,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_get_seconds:
|
||||
.. index:: rtems_timespec_get_seconds
|
||||
|
||||
TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance
|
||||
----------------------------------------------------------------------
|
||||
.. index:: rtems_timespec_get_seconds
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -459,10 +461,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_get_nanoseconds:
|
||||
.. index:: rtems_timespec_get_nanoseconds
|
||||
|
||||
TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance
|
||||
----------------------------------------------------------------------------------
|
||||
.. index:: rtems_timespec_get_nanoseconds
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -487,10 +489,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_to_ticks:
|
||||
.. index:: rtems_timespec_to_ticks
|
||||
|
||||
TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks
|
||||
-------------------------------------------------------------
|
||||
.. index:: rtems_timespec_to_ticks
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -514,10 +516,10 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_timespec_from_ticks:
|
||||
.. index:: rtems_timespec_from_ticks
|
||||
|
||||
TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation
|
||||
---------------------------------------------------------------------
|
||||
.. index:: rtems_timespec_from_ticks
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
@ -5,12 +5,11 @@
|
||||
.. COMMENT: All rights reserved.
|
||||
|
||||
.. _User Extensions Manager:
|
||||
.. index:: user extensions
|
||||
|
||||
User Extensions Manager
|
||||
***********************
|
||||
|
||||
.. index:: user extensions
|
||||
|
||||
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
|
||||
invoked in an arbitrary context.
|
||||
|
||||
Extension Sets
|
||||
--------------
|
||||
.. index:: user extension set
|
||||
.. index:: rtems_extensions_table
|
||||
|
||||
Extension Sets
|
||||
--------------
|
||||
|
||||
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
|
||||
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_extensions_table;
|
||||
|
||||
.. index:: TCB extension area
|
||||
|
||||
TCB Extension Area
|
||||
------------------
|
||||
.. index:: TCB extension area
|
||||
|
||||
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
|
||||
invoked after that of the other thread delete extensions.
|
||||
|
||||
.. index:: rtems_task_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`.
|
||||
The thread create extension is defined as follows.
|
||||
|
||||
.. index:: rtems_task_create_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
enabled (except during system initialization).
|
||||
|
||||
.. index:: rtems_task_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`.
|
||||
The thread start extension is defined as follows.
|
||||
|
||||
.. index:: rtems_task_start_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef void ( *rtems_task_start_extension )(
|
||||
@ -228,6 +229,8 @@ invoked.
|
||||
The thread start extension is invoked in forward order with thread dispatching
|
||||
disabled.
|
||||
|
||||
.. index:: rtems_task_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>`.
|
||||
The thread restart extension is defined as follows.
|
||||
|
||||
.. index:: rtems_task_restart_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
extensions lead to recursion.
|
||||
|
||||
.. index:: rtems_task_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
|
||||
defined as follows.
|
||||
|
||||
.. index:: rtems_task_switch_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
by the thread switch extension.
|
||||
|
||||
.. index:: rtems_task_begin_extension
|
||||
|
||||
Thread Begin Extension
|
||||
----------------------
|
||||
|
||||
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.
|
||||
|
||||
.. index:: rtems_task_begin_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
thread before the thread begin extension is invoked.
|
||||
|
||||
.. index:: rtems_task_exitted_extension
|
||||
|
||||
Thread Exitted Extension
|
||||
------------------------
|
||||
|
||||
The thread exitted extension is invoked once the thread entry function returns.
|
||||
The thread exitted extension is defined as follows.
|
||||
|
||||
.. index:: rtems_task_exitted_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef void ( *rtems_task_exitted_extension )(
|
||||
@ -322,6 +323,8 @@ thread.
|
||||
|
||||
This extension is invoked in forward order with thread dispatching enabled.
|
||||
|
||||
.. index:: rtems_task_terminate_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
|
||||
extension is defined as follows.
|
||||
|
||||
.. index:: rtems_task_terminate_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
requests issued by thread terminate extensions lead to recursion.
|
||||
|
||||
.. index:: rtems_task_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
|
||||
extension is defined as follows.
|
||||
|
||||
.. index:: rtems_task_delete_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
result of a lazy garbage collection of zombie threads.
|
||||
|
||||
.. index:: rtems_fatal_extension
|
||||
|
||||
Fatal Error Extension
|
||||
---------------------
|
||||
|
||||
The fatal error extension is invoked during :ref:`system termination
|
||||
<Terminate>`. The fatal error extension is defined as follows.
|
||||
|
||||
.. index:: rtems_fatal_extension
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef void( *rtems_fatal_extension )(
|
||||
@ -424,11 +425,11 @@ sequence, related constants, usage, and status codes.
|
||||
\clearpage
|
||||
|
||||
.. _rtems_extension_create:
|
||||
.. index:: create an extension set
|
||||
.. index:: rtems_extension_create
|
||||
|
||||
EXTENSION_CREATE - Create a extension set
|
||||
-----------------------------------------
|
||||
.. index:: create an extension set
|
||||
.. index:: rtems_extension_create
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
@ -472,13 +473,13 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_extension_ident:
|
||||
|
||||
EXTENSION_IDENT - Get ID of a extension set
|
||||
-------------------------------------------
|
||||
.. index:: get ID of an extension set
|
||||
.. index:: obtain ID of an extension set
|
||||
.. index:: rtems_extension_ident
|
||||
|
||||
EXTENSION_IDENT - Get ID of a extension set
|
||||
-------------------------------------------
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
||||
@ -513,11 +514,11 @@ NOTES:
|
||||
\clearpage
|
||||
|
||||
.. _rtems_extension_delete:
|
||||
.. index:: delete an extension set
|
||||
.. index:: rtems_extension_delete
|
||||
|
||||
EXTENSION_DELETE - Delete a extension set
|
||||
-----------------------------------------
|
||||
.. index:: delete an extension set
|
||||
.. index:: rtems_extension_delete
|
||||
|
||||
CALLING SEQUENCE:
|
||||
.. code-block:: c
|
||||
|
Loading…
x
Reference in New Issue
Block a user