summaryrefslogtreecommitdiffstats
path: root/c-user/glossary.rst
diff options
context:
space:
mode:
Diffstat (limited to 'c-user/glossary.rst')
-rw-r--r--c-user/glossary.rst530
1 files changed, 482 insertions, 48 deletions
diff --git a/c-user/glossary.rst b/c-user/glossary.rst
index d0996e8..2516e90 100644
--- a/c-user/glossary.rst
+++ b/c-user/glossary.rst
@@ -1,6 +1,8 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0
-.. Copyright (C) 2017, 2019 embedded brains GmbH (http://www.embedded-brains.de)
+.. Copyright (C) 2022, 2023 Trinity College Dublin
+.. Copyright (C) 2020 Richi Dubey (richidubey@gmail.com)
+.. Copyright (C) 2015, 2023 embedded brains GmbH & Co. KG
.. Copyright (C) 1988, 1998 On-Line Applications Research Corporation (OAR)
Glossary
@@ -10,24 +12,41 @@ Glossary
:sorted:
ABI
- An acronym for Application Binary Interface.
+ This term is an acronym for Application Binary Interface.
active
A term used to describe an object which has been created by an
application.
+ AMP
+ This term is an acronym for Asymmetric Multiprocessing.
+
+ APA
+ This term is an acronym for Arbitrary Processor Affinity. APA schedulers
+ allow a thread to have an arbitrary affinity to a processor set, rather than
+ a restricted mapping to only one processor of the set or the ability to run
+ on all processors of the set.
+
+ It has two variants, :term:`Weak APA` and :term:`Strong APA`.
+
aperiodic task
A task which must execute only at irregular intervals and has only a soft
deadline.
API
- An acronym for Application Programming Interface.
+ This term is an acronym for Application Programming Interface.
application
In this document, software which makes use of RTEMS.
ASR
- An acronym for :term:`Asynchronous Signal Routine`.
+ This term is an acronym for :term:`Asynchronous Signal Routine`.
+
+ assembler language
+ The assembler language is a programming language which can be translated very
+ easily into machine code and data. For this project assembler languages are
+ restricted to languages accepted by the :term:`GNU` assembler
+ program for the target architectures.
asynchronous
Not related in order or timing to other occurrences in the system.
@@ -44,6 +63,9 @@ Glossary
A term used to describe a task that has been unblocked and may be
scheduled to the CPU.
+ BCB
+ This term is an acronym for Barrier Control Block.
+
big endian
A data representation scheme in which the bytes composing a numeric value
are arranged such that the most significant byte is at the lowest
@@ -71,17 +93,33 @@ Glossary
To simultaneously send a message to a logical set of destinations.
BSP
- An acronym for :term:`Board Support Package`.
+ This term is an acronym for :term:`Board Support Package`.
buffer
A fixed length block of memory allocated from a partition.
+ C language
+ The C language for this project is defined in terms of
+ :term:`C11`.
+
C++11
The standard ISO/IEC 14882:2011.
+ C++14
+ The standard ISO/IEC 14882:2014.
+
+ C++17
+ The standard ISO/IEC 14882:2017.
+
+ C++20
+ The standard ISO/IEC 14882:2020.
+
C11
The standard ISO/IEC 9899:2011.
+ C17
+ The standard ISO/IEC 9899:2018.
+
calling convention
The processor and compiler dependent rules which define the mechanism
used to invoke subroutines in a high-level language. These rules define
@@ -89,7 +127,7 @@ Glossary
set which must be preserved.
CCB
- An acronym for Change Control Board.
+ This term is an acronym for Change Control Board.
Central Processing Unit
This term is equivalent to the terms processor and microprocessor.
@@ -99,6 +137,39 @@ Glossary
of elements. It differs from an array in that it is not limited to a
predefined size.
+ Clock Driver
+ The Clock Driver is a driver which provides the :term:`clock tick` and a
+ time counter. The time counter is used to drive the :term:`CLOCK_REALTIME`
+ and :term:`CLOCK_MONOTONIC`. The Clock Driver can be initialized by the
+ application with the :ref:`CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER` and
+ :ref:`CONFIGURE_MICROSECONDS_PER_TICK` application configuration options.
+
+ clock tick
+ The clock tick is a coarse time measure provided by RTEMS. The
+ :term:`Clock Driver` emits clock ticks at rate specified by the
+ :ref:`CONFIGURE_MICROSECONDS_PER_TICK` application configuration option. In
+ contrast to :term:`CLOCK_REALTIME` and :term:`CLOCK_MONOTONIC`, the clock
+ tick rate is not affected by incremental adjustments.
+
+ CLOCK_MONOTONIC
+ The CLOCK_MONOTONIC is a clock provided by RTEMS which measures the time
+ since an unspecified starting point. In contrast to :term:`CLOCK_REALTIME`,
+ this clock cannot be set. It may be affected by incremental adjustments for
+ example carried out by the :term:`NTP` or the use of a :term:`PPS` signal.
+ See also :term:`CLOCK_REALTIME`, :term:`clock tick`, and
+ :term:`Clock Driver`.
+
+ CLOCK_REALTIME
+ The CLOCK_REALTIME is a clock provided by RTEMS which measures the real time
+ (also known as wall-clock time). It is defined by :term:`POSIX`. In
+ particular, every day is treated as if it contains exactly 86400 seconds and
+ leap seconds are ignored. This clock can be set by the application which may
+ result in time jumps. It may be affected by incremental adjustments for
+ example carried out by the :term:`NTP` or the use of a :term:`PPS` signal.
+ RTEMS can represent time points of this clock in nanoseconds ranging from
+ 1988-01-01T00:00:00.000000000Z to 2514-05-31T01:53:03.999999999Z. See also
+ :term:`CLOCK_MONOTONIC`, :term:`clock tick`, and :term:`Clock Driver`.
+
cluster
We have clustered scheduling in case the set of processors of a system is
partitioned into non-empty pairwise disjoint subsets. These subsets are
@@ -130,14 +201,22 @@ Glossary
of the executive should not be used directly by applications.
CPU
- An acronym for :term:`Central Processing Unit`.
+ This term is an acronym for :term:`Central Processing Unit`.
critical section
A section of code which must be executed indivisibly.
CRT
- An acronym for Cathode Ray Tube. Normally used in reference to the
- man-machine interface.
+ This term is an acronym for Cathode Ray Tube. Normally used in reference to
+ the man-machine interface.
+
+ current priority
+ The current priority of a :term:`task` is the :term:`task priority` with
+ respect to the :term:`home scheduler` of the task. It is an aggregation of
+ the :term:`real priority` and temporary priority adjustments due to locking
+ protocols, the rate-monotonic period objects on some schedulers such as EDF,
+ and the :term:`POSIX` sporadic server. The current priority is an
+ :term:`eligible priority`.
deadline
A fixed time limit by which a task must have completed a set of actions.
@@ -171,12 +250,38 @@ Glossary
The state entered by a task after it is created and before it has been
started.
+ DPCB
+ This term is an acronym for Dual-Ported Memory Control Block.
+
dual-ported
A term used to describe memory which can be accessed at two different
addresses.
+ dynamic extension sets
+ The dynamic extension sets are a list of :term:`user extensions`. The list
+ is defined by the system services used by the application and directive calls
+ such as :ref:`InterfaceRtemsExtensionCreate`. See also
+ :term:`initial extension sets`.
+
EARS
- An acronym for Easy Approach to Requirements Syntax.
+ This term is an acronym for Easy Approach to Requirements Syntax.
+
+ EDF
+ This term is an acronym for Earliest Deadline First.
+
+ ELF
+ This term is an acronym for
+ `Executable and Linkable Format <https://en.wikipedia.org/wiki/Executable_and_Linkable_Format>`_.
+
+ eligible priority
+ An eligible priority of a :term:`task` is the :term:`task priority` with
+ respect to the corresponding :term:`eligible scheduler` of the task. An
+ eligible priority is either the :term:`current priority` or a
+ :term:`helping priority` of a task.
+
+ eligible scheduler
+ An eligible scheduler of a :term:`task` is a :term:`scheduler` which can be
+ used by the task to allocate a processor for the task.
embedded
An application that is delivered as a hidden part of a larger system.
@@ -196,6 +301,9 @@ Glossary
error code
This term has the same meaning as :term:`status code`.
+ ESCB
+ This term is an acronym for Extension Set Control Block.
+
events
A method for task communication and synchronization. The directives
provided by the event manager are used to service events.
@@ -217,37 +325,98 @@ Glossary
An object known by all nodes in a multiprocessor system. An object
created with the GLOBAL attribute will be exported.
+ extension forward order
+ The :term:`user extensions` may be invoked in extension forward order. In
+ forward order, all user extensions of the :term:`initial extension sets` are
+ invoked before all user extensions of the :term:`dynamic extension sets`.
+ In the initial extension sets the order is defined by the table index. The
+ user extension with the lowest table index is invoked first. In the dynamic
+ extension sets the order is defined by the registration order. The first
+ registered user extension is invoked first. See also
+ :term:`extension reverse order`.
+
+ extension reverse order
+ The :term:`user extensions` may be invoked in extension reverse order. In
+ reverse order, all user extensions of the :term:`dynamic extension sets` are
+ invoked before all user extensions of the :term:`initial extension sets`.
+ In the dynamic extension sets the order is defined by the registration order.
+ The last registered user extension is invoked first. In the initial
+ extension sets the order is defined by the table index. The user extension
+ with the highest table index is invoked first. See also
+ :term:`extension forward order`.
+
external address
The address used to access dual-ported memory by all the nodes in a
system which do not own the memory.
FIFO
- An acronym for :term:`First In First Out`.
+ This term is an acronym for :term:`First In First Out`.
First In First Out
- A discipline for manipulating entries in a data structure.
+ A discipline for manipulating entries in a data structure. See also
+ :term:`Last In First Out`.
floating point coprocessor
A component used in computer systems to enhance performance in
mathematically intensive situations. It is typically viewed as a logical
extension of the primary processor.
+ formal model
+ A model of a computing component (hardware or software) that has a
+ mathematically based :term:`semantics`.
+
freed
A resource that has been released by the application to RTEMS.
+ Futex
+ This term is an abbreviation for
+ `Fast User-Space Locking <https://man7.org/linux/man-pages/man2/futex.2.html>`_.
+ The futex support in RTEMS is provided for the barriers of the
+ :term:`OpenMP` library provided by :term:`GCC`. It could be used to
+ implement high performance :term:`SMP` synchronization primitives which
+ offer random-fairness.
+
GCC
- An acronym for `GNU Compiler Collection <https://gcc.gnu.org/>`_.
+ This term is an acronym for `GNU Compiler Collection <https://gcc.gnu.org/>`_.
global
An object that has been created with the GLOBAL attribute and exported to
all nodes in a multiprocessor system.
+ global construction
+ In the global construction, the C++ global constructors and constructor
+ functions are invoked. See :ref:`GlobalConstruction`.
+
GNAT
*GNAT* is the :term:`GNU` compiler for Ada, integrated into the
:term:`GCC`.
GNU
- An acronym for `GNU's Not Unix <https://www.gnu.org/>`_.
+ This term is an acronym for `GNU's Not Unix <https://www.gnu.org/>`_.
+
+ GPL
+ This term is an acronym for
+ `GNU General Public License <https://www.gnu.org/licenses>`__.
+
+ GPLv2
+ This term is an acronym for
+ `GNU General Public License Version 2 <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>`__.
+
+ GPLv3
+ This term is an acronym for
+ `GNU General Public License Version 3 <https://www.gnu.org/licenses/gpl-3.0.html>`__.
+
+ GR712RC
+ The
+ `GR712RC <https://www.gaisler.com/index.php/products/components/gr712rc>`_
+ is a :term:`system-on-chip` containing two processors of the :term:`SPARC`
+ :term:`target architecture`.
+
+ GR740
+ The
+ `GR740 <https://www.gaisler.com/index.php/products/components/gr740>`_
+ is a :term:`system-on-chip` containing four processors of the :term:`SPARC`
+ :term:`target architecture`.
handler
The equivalent of a manager, except that it is internal to RTEMS and
@@ -271,14 +440,34 @@ Glossary
dispatch is marked as necessary, then the next thread dispatch will make
the heir task the executing task.
+ helping priority
+ A helping priority of a :term:`task` is the :term:`task priority` with
+ respect to the corresponding :term:`helping scheduler` of the task. A
+ helping priority is an :term:`eligible priority`.
+
+ helping scheduler
+ A helping scheduler of a :term:`task` is a :term:`scheduler` which is a
+ :term:`eligible scheduler` and which is not the :term:`home scheduler` of
+ the task.
+
heterogeneous
A multiprocessor computer system composed of dissimilar processors.
+ higher priority
+ A :term:`task` ``H`` has a higher :term:`priority` than a task ``L``, if
+ task ``H`` is more important than task ``L``.
+
+ home scheduler
+ The home scheduler of a :term:`task` is a :term:`scheduler` which is an
+ :term:`eligible scheduler` and which is assigned to the task during its
+ initialization or explicitly via a directive call such as
+ :ref:`InterfaceRtemsTaskSetScheduler`.
+
homogeneous
A multiprocessor computer system composed of a single type of processor.
I/O
- An acronym for Input/Output.
+ This term is an acronym for Input/Output.
ID
An RTEMS assigned identification tag used to access an active object.
@@ -287,6 +476,17 @@ Glossary
A special low priority task which assumes control of the CPU when no
other task is able to execute.
+ ineligible scheduler
+ An ineligible scheduler of a :term:`task` is a :term:`scheduler` which is
+ not an :term:`eligible scheduler`.
+
+ initial extension sets
+ The initial extension sets are a table of :term:`user extensions`. The table
+ is defined by the application configuration for example through the
+ :ref:`CONFIGURE_INITIAL_EXTENSIONS` application configuration option. The
+ initial extension sets cannot be altered during runtime through directive
+ calls. See also :term:`dynamic extension sets`.
+
interface
A specification of the methodology used to connect multiple independent
subsystems.
@@ -304,18 +504,37 @@ Glossary
serviced. If a pending interrupt is below the current interrupt level,
then the CPU does not recognize that interrupt.
+ interrupt service
+ An *interrupt service* consists of an
+ :term:`Interrupt Service Routine` which is called with a user
+ provided argument upon reception of an interrupt service request. The
+ routine is invoked in interrupt context. Interrupt service requests may have
+ a priority and an affinity to a set of processors. An *interrupt service* is
+ a :term:`software component`.
+
Interrupt Service Routine
An ISR is invoked by the CPU to process a pending interrupt.
ISR
- An acronym for :term:`Interrupt Service Routine`.
+ This term is an acronym for :term:`Interrupt Service Routine`.
ISVV
- An acronym for Independent Software Verification and Validation.
+ This term is an acronym for Independent Software Verification and Validation.
kernel
In this document, this term is used as a synonym for executive.
+ Last In First Out
+ A discipline for manipulating entries in a data structure. See also
+ :term:`First In First Out`.
+
+ LIFO
+ This term is an acronym for :term:`Last In First Out`.
+
+ Linear Temporal Logic
+ This is a logic that states properties about (possibly infinite) sequences of
+ states.
+
list
A data structure which allows for dynamic addition and removal of
entries. It is not statically limited to a particular size.
@@ -325,6 +544,12 @@ Glossary
are arranged such that the least significant byte is at the lowest
address.
+ LLVM
+ This term is an acronym for
+ `Low Level Virtual Machine <https://www.llvm.org>`__.
+ The LLVM Project is a collection of modular and reusable compiler and
+ toolchain technologies.
+
local
An object which was created with the LOCAL attribute and is accessible
only on the node it was created and resides upon. In a single processor
@@ -342,6 +567,13 @@ Glossary
A multiprocessor configuration where shared memory is not used for
communication.
+ lower priority
+ A :term:`task` ``L`` has a lower :term:`priority` than a task ``H``, if
+ task ``L`` is less important than task ``H``.
+
+ LTL
+ This term is an acronym for :term:`Linear Temporal Logic`.
+
major number
The index of a device driver in the Device Driver Table.
@@ -350,7 +582,7 @@ Glossary
over resources.
MCS
- An acronym for Mellor-Crummey Scott.
+ This term is an acronym for Mellor-Crummey Scott.
memory pool
Used interchangeably with heap.
@@ -380,7 +612,11 @@ Glossary
disable level used by the task.
MPCI
- An acronym for :term:`Multiprocessor Communications Interface Layer`.
+ This term is an acronym for
+ :term:`Multiprocessor Communications Interface Layer`.
+
+ MrsP
+ This term is an acronym for Multiprocessor Resource-Sharing Protocol.
multiprocessing
The simultaneous execution of two or more processes by a multiple
@@ -417,14 +653,21 @@ Glossary
non-existent
The state occupied by an uncreated or deleted task.
+ NTP
+ This term is an acronym for
+ `Network Time Protocol <https://en.wikipedia.org/wiki/Network_Time_Protocol>`_.
+
NUMA
- An acronym for Non-Uniform Memory Access.
+ This term is an acronym for Non-Uniform Memory Access.
numeric coprocessor
A component used in computer systems to enhance performance in
mathematically intensive situations. It is typically viewed as a logical
extension of the primary processor.
+ OBC
+ This term is an acronym for On-Board Computer.
+
object
In this document, this term is used to refer collectively to tasks,
timers, message queues, partitions, regions, semaphores, ports, and rate
@@ -435,6 +678,16 @@ Glossary
variety of entities. Object-oriented systems shield the application from
implementation details.
+ OMIP
+ This term is an acronym for O(m) Independence-Preserving Protocol. OMIP is a
+ generalization of the :term:`priority inheritance` locking protocol to
+ clustered scheduling. The ``m`` denotes the number of processors in the
+ system.
+
+ OpenMP
+ This term is an acronym for
+ `Open Multi-Processing <https://www.openmp.org/>`_.
+
operating system
The software which controls all the computer's resources and provides the
base upon which application programs can be written.
@@ -460,6 +713,9 @@ Glossary
A data structure associated with each partition used by RTEMS to manage
that partition.
+ PCB
+ This term is an acronym for Period Control Block.
+
pending
A term used to describe a task blocked waiting for an event, message,
semaphore, or signal.
@@ -483,23 +739,46 @@ Glossary
A term used to describe the ease with which software can be rehosted on
another computer.
+ POSIX
+ This term is an acronym for
+ `Portable Operating System Interface <https://en.wikipedia.org/wiki/POSIX>`_.
+
posting
The act of sending an event, message, semaphore, or signal to a task.
+ PPS
+ This term is an acronym for
+ `Pulse-Per-Second <https://en.wikipedia.org/wiki/Pulse-per-second_signal>`_.
+
preempt
The act of forcing a task to relinquish the processor and dispatching to
another task.
priority
- A mechanism used to represent the relative importance of an element in a
- set of items. RTEMS uses priority to determine which task should
- execute.
+ The priority is a mechanism used to represent the relative importance of an
+ element in a set of items.
+
+ For example, :term:`RTEMS` uses :term:`task priorities <task priority>` to determine which
+ :term:`task` should execute on a processor. In RTEMS, priorities are
+ represented by non-negative integers.
+
+ For the Classic :term:`API`, if a numerical priority value ``A`` is greater
+ than a numerical priority value ``B``, then ``A`` expresses a
+ :term:`lower priority` than ``B``. If a numerical priority value ``C`` is
+ less than a numerical priority value ``D``, then ``C`` expresses a
+ :term:`higher priority` than ``D``.
+
+ For the :term:`POSIX` API, if a numerical priority value ``R`` is less than
+ a numerical priority value ``S``, then ``R`` expresses a lower priority than
+ ``S``. If a numerical priority value ``T`` is greater than a numerical
+ priority value ``U``, then ``T`` expresses a higher priority than ``U``.
priority boosting
A simple approach to extend the priority inheritance protocol for
clustered scheduling is priority boosting. In case a mutex is owned by a
task of another cluster, then the priority of the owner task is raised to
- an artificially high priority, the pseudo-interrupt priority.
+ an artificially high priority. This approach is not used in RTEMS, see also
+ :term:`OMIP`.
priority inheritance
An algorithm that calls for the lower priority task holding a resource to
@@ -525,13 +804,13 @@ Glossary
proxy.
PTCB
- An acronym for :term:`Partition Control Block`.
+ This term is an acronym for :term:`Partition Control Block`.
PXCB
- An acronym for :term:`Proxy Control Block`.
+ This term is an acronym for :term:`Proxy Control Block`.
QCB
- An acronym for :term:`Message Queue Control Block`.
+ This term is an acronym for :term:`Message Queue Control Block`.
quantum
The application defined unit of time in which the processor is allocated.
@@ -545,6 +824,14 @@ Glossary
decided that other tasks are currently more important. A task that is
ready to execute and has a processor assigned is called scheduled.
+ real priority
+ Each :term:`task` has exactly one real priority. The real priority is
+ always with respect to the :term:`home scheduler` of a task. It is defined
+ during task initialization. It may be changed by directives such as
+ :ref:`InterfaceRtemsTaskSetPriority` and
+ :ref:`InterfaceRtemsTaskSetScheduler`. The real priority is the foundation
+ of the :term:`current priority`.
+
real-time
A term used to describe systems which are characterized by requiring
deterministic response times to external stimuli. The external stimuli
@@ -555,6 +842,10 @@ Glossary
A term used to describe routines which do not modify themselves or global
variables.
+ refinement
+ A *refinement* is a relationship between a specification and its
+ implementation as code.
+
region
An RTEMS object which is used to allocate and deallocate variable size
blocks of memory from a dynamically specified area of memory.
@@ -567,6 +858,9 @@ Glossary
Registers are locations physically located within a component, typically
used for device control or general purpose storage.
+ reification
+ Another term used to denote :term:`refinement`.
+
remote
Any object that does not reside on the local node.
@@ -575,7 +869,7 @@ Glossary
the calling task.
ReqIF
- An acronym for
+ This term is an acronym for
`Requirements Interchange Format <https://www.omg.org/spec/ReqIF/About-ReqIF/>`_.
resource
@@ -594,7 +888,7 @@ Glossary
:term:`status code`.
RNCB
- An acronym for :term:`Region Control Block`.
+ This term is an acronym for :term:`Region Control Block`.
round-robin
A task scheduling discipline in which tasks of equal priority are
@@ -604,12 +898,22 @@ Glossary
A standard for serial communications.
RTEMS
- An acronym for Real-Time Executive for Multiprocessor Systems.
+ This term is an acronym for Real-Time Executive for Multiprocessor Systems.
+
+ RTEMS epoch
+ The RTEMS epoch is a point in time. It is 1988-01-01T00:00:00Z in
+ `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_ time format.
running
The state of a rate monotonic timer while it is being used to delineate a
period. The timer exits this state by either expiring or being canceled.
+ scenario
+ In the context of formal verification, in a setting that involves many
+ concurrent tasks that interleave in arbitrary ways, a scenario describes a
+ single specific possible interleaving. One interpretation of the behaviour
+ of a concurrent system is the set of all its scenarios.
+
schedulable
A set of tasks which can be guaranteed to meet their deadlines based upon
a specific scheduling algorithm.
@@ -631,6 +935,11 @@ Glossary
priority number and assign the tasks with the lowest priority number to
one processor of the set of processors owned by a scheduler instance.
+ A scheduler is either an :term:`eligible scheduler` or a
+ :term:`ineligible scheduler` for a task. An :term:`eligible scheduler` is
+ either the :term:`home scheduler` or a :term:`helping scheduler` for a
+ task.
+
scheduler instance
A scheduler instance is a scheduling algorithm with a corresponding
context to store its internal state. Each processor in the system is
@@ -641,6 +950,11 @@ Glossary
segments
Variable sized memory blocks allocated from a region.
+ semantics
+ This term refers to the meaning of text or utterances in some language. In a
+ software engineering context these will be programming, modelling or
+ specification languages.
+
semaphore
An RTEMS object which is used to synchronize tasks and provide mutually
exclusive access to resources.
@@ -661,11 +975,15 @@ Glossary
A thirty-two bit entity which is used to represent a task's collection of
pending signals and the signals sent to a task.
+ SIS
+ This term is an acronym for Simple Instruction Simulator. The SIS is a
+ :term:`SPARC` V7/V8 and RISC-V RV32IMACFD :term:`target architecture` simulator.
+
SMCB
- An acronym for :term:`Semaphore Control Block`.
+ This term is an acronym for :term:`Semaphore Control Block`.
SMP
- An acronym for Symmetric Multiprocessing.
+ This term is an acronym for Symmetric Multiprocessing.
SMP barriers
The SMP barriers ensure that a defined set of independent threads of
@@ -683,12 +1001,54 @@ Glossary
A real-time system in which a missed deadline does not compromise the
integrity of the system.
+ software component
+ This term is defined by ECSS-E-ST-40C 3.2.28 as a "part of a software
+ system". For this project a *software component* shall be any of the
+ following items and nothing else:
+
+ * :term:`software unit`
+
+ * explicitly defined :term:`ELF` symbol in a
+ :term:`source code` file
+
+ * :term:`assembler language` data in a source code file
+
+ * :term:`C language` object with static storage duration
+
+ * C language object with thread-local storage duration
+
+ * :term:`thread`
+
+ * :term:`interrupt service`
+
+ * collection of *software components* (this is a software architecture
+ element)
+
+ Please note that explicitly defined ELF symbols and assembler language
+ data are considered a software component only if they are defined in a
+ :term:`source code` file. For example, this rules out symbols
+ and data generated as side-effects by the toolchain (compiler, assembler,
+ linker) such as jump tables, linker trampolines, exception frame information,
+ etc.
+
software item
This term has the same meaning as :term:`software product`.
software product
The *software product* is the :term:`RTEMS` real-time operating system.
+ software unit
+ This term is defined by ECSS-E-ST-40C 3.2.24 as a "separately compilable
+ piece of source code". For this project a *software unit* shall be any of
+ the following items and nothing else:
+
+ * :term:`assembler language` function in a
+ :term:`source code` file
+
+ * :term:`C language` function (external and internal linkage)
+
+ A *software unit* is a :term:`software component`.
+
source code
This project uses the *source code* definition of the
`Linux Information Project <http://www.linfo.org/source_code.html>`_:
@@ -696,6 +1056,11 @@ Glossary
software as it is originally written (i.e., typed into a computer) by a
human in plain text (i.e., human readable alphanumeric characters)."
+ SPARC
+ This term is an acronym for
+ `Scalable Processor ARChitecture <https://en.wikipedia.org/wiki/SPARC>`_.
+ See also :term:`target architecture`.
+
sporadic task
A task which executes at irregular intervals and must comply with a hard
deadline. A minimum period of time between successive iterations of the
@@ -712,6 +1077,17 @@ Glossary
:term:`return value` to indicate a successful operation or error
conditions.
+ Strong APA
+ Strong APA is a specialization of :term:`APA`. Schedulers which implement
+ strong APA recursively searches for a processor in the :term:`thread`'s
+ affinity set, whenever a thread becomes ready for execution, followed by the
+ processors in the affinity set of threads that are assigned the processor
+ present in the ready thread's affinity set. This is done to find a thread to
+ processor mapping that does not violate the priority ordering and to provide
+ a thread to processor mapping with a higher total priority of the threads
+ allocated a processor. Similar analysis is done when a thread blocks. See
+ also :cite:`Cerqueira:2014:LPA`.
+
suspend
A term used to describe a task that is not competing for the CPU because it
has had a ``rtems_task_suspend`` directive.
@@ -722,28 +1098,71 @@ Glossary
system call
In this document, this is used as an alternate term for directive.
+ system-on-chip
+ This project uses the `system on a chip definition of Wikipedia
+ <https://en.wikipedia.org/wiki/System_on_a_chip>`_: "A system on a chip or
+ system-on-chip is an integrated circuit that integrates most or all
+ components of a computer or other electronic system."
+
+ Systems on a chip are :term:`target` systems for applications using
+ :term:`RTEMS`.
+
target
The system on which the application will ultimately execute.
+ target architecture
+ The target architecture is the instruction set architecture (ISA) of the
+ :term:`target`. Some RTEMS features depend on the target architecture. For
+ the details consult the *RTEMS CPU Architecture Supplement*.
+
TAS
- An acronym for Test-And-Set.
+ This term is an acronym for Test-And-Set.
task
- A logically complete thread of execution. It consists normally of a set
- of registers and a stack. The scheduler assigns processors to a subset
- of the ready tasks. The terms task and thread are synonym in RTEMS. The
- term task is used throughout the Classic API, however, internally in the
- operating system implementation and the POSIX API the term thread is
- used.
+ This project uses the
+ `thread definition of Wikipedia <https://en.wikipedia.org/wiki/Thread_(computing)>`_:
+ "a thread of execution is the smallest sequence of programmed
+ instructions that can be managed independently by a scheduler, which is
+ typically a part of the operating system."
+
+ It consists normally of a set of registers and a stack. The scheduler
+ assigns processors to a subset of the ready tasks. The terms task and
+ :term:`thread` are synonym in RTEMS. The term task is used
+ throughout the Classic API, however, internally in the operating system
+ implementation and the POSIX API the term thread is used.
+
+ A *task* is a :term:`software component`.
Task Control Block
A data structure associated with each task used by RTEMS to manage that
task.
+ task entry
+ The task entry is invoked to execute the task's job. Before the task entry
+ is invoked, the thread begin :term:`user extensions` run in the context of
+ the task. After the return of the task entry, the thread exitted user
+ extensions run in the context of the task. The first user initialization
+ task performs the :term:`global construction` after running the thread begin
+ extensions and before the task entry is invoked. See also
+ :ref:`InterfaceRtemsTaskStart`.
+
task migration
Task migration happens in case a task stops execution on one processor
and resumes execution on another processor.
+ task priority
+ A task :term:`priority` of a :term:`task` determines its importance
+ relative to other tasks.
+
+ The scheduler use task priorities to determine which :term:`ready task` gets
+ a processor allocated, see :term:`scheduled task`. The
+ :term:`eligible priorities <eligible priority>` of a task define the position of the task in a
+ :term:`wait queue` which uses the priority discipline. Each task has at
+ least the :term:`real priority`.
+
+ Task priorities are used in :term:`wait queues <wait queue>` which use the priority
+ discipline to determine the dequeueing order of tasks.
+
task processor affinity
The set of processors on which a task is allowed to execute.
@@ -752,7 +1171,7 @@ Glossary
processor from one task and given to another.
TCB
- An acronym for :term:`Task Control Block`.
+ This term is an acronym for :term:`Task Control Block`.
thread
This term has the same meaning as :term:`task`.
@@ -791,12 +1210,12 @@ Glossary
task.
TLS
- An acronym for Thread-Local Storage :cite:`Drepper:2013:TLS`. TLS is
- available in :term:`C11` and :term:`C++11`. The support for TLS depends
- on the CPU port :cite:`RTEMS:CPU`.
+ This term is an acronym for Thread-Local Storage :cite:`Drepper:2013:TLS`.
+ TLS is available in :term:`C11` and :term:`C++11`. The support for TLS
+ depends on the CPU port :cite:`RTEMS:CPU`.
TMCB
- An acronym for :term:`Timer Control Block`.
+ This term is an acronym for :term:`Timer Control Block`.
transient overload
A temporary rise in system activity which may cause deadlines to be
@@ -804,14 +1223,21 @@ Glossary
deadlines will be met under transient overload.
TTAS
- An acronym for Test and Test-And-Set.
+ This term is an acronym for Test and Test-And-Set.
+
+ Unix epoch
+ The Unix epoch is a point in time. It is 1970-01-01T00:00:00Z in
+ `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_ time format.
User Extension Table
A table which contains the entry points for each user extensions.
user extensions
- Software routines provided by the application to enhance the
- functionality of RTEMS.
+ User extensions are software routines provided by the application to enhance
+ the functionality of RTEMS. An active user extension is either in the
+ :term:`initial extension sets` or the :term:`dynamic extension sets`. User
+ extensions are invoked in :term:`extension forward order` or
+ :term:`extension reverse order`.
User Initialization Tasks Table
A table which contains the information needed to create and start each of
@@ -833,8 +1259,16 @@ Glossary
Message queues, regions, and semaphores have a wait queue associated with
them.
+ Weak APA
+ Weak APA is a specialization of :term:`APA`. This refers to Linux's push
+ and pull implementation of APA model. When a :term:`thread` becomes ready
+ for execution, it is allocated a processor if there is an idle processor, or
+ a processor executing a lower priority thread in its affinity set. Unlike
+ :term:`Strong APA`, no thread is migrated from its processor to find a thread
+ to processor mapping. See also :cite:`Cerqueira:2014:LPA`.
+
YAML
- An acronym for `YAML Ain't Markup Language <https://yaml.org/>`_.
+ This term is an acronym for `YAML Ain't Markup Language <https://yaml.org/>`_.
yield
When a task voluntarily releases control of the processor.