forked from Imagelibrary/rtems
Nodes, menus, etc are automatically generated now
This commit is contained in:
@@ -19,6 +19,12 @@ glossary.texi init.texi intr.texi io.texi mp.texi msg.texi overview.texi \
|
||||
part.texi preface.texi region.texi rtmon.texi schedule.texi sem.texi \
|
||||
signal.texi task.texi timer.texi userext.texi $(COMMON_FILES)
|
||||
|
||||
GENERATED_FILES=overview.texi concepts.texi init.texi task.texi \
|
||||
intr.texi clock.texi timer.texi sem.texi msg.texi \
|
||||
event.texi signal.texi part.texi region.texi \
|
||||
dpmem.texi io.texi fatal.texi schedule.texi rtmon.texi \
|
||||
bsp.texi userext.texi conf.texi mp.texi
|
||||
|
||||
all:
|
||||
|
||||
INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
|
||||
@@ -57,5 +63,125 @@ html:
|
||||
clean:
|
||||
rm -f *.o $(PROG) *.txt core *.html
|
||||
rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
|
||||
rm -f c_user c_user-* _*
|
||||
rm -f c_user c_user-* _* $(GENERATED_FILES)
|
||||
|
||||
#preface.texi: preface.t
|
||||
# $(BMENU) -p "Top" \
|
||||
# -u "Top" \
|
||||
# -n "Overview" ${*}.t
|
||||
|
||||
overview.texi: overview.t
|
||||
$(BMENU) -p "Preface" \
|
||||
-u "Top" \
|
||||
-n "Key Concepts" ${*}.t
|
||||
|
||||
concepts.texi: concepts.t
|
||||
$(BMENU) -p "Overview Manual Organization" \
|
||||
-u "Top" \
|
||||
-n "Initialization Manager" ${*}.t
|
||||
|
||||
init.texi: init.t
|
||||
$(BMENU) -p "Key Concepts Memory Management" \
|
||||
-u "Top" \
|
||||
-n "Task Manager" ${*}.t
|
||||
|
||||
task.texi: task.t
|
||||
$(BMENU) -p "Initialization Manager SHUTDOWN_EXECUTIVE - Shutdown RTEMS" \
|
||||
-u "Top" \
|
||||
-n "Interrupt Manager" ${*}.t
|
||||
|
||||
intr.texi: intr.t
|
||||
$(BMENU) -p "Task Manager TASK_WAKE_WHEN - Wake up when specified" \
|
||||
-u "Top" \
|
||||
-n "Clock Manager" ${*}.t
|
||||
|
||||
clock.texi: clock.t
|
||||
$(BMENU) \
|
||||
-p "Interrupt Manager INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress" \
|
||||
-u "Top" \
|
||||
-n "Timer Manager" ${*}.t
|
||||
|
||||
timer.texi: timer.t
|
||||
$(BMENU) -p "Clock Manager CLOCK_TICK - Announce a clock tick" \
|
||||
-u "Top" \
|
||||
-n "Semaphore Manager" ${*}.t
|
||||
|
||||
sem.texi: sem.t
|
||||
$(BMENU) -p "Timer Manager TIMER_RESET - Reset an interval timer" \
|
||||
-u "Top" \
|
||||
-n "Message Manager" ${*}.t
|
||||
|
||||
msg.texi: msg.t
|
||||
$(BMENU) -p "Semaphore Manager SEMAPHORE_RELEASE - Release a semaphore" \
|
||||
-u "Top" \
|
||||
-n "Event Manager" ${*}.t
|
||||
|
||||
event.texi: event.t
|
||||
$(BMENU) \
|
||||
-p "Message Manager MESSAGE_QUEUE_FLUSH - Flush all messages on a queue" \
|
||||
-u "Top" \
|
||||
-n "Signal Manager" ${*}.t
|
||||
|
||||
signal.texi: signal.t
|
||||
$(BMENU) -p "Event Manager EVENT_RECEIVE - Receive event condition" \
|
||||
-u "Top" \
|
||||
-n "Partition Manager" ${*}.t
|
||||
|
||||
part.texi: part.t
|
||||
$(BMENU) -p "Signal Manager SIGNAL_SEND - Send signal set to a task" \
|
||||
-u "Top" \
|
||||
-n "Region Manager" ${*}.t
|
||||
|
||||
region.texi: region.t
|
||||
$(BMENU) \
|
||||
-p "Partition Manager PARTITION_RETURN_BUFFER - Return buffer to a partition" \
|
||||
-u "Top" \
|
||||
-n "Dual-Ported Memory Manager" ${*}.t
|
||||
|
||||
dpmem.texi: dpmem.t
|
||||
$(BMENU) \
|
||||
-p "Region Manager REGION_GET_SEGMENT_SIZE - Obtain size of a segment" \
|
||||
-u "Top" \
|
||||
-n "I/O Manager" ${*}.t
|
||||
|
||||
io.texi: io.t
|
||||
$(BMENU) -p "Dual-Ported Memory Manager PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address" \
|
||||
-u "Top" \
|
||||
-n "Fatal Error Manager" ${*}.t
|
||||
|
||||
fatal.texi: fatal.t
|
||||
$(BMENU) -p "I/O Manager IO_CONTROL - Special device services" \
|
||||
-u "Top" \
|
||||
-n "Scheduling Concepts" ${*}.t
|
||||
|
||||
schedule.texi: schedule.t
|
||||
$(BMENU) \
|
||||
-p "Fatal Error Manager FATAL_ERROR_OCCURRED - Invoke the fatal error handler" \
|
||||
-u "Top" \
|
||||
-n "Rate Monotonic Manager" ${*}.t
|
||||
|
||||
rtmon.texi: rtmon.t
|
||||
$(BMENU) -p "Scheduling Concepts Task State Transitions" \
|
||||
-u "Top" \
|
||||
-n "Board Support Packages" ${*}.t
|
||||
|
||||
bsp.texi: bsp.t
|
||||
$(BMENU) -p "Rate Monotonic Manager RATE_MONOTONIC_GET_STATUS - Obtain status information on period" \
|
||||
-u "Top" \
|
||||
-n "User Extensions Manager" ${*}.t
|
||||
|
||||
userext.texi: userext.t
|
||||
$(BMENU) -p "Board Support Packages Heterogeneous Systems" \
|
||||
-u "Top" \
|
||||
-n "Configuring a System" ${*}.t
|
||||
|
||||
conf.texi: conf.t
|
||||
$(BMENU) -p "User Extensions Manager EXTENSION_DELETE - Delete a extension set" \
|
||||
-u "Top" \
|
||||
-n "Multiprocessing Manager" ${*}.t
|
||||
|
||||
mp.texi: mp.t
|
||||
$(BMENU) -p "Configuring a System Sizing the RTEMS RAM Workspace" \
|
||||
-u "Top" \
|
||||
-n "Directive Status Codes" ${*}.t
|
||||
|
||||
|
||||
@@ -6,23 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Board Support Packages, Board Support Packages Introduction, RATE_MONOTONIC_GET_STATUS - Obtain status information on period, Top
|
||||
@end ifinfo
|
||||
@chapter Board Support Packages
|
||||
@ifinfo
|
||||
@menu
|
||||
* Board Support Packages Introduction::
|
||||
* Board Support Packages Reset and Initialization::
|
||||
* Board Support Packages Device Drivers::
|
||||
* Board Support Packages User Extensions::
|
||||
* Board Support Packages Multiprocessor Communications Interface (MPCI)::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Board Support Packages Introduction, Board Support Packages Reset and Initialization, Board Support Packages, Board Support Packages
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
A board support package (BSP) is a collection of
|
||||
@@ -33,17 +18,7 @@ extensions, and a Multiprocessor Communications Interface
|
||||
(MPCI). However, a minimal BSP need only support processor
|
||||
reset and initialization and, if needed, a clock tick.
|
||||
|
||||
@ifinfo
|
||||
@node Board Support Packages Reset and Initialization, Interrupt Stack Requirements, Board Support Packages Introduction, Board Support Packages
|
||||
@end ifinfo
|
||||
@section Reset and Initialization
|
||||
@ifinfo
|
||||
@menu
|
||||
* Interrupt Stack Requirements::
|
||||
* Processors with a Separate Interrupt Stack::
|
||||
* Processors without a Separate Interrupt Stack::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
An RTEMS based application is initiated or
|
||||
re-initiated when the processor is reset. This initialization
|
||||
@@ -121,9 +96,6 @@ initialization which is dependent on RTEMS facilities. The user
|
||||
initialization task facility is typically used to create the
|
||||
application's set of tasks.
|
||||
|
||||
@ifinfo
|
||||
@node Interrupt Stack Requirements, Processors with a Separate Interrupt Stack, Board Support Packages Reset and Initialization, Board Support Packages Reset and Initialization
|
||||
@end ifinfo
|
||||
@subsection Interrupt Stack Requirements
|
||||
|
||||
The worst-case stack usage by interrupt service
|
||||
@@ -147,9 +119,6 @@ stack usage must account for the following requirements:
|
||||
The size of the interrupt stack must be greater than
|
||||
or equal to the constant @code{@value{RPREFIX}MINIMUM_STACK_SIZE}.
|
||||
|
||||
@ifinfo
|
||||
@node Processors with a Separate Interrupt Stack, Processors without a Separate Interrupt Stack, Interrupt Stack Requirements, Board Support Packages Reset and Initialization
|
||||
@end ifinfo
|
||||
@subsection Processors with a Separate Interrupt Stack
|
||||
|
||||
Some processors support a separate stack for
|
||||
@@ -165,9 +134,6 @@ initialization code of the user's board support package. Since
|
||||
all ISRs use this stack, the stack size must take into account
|
||||
the worst case stack usage by any combination of nested ISRs.
|
||||
|
||||
@ifinfo
|
||||
@node Processors without a Separate Interrupt Stack, Board Support Packages Device Drivers, Processors with a Separate Interrupt Stack, Board Support Packages Reset and Initialization
|
||||
@end ifinfo
|
||||
@subsection Processors without a Separate Interrupt Stack
|
||||
|
||||
Some processors do not support a separate stack for
|
||||
@@ -183,15 +149,7 @@ software. If this capability is supported on a CPU, then it is
|
||||
logically equivalent to the processor supporting a separate
|
||||
interrupt stack in hardware.
|
||||
|
||||
@ifinfo
|
||||
@node Board Support Packages Device Drivers, Clock Tick Device Driver, Processors without a Separate Interrupt Stack, Board Support Packages
|
||||
@end ifinfo
|
||||
@section Device Drivers
|
||||
@ifinfo
|
||||
@menu
|
||||
* Clock Tick Device Driver::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
Device drivers consist of control software for
|
||||
special peripheral devices and provide a logical interface for
|
||||
@@ -206,9 +164,6 @@ interfaces, and network controllers.
|
||||
For more information on device drivers, refer to the
|
||||
I/O Manager chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Clock Tick Device Driver, Board Support Packages User Extensions, Board Support Packages Device Drivers, Board Support Packages Device Drivers
|
||||
@end ifinfo
|
||||
@subsection Clock Tick Device Driver
|
||||
|
||||
Most RTEMS applications will include a clock tick
|
||||
@@ -244,9 +199,6 @@ high clock tick frequency results in less processor time being
|
||||
available for task execution due to the increased number of
|
||||
clock tick ISRs.
|
||||
|
||||
@ifinfo
|
||||
@node Board Support Packages User Extensions, Board Support Packages Multiprocessor Communications Interface (MPCI), Clock Tick Device Driver, Board Support Packages
|
||||
@end ifinfo
|
||||
@section User Extensions
|
||||
|
||||
RTEMS allows the application developer to augment
|
||||
@@ -280,18 +232,7 @@ device.
|
||||
For more information on user extensions, refer to the
|
||||
User Extensions chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Board Support Packages Multiprocessor Communications Interface (MPCI), Tightly-Coupled Systems, Board Support Packages User Extensions, Board Support Packages
|
||||
@end ifinfo
|
||||
@section Multiprocessor Communications Interface (MPCI)
|
||||
@ifinfo
|
||||
@menu
|
||||
* Tightly-Coupled Systems::
|
||||
* Loosely-Coupled Systems::
|
||||
* Systems with Mixed Coupling::
|
||||
* Heterogeneous Systems::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
RTEMS requires that an MPCI layer be provided when a
|
||||
multiple node application is developed. This MPCI layer must
|
||||
@@ -304,9 +245,6 @@ target platform.
|
||||
For more information on the MPCI, refer to the
|
||||
Multiprocessing Manager chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Tightly-Coupled Systems, Loosely-Coupled Systems, Board Support Packages Multiprocessor Communications Interface (MPCI), Board Support Packages Multiprocessor Communications Interface (MPCI)
|
||||
@end ifinfo
|
||||
@subsection Tightly-Coupled Systems
|
||||
|
||||
A tightly-coupled system is a multiprocessor
|
||||
@@ -331,9 +269,6 @@ itself or the target platform. The second technique is to have
|
||||
a node poll for arrival of packets. The drawback to this
|
||||
technique is the overhead associated with polling.
|
||||
|
||||
@ifinfo
|
||||
@node Loosely-Coupled Systems, Systems with Mixed Coupling, Tightly-Coupled Systems, Board Support Packages Multiprocessor Communications Interface (MPCI)
|
||||
@end ifinfo
|
||||
@subsection Loosely-Coupled Systems
|
||||
|
||||
A loosely-coupled system is a multiprocessor
|
||||
@@ -350,9 +285,6 @@ Ethernet, lend themselves to supporting an MPCI layer. These
|
||||
networks provide both the point-to-point and broadcast
|
||||
capabilities which are expected by RTEMS.
|
||||
|
||||
@ifinfo
|
||||
@node Systems with Mixed Coupling, Heterogeneous Systems, Loosely-Coupled Systems, Board Support Packages Multiprocessor Communications Interface (MPCI)
|
||||
@end ifinfo
|
||||
@subsection Systems with Mixed Coupling
|
||||
|
||||
A mixed-coupling system is a multiprocessor
|
||||
@@ -367,9 +299,6 @@ algorithms. In addition, the router may provide alternate
|
||||
communications paths in the event of an overload or a partial
|
||||
failure.
|
||||
|
||||
@ifinfo
|
||||
@node Heterogeneous Systems, User Extensions Manager, Systems with Mixed Coupling, Board Support Packages Multiprocessor Communications Interface (MPCI)
|
||||
@end ifinfo
|
||||
@subsection Heterogeneous Systems
|
||||
|
||||
Designing an MPCI layer for a heterogeneous system
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Clock Manager, Clock Manager Introduction, INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress, Top
|
||||
@end ifinfo
|
||||
@chapter Clock Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Clock Manager Introduction::
|
||||
* Clock Manager Background::
|
||||
* Clock Manager Operations::
|
||||
* Clock Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Clock Manager Introduction, Clock Manager Background, Clock Manager, Clock Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The clock manager provides support for time of day
|
||||
@@ -34,23 +20,8 @@ the clock manager are:
|
||||
@item @code{@value{DIRPREFIX}clock_tick} - Announce a clock tick
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Clock Manager Background, Required Support, Clock Manager Introduction, Clock Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Required Support::
|
||||
* Time and Date Data Structures::
|
||||
* Clock Tick and Timeslicing::
|
||||
* Delays::
|
||||
* Timeouts::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Required Support, Time and Date Data Structures, Clock Manager Background, Clock Manager Background
|
||||
@end ifinfo
|
||||
@subsection Required Support
|
||||
|
||||
For the features provided by the clock manager to be
|
||||
@@ -63,9 +34,6 @@ has occurred. Elapsed time is measured in ticks. A tick is
|
||||
defined to be an integral number of microseconds which is
|
||||
specified by the user in the Configuration Table.
|
||||
|
||||
@ifinfo
|
||||
@node Time and Date Data Structures, Clock Tick and Timeslicing, Required Support, Clock Manager Background
|
||||
@end ifinfo
|
||||
@subsection Time and Date Data Structures
|
||||
|
||||
The clock facilities of the clock manager operate
|
||||
@@ -136,9 +104,6 @@ type Clock_Time_Value is
|
||||
The seconds field in this @value{STRUCTURE} is the number of
|
||||
seconds since the RTEMS epoch of January 1, 1988.
|
||||
|
||||
@ifinfo
|
||||
@node Clock Tick and Timeslicing, Delays, Time and Date Data Structures, Clock Manager Background
|
||||
@end ifinfo
|
||||
@subsection Clock Tick and Timeslicing
|
||||
|
||||
Timeslicing is a task scheduling discipline in which
|
||||
@@ -160,9 +125,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Delays, Timeouts, Clock Tick and Timeslicing, Clock Manager Background
|
||||
@end ifinfo
|
||||
@subsection Delays
|
||||
|
||||
A sleep timer allows a task to delay for a given
|
||||
@@ -174,9 +136,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Timeouts, Clock Manager Operations, Delays, Clock Manager Background
|
||||
@end ifinfo
|
||||
@subsection Timeouts
|
||||
|
||||
Timeouts are a special type of timer automatically
|
||||
@@ -188,21 +147,8 @@ created when the timeout option is used on the
|
||||
Each task may have one and only one timeout active at a time.
|
||||
When a timeout expires, it unblocks the task with a timeout status code.
|
||||
|
||||
@ifinfo
|
||||
@node Clock Manager Operations, Announcing a Tick, Timeouts, Clock Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Announcing a Tick::
|
||||
* Setting the Time::
|
||||
* Obtaining the Time::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Announcing a Tick, Setting the Time, Clock Manager Operations, Clock Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Announcing a Tick
|
||||
|
||||
RTEMS provides the @code{@value{DIRPREFIX}clock_tick} directive which is
|
||||
@@ -223,9 +169,6 @@ two times per second. The @code{@value{DIRPREFIX}clock_tick}
|
||||
directive is responsible for maintaining both
|
||||
calendar time and the dynamic set of timers.
|
||||
|
||||
@ifinfo
|
||||
@node Setting the Time, Obtaining the Time, Announcing a Tick, Clock Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Setting the Time
|
||||
|
||||
The @code{@value{DIRPREFIX}clock_set} directive allows a task or an ISR to
|
||||
@@ -234,9 +177,6 @@ and time causes any outstanding timers to pass their deadline,
|
||||
then the expired timers will be fired during the invocation of
|
||||
the @code{@value{DIRPREFIX}clock_set} directive.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining the Time, Clock Manager Directives, Setting the Time, Clock Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining the Time
|
||||
|
||||
The @code{@value{DIRPREFIX}clock_get} directive allows a task or an ISR to
|
||||
@@ -271,17 +211,7 @@ ticks per second
|
||||
Calendar time operations will return an error code if
|
||||
invoked before the date and time have been set.
|
||||
|
||||
@ifinfo
|
||||
@node Clock Manager Directives, CLOCK_SET - Set system date and time, Obtaining the Time, Clock Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* CLOCK_SET - Set system date and time::
|
||||
* CLOCK_GET - Get system date and time information::
|
||||
* CLOCK_TICK - Announce a clock tick::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the clock manager's directives.
|
||||
A subsection is dedicated to each of this manager's directives
|
||||
@@ -289,9 +219,6 @@ and describes the calling sequence, related constants, usage,
|
||||
and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node CLOCK_SET - Set system date and time, CLOCK_GET - Get system date and time information, Clock Manager Directives, Clock Manager Directives
|
||||
@end ifinfo
|
||||
@subsection CLOCK_SET - Set system date and time
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -342,9 +269,6 @@ to be reset to an uninitialized state. Another call to
|
||||
the system date and time to application specific specifications.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node CLOCK_GET - Get system date and time information, CLOCK_TICK - Announce a clock tick, CLOCK_SET - Set system date and time, Clock Manager Directives
|
||||
@end ifinfo
|
||||
@subsection CLOCK_GET - Get system date and time information
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -435,9 +359,6 @@ time to be reset to an uninitialized state. Another call to
|
||||
system date and time to application specific specifications.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node CLOCK_TICK - Announce a clock tick, Timer Manager, CLOCK_GET - Get system date and time information, Clock Manager Directives
|
||||
@end ifinfo
|
||||
@subsection CLOCK_TICK - Announce a clock tick
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -10,23 +10,9 @@
|
||||
@c The following figure was replaced with an ASCII equivalent.
|
||||
@c Figure 2-1 Object ID Composition
|
||||
@c
|
||||
@ifinfo
|
||||
@node Key Concepts, Key Concepts Introduction, Overview Manual Organization, Top
|
||||
@end ifinfo
|
||||
@chapter Key Concepts
|
||||
@ifinfo
|
||||
@menu
|
||||
* Key Concepts Introduction::
|
||||
* Key Concepts Objects::
|
||||
* Key Concepts Communication and Synchronization::
|
||||
* Key Concepts Time::
|
||||
* Key Concepts Memory Management::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Key Concepts Introduction, Key Concepts Objects, Key Concepts, Key Concepts
|
||||
@end ifinfo
|
||||
@chapter Key Concepts
|
||||
|
||||
@section Introduction
|
||||
|
||||
The facilities provided by RTEMS are built upon a
|
||||
@@ -35,9 +21,6 @@ understood before the application developer can efficiently
|
||||
utilize RTEMS. The purpose of this chapter is to familiarize
|
||||
one with these concepts.
|
||||
|
||||
@ifinfo
|
||||
@node Key Concepts Objects, Key Concepts Communication and Synchronization, Key Concepts Introduction, Key Concepts
|
||||
@end ifinfo
|
||||
@section Objects
|
||||
|
||||
RTEMS provides directives which can be used to
|
||||
@@ -194,9 +177,6 @@ the object is deleted. With the exception of user extension
|
||||
routines, object control blocks are not directly manipulated by
|
||||
user applications.
|
||||
|
||||
@ifinfo
|
||||
@node Key Concepts Communication and Synchronization, Key Concepts Time, Key Concepts Objects, Key Concepts
|
||||
@end ifinfo
|
||||
@section Communication and Synchronization
|
||||
|
||||
In real-time multitasking applications, the ability
|
||||
@@ -238,9 +218,6 @@ high performance synchronization mechanism. The signal manager
|
||||
supports only asynchronous communication and is typically used
|
||||
for exception handling.
|
||||
|
||||
@ifinfo
|
||||
@node Key Concepts Time, Key Concepts Memory Management, Key Concepts Communication and Synchronization, Key Concepts
|
||||
@end ifinfo
|
||||
@section Time
|
||||
|
||||
The development of responsive real-time applications
|
||||
@@ -288,9 +265,6 @@ time cannot operate without some external mechanism which
|
||||
provides a periodic clock tick. This clock tick is typically
|
||||
provided by a real time clock or counter/timer device.
|
||||
|
||||
@ifinfo
|
||||
@node Key Concepts Memory Management, Initialization Manager, Key Concepts Time, Key Concepts
|
||||
@end ifinfo
|
||||
@section Memory Management
|
||||
|
||||
RTEMS memory management facilities can be grouped
|
||||
|
||||
@@ -6,29 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System, Configuring a System Configuration Table, EXTENSION_DELETE - Delete a extension set, Top
|
||||
@end ifinfo
|
||||
@chapter Configuring a System
|
||||
@ifinfo
|
||||
@menu
|
||||
* Configuring a System Configuration Table::
|
||||
* Configuring a System RTEMS API Configuration Table::
|
||||
* Configuring a System POSIX API Configuration Table::
|
||||
* Configuring a System CPU Dependent Information Table::
|
||||
* Configuring a System Initialization Task Table::
|
||||
* Configuring a System Driver Address Table::
|
||||
* Configuring a System User Extensions Table::
|
||||
* Configuring a System Multiprocessor Configuration Table::
|
||||
* Configuring a System Multiprocessor Communications Interface Table::
|
||||
* Configuring a System Determining Memory Requirements::
|
||||
* Configuring a System Sizing the RTEMS RAM Workspace::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Configuration Table, Configuring a System RTEMS API Configuration Table, Configuring a System, Configuring a System
|
||||
@end ifinfo
|
||||
@section Configuration Table
|
||||
|
||||
The RTEMS Configuration Table is used to tailor an
|
||||
@@ -145,9 +124,6 @@ NULL if the POSIX API is not used.
|
||||
|
||||
@end table
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System RTEMS API Configuration Table, Configuring a System POSIX API Configuration Table, Configuring a System Configuration Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section RTEMS API Configuration Table
|
||||
|
||||
The RTEMS API Configuration Table is used to configure the
|
||||
@@ -238,9 +214,6 @@ initialization tasks. The format of this table will be discussed below.
|
||||
|
||||
@end table
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System POSIX API Configuration Table, Configuring a System CPU Dependent Information Table, Configuring a System RTEMS API Configuration Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section POSIX API Configuration Table
|
||||
|
||||
The POSIX API Configuration Table is used to configure the
|
||||
@@ -340,9 +313,6 @@ posix_initialization_threads_table @value{STRUCTURE}.
|
||||
|
||||
@end table
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System CPU Dependent Information Table, Configuring a System Initialization Task Table, Configuring a System POSIX API Configuration Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section CPU Dependent Information Table
|
||||
|
||||
The CPU Dependent Information Table is used to
|
||||
@@ -353,9 +323,6 @@ table are discussed in the CPU Dependent Information Table
|
||||
chapter of the Applications Supplement document for a specific
|
||||
target processor.
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Initialization Task Table, Configuring a System Driver Address Table, Configuring a System CPU Dependent Information Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section Initialization Task Table
|
||||
|
||||
The Initialization Task Table is used to describe
|
||||
@@ -477,9 +444,6 @@ Initialization_Tasks : aliased RTEMS.Initialization_Tasks_Table( 1 .. 2 ) := (
|
||||
@end example
|
||||
@end ifset
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Driver Address Table, Configuring a System User Extensions Table, Configuring a System Initialization Task Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section Driver Address Table
|
||||
|
||||
The Device Driver Table is used to inform the I/O
|
||||
@@ -574,9 +538,6 @@ More information regarding the construction and
|
||||
operation of device drivers is provided in the I/O Manager
|
||||
chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System User Extensions Table, Configuring a System Multiprocessor Configuration Table, Configuring a System Driver Address Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section User Extensions Table
|
||||
|
||||
The User Extensions Table is used to inform RTEMS of
|
||||
@@ -743,9 +704,6 @@ User_Extensions : RTEMS.Extensions_Table := (
|
||||
More information regarding the user extensions is
|
||||
provided in the User Extensions chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Multiprocessor Configuration Table, Configuring a System Multiprocessor Communications Interface Table, Configuring a System User Extensions Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section Multiprocessor Configuration Table
|
||||
|
||||
The Multiprocessor Configuration Table contains
|
||||
@@ -828,9 +786,6 @@ regarding its entries can be found in the next section.
|
||||
|
||||
@end table
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Multiprocessor Communications Interface Table, Configuring a System Determining Memory Requirements, Configuring a System Multiprocessor Configuration Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section Multiprocessor Communications Interface Table
|
||||
|
||||
The format of this table is defined in
|
||||
@@ -909,9 +864,6 @@ supplied multiprocessor communications layer.
|
||||
More information regarding the required functionality of these
|
||||
entry points is provided in the Multiprocessor chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Determining Memory Requirements, Configuring a System Sizing the RTEMS RAM Workspace, Configuring a System Multiprocessor Communications Interface Table, Configuring a System
|
||||
@end ifinfo
|
||||
@section Determining Memory Requirements
|
||||
|
||||
Since memory is a critical resource in many real-time
|
||||
@@ -959,9 +911,6 @@ with the underscore character and followed by an upper-case
|
||||
letter to avoid any naming conflicts. All RTEMS directive names
|
||||
should be treated as reserved words.
|
||||
|
||||
@ifinfo
|
||||
@node Configuring a System Sizing the RTEMS RAM Workspace, Multiprocessing Manager, Configuring a System Determining Memory Requirements, Configuring a System
|
||||
@end ifinfo
|
||||
@section Sizing the RTEMS RAM Workspace
|
||||
|
||||
The RTEMS RAM Workspace is a user-specified block of
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Directive Status Codes, Example Application, MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet, Top
|
||||
@node Directive Status Codes, Example Application, Multiprocessing Manager MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet, Top
|
||||
@end ifinfo
|
||||
@chapter Directive Status Codes
|
||||
@table @b
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Dual-Ported Memory Manager, Dual-Ported Memory Manager Introduction, REGION_GET_SEGMENT_SIZE - Obtain size of a segment, Top
|
||||
@end ifinfo
|
||||
@chapter Dual-Ported Memory Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Dual-Ported Memory Manager Introduction::
|
||||
* Dual-Ported Memory Manager Background::
|
||||
* Dual-Ported Memory Manager Operations::
|
||||
* Dual-Ported Memory Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Dual-Ported Memory Manager Introduction, Dual-Ported Memory Manager Background, Dual-Ported Memory Manager, Dual-Ported Memory Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The dual-ported memory manager provides a mechanism
|
||||
@@ -37,9 +23,6 @@ The directives provided by the dual-ported memory manager are:
|
||||
@item @code{@value{DIRPREFIX}port_internal_to_external} - Convert internal to external address
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Dual-Ported Memory Manager Background, Dual-Ported Memory Manager Operations, Dual-Ported Memory Manager Introduction, Dual-Ported Memory Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
|
||||
A dual-ported memory area (DPMA) is an contiguous
|
||||
@@ -58,22 +41,8 @@ systems with intelligent peripheral controllers. These
|
||||
controllers typically utilize the DPMA for high-performance data
|
||||
transfers.
|
||||
|
||||
@ifinfo
|
||||
@node Dual-Ported Memory Manager Operations, Creating a Port, Dual-Ported Memory Manager Background, Dual-Ported Memory Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Port::
|
||||
* Obtaining Port IDs::
|
||||
* Converting an Address::
|
||||
* Deleting a DPMA Port::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Port, Obtaining Port IDs, Dual-Ported Memory Manager Operations, Dual-Ported Memory Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Port
|
||||
|
||||
The @code{@value{DIRPREFIX}port_create} directive creates a port into a DPMA
|
||||
@@ -86,9 +55,6 @@ which is returned to the calling task. RTEMS does not
|
||||
initialize the dual-ported memory area or access any memory
|
||||
within it.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Port IDs, Converting an Address, Creating a Port, Dual-Ported Memory Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Port IDs
|
||||
|
||||
When a port is created, RTEMS generates a unique port
|
||||
@@ -102,9 +68,6 @@ may be obtained later using the
|
||||
ID is used by other dual-ported memory manager directives to
|
||||
access this port.
|
||||
|
||||
@ifinfo
|
||||
@node Converting an Address, Deleting a DPMA Port, Obtaining Port IDs, Dual-Ported Memory Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Converting an Address
|
||||
|
||||
The @code{@value{DIRPREFIX}port_external_to_internal} directive is used to
|
||||
@@ -116,28 +79,13 @@ representation for the specified port. If an attempt is made to
|
||||
convert an address which lies outside the specified DPMA, then
|
||||
the address to be converted will be returned.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a DPMA Port, Dual-Ported Memory Manager Directives, Converting an Address, Dual-Ported Memory Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a DPMA Port
|
||||
|
||||
A port can be removed from the system and returned to
|
||||
RTEMS with the @code{@value{DIRPREFIX}port_delete} directive. When a port is deleted,
|
||||
its control block is returned to the DPCB free list.
|
||||
|
||||
@ifinfo
|
||||
@node Dual-Ported Memory Manager Directives, PORT_CREATE - Create a port, Deleting a DPMA Port, Dual-Ported Memory Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* PORT_CREATE - Create a port::
|
||||
* PORT_IDENT - Get ID of a port::
|
||||
* PORT_DELETE - Delete a port::
|
||||
* PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address::
|
||||
* PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the dual-ported memory manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -145,9 +93,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PORT_CREATE - Create a port, PORT_IDENT - Get ID of a port, Dual-Ported Memory Manager Directives, Dual-Ported Memory Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PORT_CREATE - Create a port
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -205,9 +150,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PORT_IDENT - Get ID of a port, PORT_DELETE - Delete a port, PORT_CREATE - Create a port, Dual-Ported Memory Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PORT_IDENT - Get ID of a port
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -250,9 +192,6 @@ This directive will not cause the running task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PORT_DELETE - Delete a port, PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address, PORT_IDENT - Get ID of a port, Dual-Ported Memory Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PORT_DELETE - Delete a port
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -294,9 +233,6 @@ created the port. Any local task that knows the port id can
|
||||
delete the port.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address, PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address, PORT_DELETE - Delete a port, Dual-Ported Memory Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -341,9 +277,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address, I/O Manager, PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address, Dual-Ported Memory Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Event Manager, Event Manager Introduction, MESSAGE_QUEUE_FLUSH - Flush all messages on a queue, Top
|
||||
@end ifinfo
|
||||
@chapter Event Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Event Manager Introduction::
|
||||
* Event Manager Background::
|
||||
* Event Manager Operations::
|
||||
* Event Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Event Manager Introduction, Event Manager Background, Event Manager, Event Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The event manager provides a high performance method
|
||||
@@ -33,21 +19,8 @@ provided by the event manager are:
|
||||
@item @code{@value{DIRPREFIX}event_receive} - Receive event condition
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Event Manager Background, Event Sets, Event Manager Introduction, Event Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Event Sets::
|
||||
* Building an Event Set or Condition::
|
||||
* Building an EVENT_RECEIVE Option Set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Event Sets, Building an Event Set or Condition, Event Manager Background, Event Manager Background
|
||||
@end ifinfo
|
||||
@subsection Event Sets
|
||||
|
||||
An event flag is used by a task (or ISR) to inform
|
||||
@@ -85,9 +58,6 @@ an event condition is satisfied when at least a single requested
|
||||
event is posted. The @code{@value{RPREFIX}EVENT_ALL} algorithm states that an event
|
||||
condition is satisfied when every requested event is posted.
|
||||
|
||||
@ifinfo
|
||||
@node Building an Event Set or Condition, Building an EVENT_RECEIVE Option Set, Event Sets, Event Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building an Event Set or Condition
|
||||
|
||||
An event set or condition is built by a bitwise OR of
|
||||
@@ -104,9 +74,6 @@ the event parameter to the @code{@value{DIRPREFIX}event_send}
|
||||
directive should be @code{@value{RPREFIX}EVENT_6 @value{OR}
|
||||
@value{RPREFIX}EVENT_15 @value{OR} @value{RPREFIX}EVENT_31}.
|
||||
|
||||
@ifinfo
|
||||
@node Building an EVENT_RECEIVE Option Set, Event Manager Operations, Building an Event Set or Condition, Event Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building an EVENT_RECEIVE Option Set
|
||||
|
||||
In general, an option is built by a bitwise OR of the
|
||||
@@ -139,22 +106,8 @@ or @code{@value{RPREFIX}NO_WAIT}. The option parameter can be set to
|
||||
@code{@value{RPREFIX}NO_WAIT} because @code{@value{RPREFIX}EVENT_ALL} is the
|
||||
default condition for @code{@value{DIRPREFIX}event_receive}.
|
||||
|
||||
@ifinfo
|
||||
@node Event Manager Operations, Sending an Event Set, Building an EVENT_RECEIVE Option Set, Event Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Sending an Event Set::
|
||||
* Receiving an Event Set::
|
||||
* Determining the Pending Event Set::
|
||||
* Receiving all Pending Events::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Sending an Event Set, Receiving an Event Set, Event Manager Operations, Event Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Sending an Event Set
|
||||
|
||||
The @code{@value{DIRPREFIX}event_send} directive allows a task (or an ISR) to
|
||||
@@ -183,9 +136,6 @@ task remains blocked.
|
||||
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Receiving an Event Set, Determining the Pending Event Set, Sending an Event Set, Event Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Receiving an Event Set
|
||||
|
||||
The @code{@value{DIRPREFIX}event_receive} directive is used by tasks to
|
||||
@@ -208,9 +158,6 @@ with an error status code.
|
||||
wait before returning with an error status code.
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Determining the Pending Event Set, Receiving all Pending Events, Receiving an Event Set, Event Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Determining the Pending Event Set
|
||||
|
||||
A task can determine the pending event set by calling
|
||||
@@ -219,9 +166,6 @@ the @code{@value{DIRPREFIX}event_receive} directive with a value of
|
||||
The pending events are returned to the calling task but the event
|
||||
set is left unaltered.
|
||||
|
||||
@ifinfo
|
||||
@node Receiving all Pending Events, Event Manager Directives, Determining the Pending Event Set, Event Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Receiving all Pending Events
|
||||
|
||||
A task can receive all of the currently pending
|
||||
@@ -233,16 +177,7 @@ for the option set. The pending events are returned to the
|
||||
calling task and the event set is cleared. If no events are
|
||||
pending then the @code{@value{RPREFIX}UNSATISFIED} status code will be returned.
|
||||
|
||||
@ifinfo
|
||||
@node Event Manager Directives, EVENT_SEND - Send event set to a task, Receiving all Pending Events, Event Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* EVENT_SEND - Send event set to a task::
|
||||
* EVENT_RECEIVE - Receive event condition::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the event manager's directives.
|
||||
A subsection is dedicated to each of this manager's directives
|
||||
@@ -250,9 +185,6 @@ and describes the calling sequence, related constants, usage,
|
||||
and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node EVENT_SEND - Send event set to a task, EVENT_RECEIVE - Receive event condition, Event Manager Directives, Event Manager Directives
|
||||
@end ifinfo
|
||||
@subsection EVENT_SEND - Send event set to a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -309,9 +241,6 @@ reside on the local node will generate a request telling the
|
||||
remote node to send the event set to the appropriate task.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node EVENT_RECEIVE - Receive event condition, Signal Manager, EVENT_SEND - Send event set to a task, Event Manager Directives
|
||||
@end ifinfo
|
||||
@subsection EVENT_RECEIVE - Receive event condition
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Fatal Error Manager, Fatal Error Manager Introduction, IO_CONTROL - Special device services, Top
|
||||
@end ifinfo
|
||||
@chapter Fatal Error Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Fatal Error Manager Introduction::
|
||||
* Fatal Error Manager Background::
|
||||
* Fatal Error Manager Operations::
|
||||
* Fatal Error Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Fatal Error Manager Introduction, Fatal Error Manager Background, Fatal Error Manager, Fatal Error Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The fatal error manager processes all fatal or
|
||||
@@ -32,9 +18,6 @@ manager is:
|
||||
@item @code{@value{DIRPREFIX}fatal_error_occurred} - Invoke the fatal error handler
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Fatal Error Manager Background, Fatal Error Manager Operations, Fatal Error Manager Introduction, Fatal Error Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
|
||||
The fatal error manager is called upon detection of
|
||||
@@ -73,19 +56,8 @@ RTEMS fatal error are discussed in the Default Fatal Error
|
||||
Processing chapter of the Applications Supplement document for
|
||||
a specific target processor.
|
||||
|
||||
@ifinfo
|
||||
@node Fatal Error Manager Operations, Announcing a Fatal Error, Fatal Error Manager Background, Fatal Error Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Announcing a Fatal Error::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Announcing a Fatal Error, Fatal Error Manager Directives, Fatal Error Manager Operations, Fatal Error Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Announcing a Fatal Error
|
||||
|
||||
The @code{@value{DIRPREFIX}fatal_error_occurred} directive is invoked when a
|
||||
@@ -131,15 +103,7 @@ the default handler provided by RTEMS is executed. This default
|
||||
handler will halt execution on the processor where the error
|
||||
occurred.
|
||||
|
||||
@ifinfo
|
||||
@node Fatal Error Manager Directives, FATAL_ERROR_OCCURRED - Invoke the fatal error handler, Announcing a Fatal Error, Fatal Error Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* FATAL_ERROR_OCCURRED - Invoke the fatal error handler::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the fatal error manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -147,9 +111,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node FATAL_ERROR_OCCURRED - Invoke the fatal error handler, Scheduling Concepts, Fatal Error Manager Directives, Fatal Error Manager Directives
|
||||
@end ifinfo
|
||||
@subsection FATAL_ERROR_OCCURRED - Invoke the fatal error handler
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Manager, Initialization Manager Introduction, Key Concepts Memory Management, Top
|
||||
@end ifinfo
|
||||
@chapter Initialization Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Initialization Manager Introduction::
|
||||
* Initialization Manager Background::
|
||||
* Initialization Manager Operations::
|
||||
* Initialization Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Manager Introduction, Initialization Manager Background, Initialization Manager, Initialization Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The initialization manager is responsible for
|
||||
@@ -39,22 +25,8 @@ directives provided by the initialization manager are:
|
||||
@item @code{@value{DIRPREFIX}shutdown_executive} - Shutdown RTEMS
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Manager Background, Initialization Tasks, Initialization Manager Introduction, Initialization Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Initialization Tasks::
|
||||
* The System Initialization Task::
|
||||
* The Idle Task::
|
||||
* Initialization Manager Failure::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Tasks, The System Initialization Task, Initialization Manager Background, Initialization Manager Background
|
||||
@end ifinfo
|
||||
@subsection Initialization Tasks
|
||||
|
||||
Initialization task(s) are the mechanism by which
|
||||
@@ -80,9 +52,6 @@ This transformation typically involves changing priority and
|
||||
execution mode. RTEMS does not automatically delete the
|
||||
initialization tasks.
|
||||
|
||||
@ifinfo
|
||||
@node The System Initialization Task, The Idle Task, Initialization Tasks, Initialization Manager Background
|
||||
@end ifinfo
|
||||
@subsection The System Initialization Task
|
||||
|
||||
The System Initialization Task is responsible for
|
||||
@@ -107,9 +76,6 @@ Multiprocessing Server which initializes the Multiprocessor
|
||||
Communications Interface Layer, verifies multiprocessor system
|
||||
consistency, and processes all requests from remote nodes.
|
||||
|
||||
@ifinfo
|
||||
@node The Idle Task, Initialization Manager Failure, The System Initialization Task, Initialization Manager Background
|
||||
@end ifinfo
|
||||
@subsection The Idle Task
|
||||
|
||||
The Idle Task is the lowest priority task in a system
|
||||
@@ -117,9 +83,6 @@ and executes only when no other task is ready to execute. This
|
||||
task consists of an infinite loop and will be preempted when any
|
||||
other task is made ready to execute.
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Manager Failure, Initialization Manager Operations, The Idle Task, Initialization Manager Background
|
||||
@end ifinfo
|
||||
@subsection Initialization Manager Failure
|
||||
|
||||
The fatal_error_occurred directive will be called
|
||||
@@ -155,20 +118,8 @@ initialization sequence.
|
||||
created or started successfully.
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Manager Operations, Initializing RTEMS, Initialization Manager Failure, Initialization Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Initializing RTEMS::
|
||||
* Shutting Down RTEMS::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Initializing RTEMS, Shutting Down RTEMS, Initialization Manager Operations, Initialization Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Initializing RTEMS
|
||||
|
||||
The @code{@value{DIRPREFIX}initialize_executive}
|
||||
@@ -221,9 +172,6 @@ directive is invoked to start
|
||||
multitasking. It is critical that only one of the RTEMS
|
||||
initialization sequences be used in an application.
|
||||
|
||||
@ifinfo
|
||||
@node Shutting Down RTEMS, Initialization Manager Directives, Initializing RTEMS, Initialization Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Shutting Down RTEMS
|
||||
|
||||
The @code{@value{DIRPREFIX}shutdown_executive} directive is invoked by the
|
||||
@@ -232,18 +180,7 @@ support package. The board support package resumes execution at
|
||||
the code immediately following the invocation of the
|
||||
@code{@value{DIRPREFIX}initialize_executive} directive.
|
||||
|
||||
@ifinfo
|
||||
@node Initialization Manager Directives, INITIALIZE_EXECUTIVE - Initialize RTEMS, Shutting Down RTEMS, Initialization Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* INITIALIZE_EXECUTIVE - Initialize RTEMS::
|
||||
* INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking::
|
||||
* INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking::
|
||||
* SHUTDOWN_EXECUTIVE - Shutdown RTEMS::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the initialization manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -251,9 +188,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INITIALIZE_EXECUTIVE - Initialize RTEMS, INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking, Initialization Manager Directives, Initialization Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INITIALIZE_EXECUTIVE - Initialize RTEMS
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -317,9 +251,6 @@ directive is logically equivalent to invoking
|
||||
with no intervening actions.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking, INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking, INITIALIZE_EXECUTIVE - Initialize RTEMS, Initialization Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -372,9 +303,6 @@ initialization sequences:
|
||||
@code{@value{DIRPREFIX}nitialize_executive_late}.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking, SHUTDOWN_EXECUTIVE - Shutdown RTEMS, INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking, Initialization Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -432,9 +360,6 @@ initialization sequences:
|
||||
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SHUTDOWN_EXECUTIVE - Shutdown RTEMS, Task Manager, INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking, Initialization Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SHUTDOWN_EXECUTIVE - Shutdown RTEMS
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Interrupt Manager, Interrupt Manager Introduction, TASK_WAKE_WHEN - Wake up when specified, Top
|
||||
@end ifinfo
|
||||
@chapter Interrupt Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Interrupt Manager Introduction::
|
||||
* Interrupt Manager Background::
|
||||
* Interrupt Manager Operations::
|
||||
* Interrupt Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Interrupt Manager Introduction, Interrupt Manager Background, Interrupt Manager, Interrupt Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
Any real-time executive must provide a mechanism for
|
||||
@@ -41,21 +27,8 @@ directive:
|
||||
@item @code{@value{DIRPREFIX}interrupt_is_in_progress} - Is an ISR in Progress
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Interrupt Manager Background, Processing an Interrupt, Interrupt Manager Introduction, Interrupt Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Processing an Interrupt::
|
||||
* RTEMS Interrupt Levels::
|
||||
* Disabling of Interrupts by RTEMS::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Processing an Interrupt, RTEMS Interrupt Levels, Interrupt Manager Background, Interrupt Manager Background
|
||||
@end ifinfo
|
||||
@subsection Processing an Interrupt
|
||||
|
||||
The interrupt manager allows the application to
|
||||
@@ -138,9 +111,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node RTEMS Interrupt Levels, Disabling of Interrupts by RTEMS, Processing an Interrupt, Interrupt Manager Background
|
||||
@end ifinfo
|
||||
@subsection RTEMS Interrupt Levels
|
||||
|
||||
Many processors support multiple interrupt levels or
|
||||
@@ -152,9 +122,6 @@ processor's interrupt levels, refer to the Interrupt Processing
|
||||
chapter of the Applications Supplement document for a specific
|
||||
target processor.
|
||||
|
||||
@ifinfo
|
||||
@node Disabling of Interrupts by RTEMS, Interrupt Manager Operations, RTEMS Interrupt Levels, Interrupt Manager Background
|
||||
@end ifinfo
|
||||
@subsection Disabling of Interrupts by RTEMS
|
||||
|
||||
During the execution of directive calls, critical
|
||||
@@ -175,20 +142,8 @@ occur due to the inability of RTEMS to protect its critical
|
||||
sections. However, ISRs that make no system calls may safely
|
||||
execute as non-maskable interrupts.
|
||||
|
||||
@ifinfo
|
||||
@node Interrupt Manager Operations, Establishing an ISR, Disabling of Interrupts by RTEMS, Interrupt Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Establishing an ISR::
|
||||
* Directives Allowed from an ISR::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Establishing an ISR, Directives Allowed from an ISR, Interrupt Manager Operations, Interrupt Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Establishing an ISR
|
||||
|
||||
The @code{@value{DIRPREFIX}interrupt_catch}
|
||||
@@ -200,9 +155,6 @@ Interrupt Vector Table and the address of the user's ISR in the
|
||||
RTEMS' Vector Table. This directive returns the previous
|
||||
contents of the specified vector in the RTEMS' Vector Table.
|
||||
|
||||
@ifinfo
|
||||
@node Directives Allowed from an ISR, Interrupt Manager Directives, Establishing an ISR, Interrupt Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Directives Allowed from an ISR
|
||||
|
||||
Using the interrupt manager insures that RTEMS knows
|
||||
@@ -266,19 +218,7 @@ made from an ISR:
|
||||
@end itemize
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Interrupt Manager Directives, INTERRUPT_CATCH - Establish an ISR, Directives Allowed from an ISR, Interrupt Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* INTERRUPT_CATCH - Establish an ISR::
|
||||
* INTERRUPT_DISABLE - Disable Interrupts::
|
||||
* INTERRUPT_ENABLE - Enable Interrupts::
|
||||
* INTERRUPT_FLASH - Flash Interrupts::
|
||||
* INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the interrupt manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -286,9 +226,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INTERRUPT_CATCH - Establish an ISR, INTERRUPT_DISABLE - Disable Interrupts, Interrupt Manager Directives, Interrupt Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INTERRUPT_CATCH - Establish an ISR
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -332,9 +269,6 @@ returned in @code{old_isr_handler}.
|
||||
This directive will not cause the calling task to be preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INTERRUPT_DISABLE - Disable Interrupts, INTERRUPT_ENABLE - Enable Interrupts, INTERRUPT_CATCH - Establish an ISR, Interrupt Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INTERRUPT_DISABLE - Disable Interrupts
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -375,9 +309,6 @@ parameter.}
|
||||
@end ifset
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INTERRUPT_ENABLE - Enable Interrupts, INTERRUPT_FLASH - Flash Interrupts, INTERRUPT_DISABLE - Disable Interrupts, Interrupt Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INTERRUPT_ENABLE - Enable Interrupts
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -417,9 +348,6 @@ This directive will not cause the calling task to be preempted.
|
||||
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INTERRUPT_FLASH - Flash Interrupts, INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress, INTERRUPT_ENABLE - Enable Interrupts, Interrupt Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INTERRUPT_FLASH - Flash Interrupts
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -458,9 +386,6 @@ and will be redisabled when this directive returns to the caller.
|
||||
This directive will not cause the calling task to be preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress, Clock Manager, INTERRUPT_FLASH - Flash Interrupts, Interrupt Manager Directives
|
||||
@end ifinfo
|
||||
@subsection INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
101
doc/user/io.t
101
doc/user/io.t
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node I/O Manager, I/O Manager Introduction, PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address, Top
|
||||
@end ifinfo
|
||||
@chapter I/O Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* I/O Manager Introduction::
|
||||
* I/O Manager Background::
|
||||
* I/O Manager Operations::
|
||||
* I/O Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node I/O Manager Introduction, I/O Manager Background, I/O Manager, I/O Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The input/output interface manager provides a
|
||||
@@ -40,26 +26,8 @@ directives provided by the I/O manager are:
|
||||
@item @code{@value{DIRPREFIX}io_control} - Special device services
|
||||
@end itemize
|
||||
|
||||
|
||||
|
||||
@ifinfo
|
||||
@node I/O Manager Background, Device Driver Table, I/O Manager Introduction, I/O Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Device Driver Table::
|
||||
* Major and Minor Device Numbers::
|
||||
* Device Names::
|
||||
* Device Driver Environment::
|
||||
* Device Driver Interface::
|
||||
* Device Driver Initialization::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Device Driver Table, Major and Minor Device Numbers, I/O Manager Background, I/O Manager Background
|
||||
@end ifinfo
|
||||
@subsection Device Driver Table
|
||||
|
||||
Each application utilizing the RTEMS I/O manager must
|
||||
@@ -84,9 +52,6 @@ be NULL. RTEMS will return
|
||||
zero (0) as the device driver's return code for these device
|
||||
driver entry points.
|
||||
|
||||
@ifinfo
|
||||
@node Major and Minor Device Numbers, Device Names, Device Driver Table, I/O Manager Background
|
||||
@end ifinfo
|
||||
@subsection Major and Minor Device Numbers
|
||||
|
||||
Each call to the I/O manager must provide a device's
|
||||
@@ -97,9 +62,6 @@ The exact usage of the minor number is driver specific, but is
|
||||
commonly used to distinguish between a number of devices
|
||||
controlled by the same driver.
|
||||
|
||||
@ifinfo
|
||||
@node Device Names, Device Driver Environment, Major and Minor Device Numbers, I/O Manager Background
|
||||
@end ifinfo
|
||||
@subsection Device Names
|
||||
|
||||
The I/O Manager provides facilities to associate a
|
||||
@@ -107,9 +69,6 @@ name with a particular device. Directives are provided to
|
||||
register the name of a device and to look up the major/minor
|
||||
number pair associated with a device name.
|
||||
|
||||
@ifinfo
|
||||
@node Device Driver Environment, Device Driver Interface, Device Names, I/O Manager Background
|
||||
@end ifinfo
|
||||
@subsection Device Driver Environment
|
||||
|
||||
Application developers, as well as device driver
|
||||
@@ -140,9 +99,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Device Driver Interface, Device Driver Initialization, Device Driver Environment, I/O Manager Background
|
||||
@end ifinfo
|
||||
@subsection Device Driver Interface
|
||||
|
||||
When an application invokes an I/O manager directive,
|
||||
@@ -181,9 +137,6 @@ application components. A common technique used to generate
|
||||
driver specific error codes is to make the most significant part
|
||||
of the status indicate a driver specific code.
|
||||
|
||||
@ifinfo
|
||||
@node Device Driver Initialization, I/O Manager Operations, Device Driver Interface, I/O Manager Background
|
||||
@end ifinfo
|
||||
@subsection Device Driver Initialization
|
||||
|
||||
RTEMS automatically initializes all device drivers
|
||||
@@ -208,20 +161,8 @@ The returned status will be ignored by RTEMS. If the driver
|
||||
cannot successfully initialize the device, then it should invoke
|
||||
the fatal_error_occurred directive.
|
||||
|
||||
@ifinfo
|
||||
@node I/O Manager Operations, Register and Lookup Name, Device Driver Initialization, I/O Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Register and Lookup Name::
|
||||
* Accessing an Device Driver::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Register and Lookup Name, Accessing an Device Driver, I/O Manager Operations, I/O Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Register and Lookup Name
|
||||
|
||||
The @code{@value{DIRPREFIX}io_register} directive associates a name with the
|
||||
@@ -235,9 +176,6 @@ application from being dependent on the arbitrary assignment of
|
||||
major numbers in a particular application. No device naming
|
||||
conventions are dictated by RTEMS.
|
||||
|
||||
@ifinfo
|
||||
@node Accessing an Device Driver, I/O Manager Directives, Register and Lookup Name, I/O Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Accessing an Device Driver
|
||||
|
||||
The I/O manager provides directives which enable the
|
||||
@@ -252,22 +190,7 @@ manager directives
|
||||
@code{@value{DIRPREFIX}io_control}
|
||||
and the underlying device driver entry points.
|
||||
|
||||
@ifinfo
|
||||
@node I/O Manager Directives, IO_INITIALIZE - Initialize a device driver, Accessing an Device Driver, I/O Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* IO_INITIALIZE - Initialize a device driver::
|
||||
* IO_REGISTER_NAME - Register a device::
|
||||
* IO_LOOKUP_NAME - Lookup a device::
|
||||
* IO_OPEN - Open a device::
|
||||
* IO_CLOSE - Close a device::
|
||||
* IO_READ - Read from a device::
|
||||
* IO_WRITE - Write to a device::
|
||||
* IO_CONTROL - Special device services::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the I/O manager's directives. A
|
||||
subsection is dedicated to each of this manager's directives and
|
||||
@@ -275,9 +198,6 @@ describes the calling sequence, related constants, usage, and
|
||||
status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_INITIALIZE - Initialize a device driver, IO_REGISTER_NAME - Register a device, I/O Manager Directives, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_INITIALIZE - Initialize a device driver
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -328,9 +248,6 @@ to be preempted. This is dependent on the device driver being
|
||||
initialized.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_REGISTER_NAME - Register a device, IO_LOOKUP_NAME - Lookup a device, IO_INITIALIZE - Initialize a device driver, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_REGISTER_NAME - Register a device
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -371,9 +288,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_LOOKUP_NAME - Lookup a device, IO_OPEN - Open a device, IO_REGISTER_NAME - Register a device, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_LOOKUP_NAME - Lookup a device
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -412,9 +326,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_OPEN - Open a device, IO_CLOSE - Close a device, IO_LOOKUP_NAME - Lookup a device, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_OPEN - Open a device
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -459,9 +370,6 @@ to be preempted. This is dependent on the device driver being
|
||||
invoked.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_CLOSE - Close a device, IO_READ - Read from a device, IO_OPEN - Open a device, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_CLOSE - Close a device
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -506,9 +414,6 @@ to be preempted. This is dependent on the device driver being
|
||||
invoked.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_READ - Read from a device, IO_WRITE - Write to a device, IO_CLOSE - Close a device, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_READ - Read from a device
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -554,9 +459,6 @@ to be preempted. This is dependent on the device driver being
|
||||
invoked.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_WRITE - Write to a device, IO_CONTROL - Special device services, IO_READ - Read from a device, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_WRITE - Write to a device
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -602,9 +504,6 @@ to be preempted. This is dependent on the device driver being
|
||||
invoked.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node IO_CONTROL - Special device services, Fatal Error Manager, IO_WRITE - Write to a device, I/O Manager Directives
|
||||
@end ifinfo
|
||||
@subsection IO_CONTROL - Special device services
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,23 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessing Manager, Multiprocessing Manager Introduction, Configuring a System Sizing the RTEMS RAM Workspace, Top
|
||||
@end ifinfo
|
||||
@chapter Multiprocessing Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Multiprocessing Manager Introduction::
|
||||
* Multiprocessing Manager Background::
|
||||
* Multiprocessing Manager Multiprocessor Communications Interface Layer::
|
||||
* Multiprocessing Manager Operations::
|
||||
* Multiprocessing Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessing Manager Introduction, Multiprocessing Manager Background, Multiprocessing Manager, Multiprocessing Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
In multiprocessor real-time systems, new
|
||||
@@ -56,20 +41,7 @@ performs the actions required to access the desired object.
|
||||
Simply stated, RTEMS allows the entire system, both hardware and
|
||||
software, to be viewed logically as a single system.
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessing Manager Background, Nodes, Multiprocessing Manager Introduction, Multiprocessing Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Nodes::
|
||||
* Global Objects::
|
||||
* Global Object Table::
|
||||
* Remote Operations::
|
||||
* Proxies::
|
||||
* Multiprocessor Configuration Table::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
RTEMS makes no assumptions regarding the connection
|
||||
media or topology of a multiprocessor system. The tasks which
|
||||
@@ -96,9 +68,6 @@ for 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.
|
||||
|
||||
@ifinfo
|
||||
@node Nodes, Global Objects, Multiprocessing Manager Background, Multiprocessing Manager Background
|
||||
@end ifinfo
|
||||
@subsection Nodes
|
||||
|
||||
A processor in a RTEMS system is referred to as a
|
||||
@@ -116,9 +85,6 @@ node when performing remote operations. Thus, the
|
||||
Multiprocessor Communications Interface Layer (MPCI) must be
|
||||
able to route messages based on the node number.
|
||||
|
||||
@ifinfo
|
||||
@node Global Objects, Global Object Table, Nodes, Multiprocessing Manager Background
|
||||
@end ifinfo
|
||||
@subsection Global Objects
|
||||
|
||||
All RTEMS objects which are created with the GLOBAL
|
||||
@@ -133,9 +99,6 @@ Configuration Table. The distribution of tasks to processors is
|
||||
performed during the application design phase. Dynamic task
|
||||
relocation is not supported by RTEMS.
|
||||
|
||||
@ifinfo
|
||||
@node Global Object Table, Remote Operations, Global Objects, Multiprocessing Manager Background
|
||||
@end ifinfo
|
||||
@subsection Global Object Table
|
||||
|
||||
RTEMS maintains two tables containing object
|
||||
@@ -158,9 +121,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Remote Operations, Proxies, Global Object Table, Multiprocessing Manager Background
|
||||
@end ifinfo
|
||||
@subsection Remote Operations
|
||||
|
||||
When an application performs an operation on a remote
|
||||
@@ -229,9 +189,6 @@ MPCI layer, the fatal 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.
|
||||
|
||||
@ifinfo
|
||||
@node Proxies, Multiprocessor Configuration Table, Remote Operations, Multiprocessing Manager Background
|
||||
@end ifinfo
|
||||
@subsection Proxies
|
||||
|
||||
A proxy is an RTEMS data structure which resides on a
|
||||
@@ -252,9 +209,6 @@ to be configured. The distribution of proxy control blocks is
|
||||
application dependent and is different from the distribution of
|
||||
tasks.
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessor Configuration Table, Multiprocessing Manager Multiprocessor Communications Interface Layer, Proxies, Multiprocessing Manager Background
|
||||
@end ifinfo
|
||||
@subsection Multiprocessor Configuration Table
|
||||
|
||||
The Multiprocessor Configuration Table contains
|
||||
@@ -263,20 +217,7 @@ system. This table is discussed in detail in the section
|
||||
Multiprocessor Configuration Table of the Configuring a System
|
||||
chapter.
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessing Manager Multiprocessor Communications Interface Layer, INITIALIZATION, Multiprocessor Configuration Table, Multiprocessing Manager
|
||||
@end ifinfo
|
||||
@section Multiprocessor Communications Interface Layer
|
||||
@ifinfo
|
||||
@menu
|
||||
* INITIALIZATION::
|
||||
* GET_PACKET::
|
||||
* RETURN_PACKET::
|
||||
* RECEIVE_PACKET::
|
||||
* SEND_PACKET::
|
||||
* Supporting Heterogeneous Environments::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
The Multiprocessor Communications Interface Layer
|
||||
(MPCI) is a set of user-provided procedures which enable the
|
||||
@@ -332,9 +273,6 @@ the packet. The Multiprocessing Server will call the get_packet
|
||||
entry to obtain a packet buffer and the receive_entry entry to
|
||||
copy the message into the buffer obtained.
|
||||
|
||||
@ifinfo
|
||||
@node INITIALIZATION, GET_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer, Multiprocessing Manager Multiprocessor Communications Interface Layer
|
||||
@end ifinfo
|
||||
@subsection INITIALIZATION
|
||||
|
||||
The INITIALIZATION component of the user-provided
|
||||
@@ -375,9 +313,6 @@ routine must create and initialize a pool of packet buffers.
|
||||
There must be enough packet buffers so RTEMS can obtain one
|
||||
whenever needed.
|
||||
|
||||
@ifinfo
|
||||
@node GET_PACKET, RETURN_PACKET, INITIALIZATION, Multiprocessing Manager Multiprocessor Communications Interface Layer
|
||||
@end ifinfo
|
||||
@subsection GET_PACKET
|
||||
|
||||
The GET_PACKET component of the user-provided MPCI
|
||||
@@ -415,9 +350,6 @@ For example, RTEMS sends response messages (RR) back to the
|
||||
originator in the same packet in which the request message (RQ)
|
||||
arrived.
|
||||
|
||||
@ifinfo
|
||||
@node RETURN_PACKET, RECEIVE_PACKET, GET_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
|
||||
@end ifinfo
|
||||
@subsection RETURN_PACKET
|
||||
|
||||
The RETURN_PACKET component of the user-provided MPCI
|
||||
@@ -447,9 +379,6 @@ where packet is the address of a packet. If the
|
||||
packet cannot be successfully returned, the fatal error manager
|
||||
should be invoked.
|
||||
|
||||
@ifinfo
|
||||
@node RECEIVE_PACKET, SEND_PACKET, RETURN_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
|
||||
@end ifinfo
|
||||
@subsection RECEIVE_PACKET
|
||||
|
||||
The RECEIVE_PACKET component of the user-provided
|
||||
@@ -481,9 +410,6 @@ available, then packet will contain the address of the message
|
||||
from another node. If no messages are available, this entry
|
||||
packet should contain NULL.
|
||||
|
||||
@ifinfo
|
||||
@node SEND_PACKET, Supporting Heterogeneous Environments, RECEIVE_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
|
||||
@end ifinfo
|
||||
@subsection SEND_PACKET
|
||||
|
||||
The SEND_PACKET component of the user-provided MPCI
|
||||
@@ -529,9 +455,6 @@ The to_convert field of the MP_packet_prefix portion of the packet indicates
|
||||
how much of the packet (in unsigned32's) may require conversion in a
|
||||
heterogeneous system.
|
||||
|
||||
@ifinfo
|
||||
@node Supporting Heterogeneous Environments, Multiprocessing Manager Operations, SEND_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
|
||||
@end ifinfo
|
||||
@subsection Supporting Heterogeneous Environments
|
||||
|
||||
Developing an MPCI layer for a heterogeneous system
|
||||
@@ -614,19 +537,8 @@ sending or receiving MPCI layer.
|
||||
data component of the packet.
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessing Manager Operations, Announcing a Packet, Supporting Heterogeneous Environments, Multiprocessing Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Announcing a Packet::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Announcing a Packet, Multiprocessing Manager Directives, Multiprocessing Manager Operations, Multiprocessing Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Announcing a Packet
|
||||
|
||||
The @code{@value{DIRPREFIX}multiprocessing_announce} directive is called by
|
||||
@@ -634,15 +546,7 @@ the MPCI layer to inform RTEMS that a packet has arrived from
|
||||
another node. This directive can be called from an interrupt
|
||||
service routine or from within a polling routine.
|
||||
|
||||
@ifinfo
|
||||
@node Multiprocessing Manager Directives, MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet, Announcing a Packet, Multiprocessing Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the additional directives
|
||||
required to support RTEMS in a multiprocessor configuration. A
|
||||
@@ -651,9 +555,6 @@ describes the calling sequence, related constants, usage, and
|
||||
status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet, Directive Status Codes, Multiprocessing Manager Directives, Multiprocessing Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
111
doc/user/msg.t
111
doc/user/msg.t
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Message Manager, Message Manager Introduction, SEMAPHORE_RELEASE - Release a semaphore, Top
|
||||
@end ifinfo
|
||||
@chapter Message Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Message Manager Introduction::
|
||||
* Message Manager Background::
|
||||
* Message Manager Operations::
|
||||
* Message Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Message Manager Introduction, Message Manager Background, Message Manager, Message Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The message manager provides communication and
|
||||
@@ -40,22 +26,8 @@ directives provided by the message manager are:
|
||||
@item @code{@value{DIRPREFIX}message_queue_flush} - Flush all messages on a queue
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Message Manager Background, Messages, Message Manager Introduction, Message Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Messages::
|
||||
* Message Queues::
|
||||
* Building a Message Queue's Attribute Set::
|
||||
* Building a MESSAGE_QUEUE_RECEIVE Option Set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Messages, Message Queues, Message Manager Background, Message Manager Background
|
||||
@end ifinfo
|
||||
@subsection Messages
|
||||
|
||||
A message is a variable length buffer where
|
||||
@@ -63,9 +35,6 @@ information can be stored to support communication. The length
|
||||
of the message and the information stored in that message are
|
||||
user-defined and can be actual data, pointer(s), or empty.
|
||||
|
||||
@ifinfo
|
||||
@node Message Queues, Building a Message Queue's Attribute Set, Messages, Message Manager Background
|
||||
@end ifinfo
|
||||
@subsection Message Queues
|
||||
|
||||
A message queue permits the passing of messages among
|
||||
@@ -83,9 +52,6 @@ a queue for the arrival of a message.
|
||||
The maximum length message which can be sent is set
|
||||
on a per message queue basis.
|
||||
|
||||
@ifinfo
|
||||
@node Building a Message Queue's Attribute Set, Building a MESSAGE_QUEUE_RECEIVE Option Set, Message Queues, Message Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a Message Queue's Attribute Set
|
||||
|
||||
In general, an attribute set is built by a bitwise OR
|
||||
@@ -118,9 +84,6 @@ message queues. If a similar message queue were to be known globally, then the
|
||||
attribute_set parameter would be
|
||||
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}.
|
||||
|
||||
@ifinfo
|
||||
@node Building a MESSAGE_QUEUE_RECEIVE Option Set, Message Manager Operations, Building a Message Queue's Attribute Set, Message Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a MESSAGE_QUEUE_RECEIVE Option Set
|
||||
|
||||
In general, an option is built by a bitwise OR of the
|
||||
@@ -144,24 +107,8 @@ to poll for a message to arrive. The option parameter passed to
|
||||
the @code{@value{DIRPREFIX}message_queue_receive} directive should
|
||||
be @code{@value{RPREFIX}NO_WAIT}.
|
||||
|
||||
@ifinfo
|
||||
@node Message Manager Operations, Creating a Message Queue, Building a MESSAGE_QUEUE_RECEIVE Option Set, Message Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Message Queue::
|
||||
* Obtaining Message Queue IDs::
|
||||
* Receiving a Message::
|
||||
* Sending a Message::
|
||||
* Broadcasting a Message::
|
||||
* Deleting a Message Queue::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Message Queue, Obtaining Message Queue IDs, Message Manager Operations, Message Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Message Queue
|
||||
|
||||
The @code{@value{DIRPREFIX}message_queue_create} directive creates a message
|
||||
@@ -179,9 +126,6 @@ For GLOBAL message queues, the maximum message size
|
||||
is effectively limited to the longest message which the MPCI is
|
||||
capable of transmitting.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Message Queue IDs, Receiving a Message, Creating a Message Queue, Message Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Message Queue IDs
|
||||
|
||||
When a message queue is created, RTEMS generates a
|
||||
@@ -193,9 +137,6 @@ ID may be obtained later using the @code{@value{DIRPREFIX}message_queue_ident}
|
||||
directive. The queue ID is used by other message manager
|
||||
directives to access this message queue.
|
||||
|
||||
@ifinfo
|
||||
@node Receiving a Message, Sending a Message, Obtaining Message Queue IDs, Message Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Receiving a Message
|
||||
|
||||
The @code{@value{DIRPREFIX}message_queue_receive} directive attempts to
|
||||
@@ -222,9 +163,6 @@ the message queue's task wait queue in either FIFO or task
|
||||
priority order. All tasks waiting on a message queue are
|
||||
returned an error code when the message queue is deleted.
|
||||
|
||||
@ifinfo
|
||||
@node Sending a Message, Broadcasting a Message, Receiving a Message, Message Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Sending a Message
|
||||
|
||||
Messages can be sent to a queue with the
|
||||
@@ -245,9 +183,6 @@ message queue. Neither directive can successfully send a
|
||||
message to a message queue which has a full queue of pending
|
||||
messages.
|
||||
|
||||
@ifinfo
|
||||
@node Broadcasting a Message, Deleting a Message Queue, Sending a Message, Message Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Broadcasting a Message
|
||||
|
||||
The @code{@value{DIRPREFIX}message_queue_broadcast} directive sends the same
|
||||
@@ -256,9 +191,6 @@ an atomic operation. The message is copied to each waiting
|
||||
task's message buffer and each task is unblocked. The number of
|
||||
tasks which were unblocked is returned to the caller.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a Message Queue, Message Manager Directives, Broadcasting a Message, Message Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a Message Queue
|
||||
|
||||
The @code{@value{DIRPREFIX}message_queue_delete} directive removes a message
|
||||
@@ -272,23 +204,7 @@ message queue was deleted. Any subsequent references to the
|
||||
message queue's name and ID are invalid. Any messages waiting
|
||||
at the message queue are also deleted and deallocated.
|
||||
|
||||
@ifinfo
|
||||
@node Message Manager Directives, MESSAGE_QUEUE_CREATE - Create a queue, Deleting a Message Queue, Message Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* MESSAGE_QUEUE_CREATE - Create a queue::
|
||||
* MESSAGE_QUEUE_IDENT - Get ID of a queue::
|
||||
* MESSAGE_QUEUE_DELETE - Delete a queue::
|
||||
* MESSAGE_QUEUE_SEND - Put message at rear of a queue::
|
||||
* MESSAGE_QUEUE_URGENT - Put message at front of a queue::
|
||||
* MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue::
|
||||
* MESSAGE_QUEUE_RECEIVE - Receive message from a queue::
|
||||
* MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue::
|
||||
* MESSAGE_QUEUE_FLUSH - Flush all messages on a queue::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the message manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -296,9 +212,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_CREATE - Create a queue, MESSAGE_QUEUE_IDENT - Get ID of a queue, Message Manager Directives, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_CREATE - Create a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -384,9 +297,6 @@ queues, is limited by the maximum_global_objects field in the
|
||||
configuration table.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_IDENT - Get ID of a queue, MESSAGE_QUEUE_DELETE - Delete a queue, MESSAGE_QUEUE_CREATE - Create a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_IDENT - Get ID of a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -444,9 +354,6 @@ nodes. It accesses only the local copy of the global object
|
||||
table.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_DELETE - Delete a queue, MESSAGE_QUEUE_SEND - Put message at rear of a queue, MESSAGE_QUEUE_IDENT - Get ID of a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_DELETE - Delete a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -508,9 +415,6 @@ Proxies, used to represent remote tasks, are
|
||||
reclaimed when the message queue is deleted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_SEND - Put message at rear of a queue, MESSAGE_QUEUE_URGENT - Put message at front of a queue, MESSAGE_QUEUE_DELETE - Delete a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_SEND - Put message at rear of a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -569,9 +473,6 @@ the appropriate node, the waiting task is unblocked, and the
|
||||
proxy used to represent the task is reclaimed.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_URGENT - Put message at front of a queue, MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue, MESSAGE_QUEUE_SEND - Put message at rear of a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_URGENT - Put message at front of a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -631,9 +532,6 @@ the appropriate node, the waiting task is unblocked, and the
|
||||
proxy used to represent the task is reclaimed.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue, MESSAGE_QUEUE_RECEIVE - Receive message from a queue, MESSAGE_QUEUE_URGENT - Put message at front of a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -697,9 +595,6 @@ to the appropriate node, the waiting task is unblocked, and the
|
||||
proxy used to represent the task is reclaimed.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_RECEIVE - Receive message from a queue, MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue, MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_RECEIVE - Receive message from a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -786,9 +681,6 @@ A clock tick is required to support the timeout functionality of
|
||||
this directive.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue, MESSAGE_QUEUE_FLUSH - Flush all messages on a queue, MESSAGE_QUEUE_RECEIVE - Receive message from a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -831,9 +723,6 @@ the specified message queue.
|
||||
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node MESSAGE_QUEUE_FLUSH - Flush all messages on a queue, Event Manager, MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue, Message Manager Directives
|
||||
@end ifinfo
|
||||
@subsection MESSAGE_QUEUE_FLUSH - Flush all messages on a queue
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -13,29 +13,8 @@
|
||||
@c Figure 1-2 RTEMS Internal Architecture
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Overview, Overview Introduction, Preface, Top
|
||||
@end ifinfo
|
||||
@chapter Overview
|
||||
@ifinfo
|
||||
@menu
|
||||
* Overview Introduction::
|
||||
* Overview Real-time Application Systems::
|
||||
* Overview Real-time Executive::
|
||||
* Overview RTEMS Application Architecture::
|
||||
* Overview RTEMS Internal Architecture::
|
||||
* Overview User Customization and Extensibility::
|
||||
* Overview Portability::
|
||||
* Overview Memory Requirements::
|
||||
* Overview Audience::
|
||||
* Overview Conventions::
|
||||
* Overview Manual Organization::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Overview Introduction, Overview Real-time Application Systems, Overview, Overview
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
RTEMS, Real-Time Executive for Multiprocessor Systems, is a
|
||||
@@ -63,9 +42,6 @@ document which addresses specific architectural issues that
|
||||
affect RTEMS is provided for each processor type that is
|
||||
supported.
|
||||
|
||||
@ifinfo
|
||||
@node Overview Real-time Application Systems, Overview Real-time Executive, Overview Introduction, Overview
|
||||
@end ifinfo
|
||||
@section Real-time Application Systems
|
||||
|
||||
Real-time application systems are a special class of
|
||||
@@ -108,9 +84,6 @@ must be shared between competing processors are introduced. The
|
||||
ramifications of multiple processors complicate each and every
|
||||
characteristic of a real-time system.
|
||||
|
||||
@ifinfo
|
||||
@node Overview Real-time Executive, Overview RTEMS Application Architecture, Overview Real-time Application Systems, Overview
|
||||
@end ifinfo
|
||||
@section Real-time Executive
|
||||
|
||||
Fortunately, real-time operating systems or real-time
|
||||
@@ -159,9 +132,6 @@ the application. By using standard software components, the
|
||||
time and cost required to develop sophisticated real-time
|
||||
applications is significantly reduced.
|
||||
|
||||
@ifinfo
|
||||
@node Overview RTEMS Application Architecture, Overview RTEMS Internal Architecture, Overview Real-time Executive, Overview
|
||||
@end ifinfo
|
||||
@section RTEMS Application Architecture
|
||||
|
||||
One important design goal of RTEMS was to provide a
|
||||
@@ -252,9 +222,6 @@ real-time projects.
|
||||
@end html
|
||||
@end ifset
|
||||
|
||||
@ifinfo
|
||||
@node Overview RTEMS Internal Architecture, Overview User Customization and Extensibility, Overview RTEMS Application Architecture, Overview
|
||||
@end ifinfo
|
||||
@section RTEMS Internal Architecture
|
||||
|
||||
RTEMS can be viewed as a set of layered components that work in
|
||||
@@ -327,9 +294,6 @@ provided by each of the following RTEMS managers:
|
||||
@item multiprocessing
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Overview User Customization and Extensibility, Overview Portability, Overview RTEMS Internal Architecture, Overview
|
||||
@end ifinfo
|
||||
@section User Customization and Extensibility
|
||||
|
||||
As thirty-two bit microprocessors have decreased in
|
||||
@@ -350,9 +314,6 @@ integrated with RTEMS. The customization and extensibility
|
||||
features allow RTEMS to efficiently support as many environments
|
||||
as possible.
|
||||
|
||||
@ifinfo
|
||||
@node Overview Portability, Overview Memory Requirements, Overview User Customization and Extensibility, Overview
|
||||
@end ifinfo
|
||||
@section Portability
|
||||
|
||||
The issue of portability was the major factor in the
|
||||
@@ -363,9 +324,6 @@ processor. The use of RTEMS allows the development of real-time
|
||||
applications which can be completely independent of a particular
|
||||
microprocessor architecture.
|
||||
|
||||
@ifinfo
|
||||
@node Overview Memory Requirements, Overview Audience, Overview Portability, Overview
|
||||
@end ifinfo
|
||||
@section Memory Requirements
|
||||
|
||||
Since memory is a critical resource in many real-time
|
||||
@@ -401,9 +359,6 @@ RTEMS utilizes memory for both code and data space.
|
||||
Although RTEMS' data space must be in RAM, its code space can be
|
||||
located in either ROM or RAM.
|
||||
|
||||
@ifinfo
|
||||
@node Overview Audience, Overview Conventions, Overview Memory Requirements, Overview
|
||||
@end ifinfo
|
||||
@section Audience
|
||||
|
||||
This manual was written for experienced real-time
|
||||
@@ -425,9 +380,6 @@ features are interrelated. Experienced RTEMS users will find
|
||||
that the manual organization facilitates its use as a reference
|
||||
document.
|
||||
|
||||
@ifinfo
|
||||
@node Overview Conventions, Overview Manual Organization, Overview Audience, Overview
|
||||
@end ifinfo
|
||||
@section Conventions
|
||||
|
||||
The following conventions are used in this manual:
|
||||
@@ -450,9 +402,6 @@ the number is in hexadecimal format. Any other numbers are
|
||||
assumed to be in decimal format.
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Overview Manual Organization, Key Concepts, Overview Conventions, Overview
|
||||
@end ifinfo
|
||||
@section Manual Organization
|
||||
|
||||
This first chapter has presented the introductory and
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Partition Manager, Partition Manager Introduction, SIGNAL_SEND - Send signal set to a task, Top
|
||||
@end ifinfo
|
||||
@chapter Partition Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Partition Manager Introduction::
|
||||
* Partition Manager Background::
|
||||
* Partition Manager Operations::
|
||||
* Partition Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Partition Manager Introduction, Partition Manager Background, Partition Manager, Partition Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The partition manager provides facilities to
|
||||
@@ -36,20 +22,8 @@ provided by the partition manager are:
|
||||
@item @code{@value{DIRPREFIX}partition_return_buffer} - Return buffer to a partition
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Partition Manager Background, Partition Manager Definitions, Partition Manager Introduction, Partition Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Partition Manager Definitions::
|
||||
* Building a Partition's Attribute Set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Partition Manager Definitions, Building a Partition's Attribute Set, Partition Manager Background, Partition Manager Background
|
||||
@end ifinfo
|
||||
@subsection Partition Manager Definitions
|
||||
|
||||
A partition is a physically contiguous memory area
|
||||
@@ -66,9 +40,6 @@ Therefore, modifying memory that is outside of an allocated
|
||||
buffer could destroy the free buffer chain or the contents of an
|
||||
adjacent allocated buffer.
|
||||
|
||||
@ifinfo
|
||||
@node Building a Partition's Attribute Set, Partition Manager Operations, Partition Manager Definitions, Partition Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a Partition's Attribute Set
|
||||
|
||||
In general, an attribute set is built by a bitwise OR
|
||||
@@ -93,23 +64,8 @@ specified on this call. The attribute_set parameter should be
|
||||
@code{@value{RPREFIX}GLOBAL} to indicate that the partition
|
||||
is to be known globally.
|
||||
|
||||
@ifinfo
|
||||
@node Partition Manager Operations, Creating a Partition, Building a Partition's Attribute Set, Partition Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Partition::
|
||||
* Obtaining Partition IDs::
|
||||
* Acquiring a Buffer::
|
||||
* Releasing a Buffer::
|
||||
* Deleting a Partition::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Partition, Obtaining Partition IDs, Partition Manager Operations, Partition Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Partition
|
||||
|
||||
The @code{@value{DIRPREFIX}partition_create} directive creates a partition
|
||||
@@ -123,9 +79,6 @@ of buffers in the partition is calculated based upon the
|
||||
specified partition length and buffer size, and returned to the
|
||||
calling task along with a unique partition ID.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Partition IDs, Acquiring a Buffer, Creating a Partition, Partition Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Partition IDs
|
||||
|
||||
When a partition is created, RTEMS generates a unique
|
||||
@@ -138,9 +91,6 @@ ID may be obtained later using the @code{@value{DIRPREFIX}partition_ident}
|
||||
directive. The partition ID is used by other partition manager directives
|
||||
to access this partition.
|
||||
|
||||
@ifinfo
|
||||
@node Acquiring a Buffer, Releasing a Buffer, Obtaining Partition IDs, Partition Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Acquiring a Buffer
|
||||
|
||||
A buffer can be obtained by calling the
|
||||
@@ -151,9 +101,6 @@ Otherwise, an unsuccessful return code is returned immediately
|
||||
to the caller. Tasks cannot block to wait for a buffer to
|
||||
become available.
|
||||
|
||||
@ifinfo
|
||||
@node Releasing a Buffer, Deleting a Partition, Acquiring a Buffer, Partition Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Releasing a Buffer
|
||||
|
||||
Buffers are returned to a partition's free buffer
|
||||
@@ -161,9 +108,6 @@ chain with the @code{@value{DIRPREFIX}partition_return_buffer} directive. This
|
||||
directive returns an error status code if the returned buffer
|
||||
was not previously allocated from this partition.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a Partition, Partition Manager Directives, Releasing a Buffer, Partition Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a Partition
|
||||
|
||||
The @code{@value{DIRPREFIX}partition_delete} directive allows a partition to
|
||||
@@ -172,19 +116,7 @@ the PTCB for that partition is returned to the PTCB free list.
|
||||
A partition with buffers still allocated cannot be deleted. Any
|
||||
task attempting to do so will be returned an error status code.
|
||||
|
||||
@ifinfo
|
||||
@node Partition Manager Directives, PARTITION_CREATE - Create a partition, Deleting a Partition, Partition Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* PARTITION_CREATE - Create a partition::
|
||||
* PARTITION_IDENT - Get ID of a partition::
|
||||
* PARTITION_DELETE - Delete a partition::
|
||||
* PARTITION_GET_BUFFER - Get buffer from a partition::
|
||||
* PARTITION_RETURN_BUFFER - Return buffer to a partition::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the partition manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -192,9 +124,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PARTITION_CREATE - Create a partition, PARTITION_IDENT - Get ID of a partition, Partition Manager Directives, Partition Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PARTITION_CREATE - Create a partition
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -281,9 +210,6 @@ partitions, is limited by the maximum_global_objects field in
|
||||
the Configuration Table.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PARTITION_IDENT - Get ID of a partition, PARTITION_DELETE - Delete a partition, PARTITION_CREATE - Create a partition, Partition Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PARTITION_IDENT - Get ID of a partition
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -341,9 +267,6 @@ nodes. It accesses only the local copy of the global object
|
||||
table.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PARTITION_DELETE - Delete a partition, PARTITION_GET_BUFFER - Get buffer from a partition, PARTITION_IDENT - Get ID of a partition, Partition Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PARTITION_DELETE - Delete a partition
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -395,9 +318,6 @@ The partition must reside on the local node, even if
|
||||
the partition was created with the @code{@value{RPREFIX}GLOBAL} option.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PARTITION_GET_BUFFER - Get buffer from a partition, PARTITION_RETURN_BUFFER - Return buffer to a partition, PARTITION_DELETE - Delete a partition, Partition Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PARTITION_GET_BUFFER - Get buffer from a partition
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -446,9 +366,6 @@ not reside on the local node will generate a request telling the
|
||||
remote node to allocate a buffer from the specified partition.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node PARTITION_RETURN_BUFFER - Return buffer to a partition, Region Manager, PARTITION_GET_BUFFER - Get buffer from a partition, Partition Manager Directives
|
||||
@end ifinfo
|
||||
@subsection PARTITION_RETURN_BUFFER - Return buffer to a partition
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Region Manager, Region Manager Introduction, PARTITION_RETURN_BUFFER - Return buffer to a partition, Top
|
||||
@end ifinfo
|
||||
@chapter Region Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Region Manager Introduction::
|
||||
* Region Manager Background::
|
||||
* Region Manager Operations::
|
||||
* Region Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Region Manager Introduction, Region Manager Background, Region Manager, Region Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The region manager provides facilities to dynamically
|
||||
@@ -38,21 +24,8 @@ provided by the region manager are:
|
||||
@item @code{@value{DIRPREFIX}region_get_segment_size} - Obtain size of a segment
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Region Manager Background, Region Manager Definitions, Region Manager Introduction, Region Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Region Manager Definitions::
|
||||
* Building an Attribute Set::
|
||||
* Building an Option Set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Region Manager Definitions, Building an Attribute Set, Region Manager Background, Region Manager Background
|
||||
@end ifinfo
|
||||
@subsection Region Manager Definitions
|
||||
|
||||
A region makes up a physically contiguous memory
|
||||
@@ -80,9 +53,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Building an Attribute Set, Building an Option Set, Region Manager Definitions, Region Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building an Attribute Set
|
||||
|
||||
In general, an attribute set is built by a bitwise OR
|
||||
@@ -110,9 +80,6 @@ discipline. The attribute_set parameter to the
|
||||
@code{@value{DIRPREFIX}region_create}
|
||||
directive should be @code{@value{RPREFIX}PRIORITY}.
|
||||
|
||||
@ifinfo
|
||||
@node Building an Option Set, Region Manager Operations, Building an Attribute Set, Region Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building an Option Set
|
||||
|
||||
In general, an option is built by a bitwise OR of the
|
||||
@@ -140,25 +107,8 @@ to poll for a segment. The option parameter passed to the
|
||||
@code{@value{DIRPREFIX}region_get_segment} directive should
|
||||
be @code{@value{RPREFIX}NO_WAIT}.
|
||||
|
||||
@ifinfo
|
||||
@node Region Manager Operations, Creating a Region, Building an Option Set, Region Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Region::
|
||||
* Obtaining Region IDs::
|
||||
* Adding Memory to a Region::
|
||||
* Acquiring a Segment::
|
||||
* Releasing a Segment::
|
||||
* Obtaining the Size of a Segment::
|
||||
* Deleting a Region::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Region, Obtaining Region IDs, Region Manager Operations, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Region
|
||||
|
||||
The @code{@value{DIRPREFIX}region_create} directive creates a region with the
|
||||
@@ -181,9 +131,6 @@ Due to automatic coalescing, the number of segments
|
||||
in the region dynamically changes. Therefore, the total
|
||||
overhead required by RTEMS dynamically changes.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Region IDs, Adding Memory to a Region, Creating a Region, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Region IDs
|
||||
|
||||
When a region is created, RTEMS generates a unique
|
||||
@@ -197,9 +144,6 @@ using the @code{@value{DIRPREFIX}region_ident} directive.
|
||||
The region ID is used by other region manager directives to
|
||||
access this region.
|
||||
|
||||
@ifinfo
|
||||
@node Adding Memory to a Region, Acquiring a Segment, Obtaining Region IDs, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Adding Memory to a Region
|
||||
|
||||
The @code{@value{DIRPREFIX}region_extend} directive may be used to add memory
|
||||
@@ -211,9 +155,6 @@ code for information regarding restrictions on the location of
|
||||
the memory being added in relation to memory already in the
|
||||
region.
|
||||
|
||||
@ifinfo
|
||||
@node Acquiring a Segment, Releasing a Segment, Adding Memory to a Region, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Acquiring a Segment
|
||||
|
||||
The @code{@value{DIRPREFIX}region_get_segment} directive attempts to acquire
|
||||
@@ -237,9 +178,6 @@ in the region's task wait queue in either FIFO or task priority
|
||||
order. All tasks waiting on a region are returned an error when
|
||||
the message queue is deleted.
|
||||
|
||||
@ifinfo
|
||||
@node Releasing a Segment, Obtaining the Size of a Segment, Acquiring a Segment, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Releasing a Segment
|
||||
|
||||
When a segment is returned to a region by the
|
||||
@@ -250,9 +188,6 @@ segment request can now be satisfied. If so, it is given a
|
||||
segment and unblocked. This process is repeated until the first
|
||||
task's segment request cannot be satisfied.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining the Size of a Segment, Deleting a Region, Releasing a Segment, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining the Size of a Segment
|
||||
|
||||
The @code{@value{DIRPREFIX}region_get_segment_size} directive returns the
|
||||
@@ -260,9 +195,6 @@ size in bytes of the specified segment. The size returned
|
||||
includes any "extra" memory included in the segment because of
|
||||
rounding up to a page size boundary.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a Region, Region Manager Directives, Obtaining the Size of a Segment, Region Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a Region
|
||||
|
||||
A region can be removed from the system and returned
|
||||
@@ -275,21 +207,7 @@ error. As a result of this directive, all tasks blocked waiting
|
||||
to obtain a segment from the region will be readied and returned
|
||||
a status code which indicates that the region was deleted.
|
||||
|
||||
@ifinfo
|
||||
@node Region Manager Directives, REGION_CREATE - Create a region, Deleting a Region, Region Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* REGION_CREATE - Create a region::
|
||||
* REGION_IDENT - Get ID of a region::
|
||||
* REGION_DELETE - Delete a region::
|
||||
* REGION_EXTEND - Add memory to a region::
|
||||
* REGION_GET_SEGMENT - Get segment from a region::
|
||||
* REGION_RETURN_SEGMENT - Return segment to a region::
|
||||
* REGION_GET_SEGMENT_SIZE - Obtain size of a segment::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the region manager's directives.
|
||||
A subsection is dedicated to each of this manager's directives
|
||||
@@ -297,9 +215,6 @@ and describes the calling sequence, related constants, usage,
|
||||
and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_CREATE - Create a region, REGION_IDENT - Get ID of a region, Region Manager Directives, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_CREATE - Create a region
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -378,9 +293,6 @@ by RTEMS:
|
||||
@end itemize
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_IDENT - Get ID of a region, REGION_DELETE - Delete a region, REGION_CREATE - Create a region, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_IDENT - Get ID of a region
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -423,9 +335,6 @@ access this region in other region manager directives.
|
||||
This directive will not cause the running task to be preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_DELETE - Delete a region, REGION_EXTEND - Add memory to a region, REGION_IDENT - Get ID of a region, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_DELETE - Delete a region
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -469,9 +378,6 @@ created the region. Any local task that knows the region id can
|
||||
delete the region.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_EXTEND - Add memory to a region, REGION_GET_SEGMENT - Get segment from a region, REGION_DELETE - Delete a region, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_EXTEND - Add memory to a region
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -517,9 +423,6 @@ created the region. Any local task that knows the region id can
|
||||
extend the region.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_GET_SEGMENT - Get segment from a region, REGION_RETURN_SEGMENT - Return segment to a region, REGION_EXTEND - Add memory to a region, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_GET_SEGMENT - Get segment from a region
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -607,9 +510,6 @@ A clock tick is required to support the timeout functionality of
|
||||
this directive.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_RETURN_SEGMENT - Return segment to a region, REGION_GET_SEGMENT_SIZE - Obtain size of a segment, REGION_GET_SEGMENT - Get segment from a region, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_RETURN_SEGMENT - Return segment to a region
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -663,9 +563,6 @@ is less than or equal to the size of the segment returned.
|
||||
@end itemize
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node REGION_GET_SEGMENT_SIZE - Obtain size of a segment, Dual-Ported Memory Manager, REGION_RETURN_SEGMENT - Return segment to a region, Region Manager Directives
|
||||
@end ifinfo
|
||||
@subsection REGION_GET_SEGMENT_SIZE - Obtain size of a segment
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
135
doc/user/rtmon.t
135
doc/user/rtmon.t
@@ -12,22 +12,8 @@
|
||||
@c - use math mode to print formulas
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager, Rate Monotonic Manager Introduction, Scheduling Concepts Task State Transitions, Top
|
||||
@end ifinfo
|
||||
@chapter Rate Monotonic Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Rate Monotonic Manager Introduction::
|
||||
* Rate Monotonic Manager Background::
|
||||
* Rate Monotonic Manager Operations::
|
||||
* Rate Monotonic Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager Introduction, Rate Monotonic Manager Background, Rate Monotonic Manager, Rate Monotonic Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The rate monotonic manager provides facilities to
|
||||
@@ -43,25 +29,7 @@ directives provided by the rate monotonic manager are:
|
||||
@item @code{@value{DIRPREFIX}rate_monotonic_get_status} - Obtain status information on period
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager Background, Rate Monotonic Manager Required Support, Rate Monotonic Manager Introduction, Rate Monotonic Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Rate Monotonic Manager Required Support::
|
||||
* Rate Monotonic Manager Definitions::
|
||||
* Rate Monotonic Scheduling Algorithm::
|
||||
* Schedulability Analysis::
|
||||
* Assumptions::
|
||||
* Processor Utilization Rule::
|
||||
* Processor Utilization Rule Example::
|
||||
* First Deadline Rule::
|
||||
* First Deadline Rule Example::
|
||||
* Relaxation of Assumptions::
|
||||
* Further Reading::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
The rate monotonic manager provides facilities to
|
||||
manage the execution of periodic tasks. This manager was
|
||||
@@ -72,16 +40,10 @@ overload conditions. Although designed for hard real-time
|
||||
systems, the services provided by the rate monotonic manager may
|
||||
be used by any application which requires periodic tasks.
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager Required Support, Rate Monotonic Manager Definitions, Rate Monotonic Manager Background, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Rate Monotonic Manager Required Support
|
||||
|
||||
A clock tick is required to support the functionality provided by this manager.
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager Definitions, Rate Monotonic Scheduling Algorithm, Rate Monotonic Manager Required Support, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Rate Monotonic Manager Definitions
|
||||
|
||||
A periodic task is one which must be executed at a
|
||||
@@ -114,9 +76,6 @@ button on a joystick. The mechanical action of the fire button
|
||||
insures a minimum time period between successive activations,
|
||||
but the missile must be launched by a hard deadline.
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Scheduling Algorithm, Schedulability Analysis, Rate Monotonic Manager Definitions, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Rate Monotonic Scheduling Algorithm
|
||||
|
||||
The Rate Monotonic Scheduling Algorithm (RMS) is
|
||||
@@ -235,9 +194,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Schedulability Analysis, Assumptions, Rate Monotonic Scheduling Algorithm, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Schedulability Analysis
|
||||
|
||||
RMS allows application designers to insure that tasks
|
||||
@@ -247,9 +203,6 @@ proven schedulability analysis rules.
|
||||
|
||||
@lowersections
|
||||
|
||||
@ifinfo
|
||||
@node Assumptions, Processor Utilization Rule, Schedulability Analysis, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Assumptions
|
||||
|
||||
The schedulability analysis rules for RMS were
|
||||
@@ -278,9 +231,6 @@ Once the basic schedulability analysis is understood,
|
||||
some of the above assumptions can be relaxed and the
|
||||
side-effects accounted for.
|
||||
|
||||
@ifinfo
|
||||
@node Processor Utilization Rule, Processor Utilization Rule Example, Assumptions, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Processor Utilization Rule
|
||||
|
||||
The Processor Utilization Rule requires that
|
||||
@@ -313,9 +263,6 @@ greater utilization factor. In fact, the average processor
|
||||
utilization threshold for a randomly generated task set is
|
||||
approximately 0.88.
|
||||
|
||||
@ifinfo
|
||||
@node Processor Utilization Rule Example, First Deadline Rule, Processor Utilization Rule, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Processor Utilization Rule Example
|
||||
|
||||
This example illustrates the application of the
|
||||
@@ -398,9 +345,6 @@ The total processor utilization for this task set is
|
||||
0.779, imposed by the Processor Utilization Rule. Therefore,
|
||||
this task set is guaranteed to be schedulable using RMS.
|
||||
|
||||
@ifinfo
|
||||
@node First Deadline Rule, First Deadline Rule Example, Processor Utilization Rule Example, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection First Deadline Rule
|
||||
|
||||
If a given set of tasks do exceed the processor
|
||||
@@ -424,9 +368,6 @@ deletes itself. This technique insures that all tasks begin to
|
||||
compete for execution time at the same instant -- when the user
|
||||
initialization task deletes itself.
|
||||
|
||||
@ifinfo
|
||||
@node First Deadline Rule Example, Relaxation of Assumptions, First Deadline Rule, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection First Deadline Rule Example
|
||||
|
||||
The First Deadline Rule can insure schedulability
|
||||
@@ -606,9 +547,6 @@ time 200. Thus, all of the tasks have met their first deadlines
|
||||
at time 200, and the task set is schedulable using the First
|
||||
Deadline Rule.
|
||||
|
||||
@ifinfo
|
||||
@node Relaxation of Assumptions, Further Reading, First Deadline Rule Example, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Relaxation of Assumptions
|
||||
|
||||
The assumptions used to develop the RMS
|
||||
@@ -647,9 +585,6 @@ Every hardware and software factor which impacts the execution
|
||||
time of each task must be accounted for in the schedulability
|
||||
analysis.
|
||||
|
||||
@ifinfo
|
||||
@node Further Reading, Rate Monotonic Manager Operations, Relaxation of Assumptions, Rate Monotonic Manager Background
|
||||
@end ifinfo
|
||||
@subsection Further Reading
|
||||
|
||||
For more information on Rate Monotonic Scheduling and
|
||||
@@ -674,26 +609,8 @@ review." @b{Software Engineering Journal}. May 1991. pp. 116-128.}
|
||||
|
||||
@raisesections
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager Operations, Creating a Rate Monotonic Period, Further Reading, Rate Monotonic Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Rate Monotonic Period::
|
||||
* Manipulating a Period::
|
||||
* Obtaining a Period's Status::
|
||||
* Canceling a Period::
|
||||
* Deleting a Rate Monotonic Period::
|
||||
* Examples::
|
||||
* Simple Periodic Task::
|
||||
* Task with Multiple Periods::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Rate Monotonic Period, Manipulating a Period, Rate Monotonic Manager Operations, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Rate Monotonic Period
|
||||
|
||||
The @code{@value{DIRPREFIX}rate_monotonic_create} directive creates a rate
|
||||
@@ -705,9 +622,6 @@ returns a unique period ID to the application which is used by
|
||||
other rate monotonic manager directives to access this rate
|
||||
monotonic period.
|
||||
|
||||
@ifinfo
|
||||
@node Manipulating a Period, Obtaining a Period's Status, Creating a Rate Monotonic Period, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Manipulating a Period
|
||||
|
||||
The @code{@value{DIRPREFIX}rate_monotonic_period} directive is used to
|
||||
@@ -734,9 +648,6 @@ returns immediately with a timeout error status.
|
||||
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining a Period's Status, Canceling a Period, Manipulating a Period, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining a Period's Status
|
||||
|
||||
If the @code{@value{DIRPREFIX}rate_monotonic_period} directive is invoked
|
||||
@@ -758,9 +669,6 @@ directive:
|
||||
Obtaining the status of a rate monotonic period does
|
||||
not alter the state or length of that period.
|
||||
|
||||
@ifinfo
|
||||
@node Canceling a Period, Deleting a Rate Monotonic Period, Obtaining a Period's Status, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Canceling a Period
|
||||
|
||||
The @code{@value{DIRPREFIX}rate_monotonic_cancel} directive is used to stop
|
||||
@@ -768,9 +676,6 @@ the period maintained by the specified rate monotonic period.
|
||||
The period is stopped and the rate monotonic period can be
|
||||
reinitiated using the @code{@value{DIRPREFIX}rate_monotonic_period} directive.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a Rate Monotonic Period, Examples, Canceling a Period, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a Rate Monotonic Period
|
||||
|
||||
The @code{@value{DIRPREFIX}rate_monotonic_delete} directive is used to delete
|
||||
@@ -780,17 +685,11 @@ monotonic period's control block is returned to the PCB free
|
||||
list when it is deleted. A rate monotonic period can be deleted
|
||||
by a task other than the task which created the period.
|
||||
|
||||
@ifinfo
|
||||
@node Examples, Simple Periodic Task, Deleting a Rate Monotonic Period, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Examples
|
||||
|
||||
The following sections illustrate common uses of rate
|
||||
monotonic periods to construct periodic tasks.
|
||||
|
||||
@ifinfo
|
||||
@node Simple Periodic Task, Task with Multiple Periods, Examples, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Simple Periodic Task
|
||||
|
||||
This example consists of a single periodic task
|
||||
@@ -836,9 +735,6 @@ directive will return the @code{@value{RPREFIX}TIMEOUT} status.
|
||||
If the above task misses its deadline, it will delete the rate
|
||||
monotonic period and itself.
|
||||
|
||||
@ifinfo
|
||||
@node Task with Multiple Periods, Rate Monotonic Manager Directives, Simple Periodic Task, Rate Monotonic Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Task with Multiple Periods
|
||||
|
||||
This example consists of a single periodic task
|
||||
@@ -925,20 +821,7 @@ return the @code{@value{RPREFIX}TIMEOUT}
|
||||
directive status. If the above task misses its deadline, it
|
||||
will delete the rate monotonic periods and itself.
|
||||
|
||||
@ifinfo
|
||||
@node Rate Monotonic Manager Directives, RATE_MONOTONIC_CREATE - Create a rate monotonic period, Task with Multiple Periods, Rate Monotonic Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* RATE_MONOTONIC_CREATE - Create a rate monotonic period::
|
||||
* RATE_MONOTONIC_IDENT - Get ID of a period::
|
||||
* RATE_MONOTONIC_CANCEL - Cancel a period::
|
||||
* RATE_MONOTONIC_DELETE - Delete a rate monotonic period::
|
||||
* RATE_MONOTONIC_PERIOD - Conclude current/Start next period::
|
||||
* RATE_MONOTONIC_GET_STATUS - Obtain status information on period::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the rate monotonic manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -946,9 +829,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node RATE_MONOTONIC_CREATE - Create a rate monotonic period, RATE_MONOTONIC_IDENT - Get ID of a period, Rate Monotonic Manager Directives, Rate Monotonic Manager Directives
|
||||
@end ifinfo
|
||||
@subsection RATE_MONOTONIC_CREATE - Create a rate monotonic period
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -992,9 +872,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node RATE_MONOTONIC_IDENT - Get ID of a period, RATE_MONOTONIC_CANCEL - Cancel a period, RATE_MONOTONIC_CREATE - Create a rate monotonic period, Rate Monotonic Manager Directives
|
||||
@end ifinfo
|
||||
@subsection RATE_MONOTONIC_IDENT - Get ID of a period
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1037,9 +914,6 @@ This directive will not cause the running task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node RATE_MONOTONIC_CANCEL - Cancel a period, RATE_MONOTONIC_DELETE - Delete a rate monotonic period, RATE_MONOTONIC_IDENT - Get ID of a period, Rate Monotonic Manager Directives
|
||||
@end ifinfo
|
||||
@subsection RATE_MONOTONIC_CANCEL - Cancel a period
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1081,9 +955,6 @@ The rate monotonic period specified by id must have
|
||||
been created by the calling task.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node RATE_MONOTONIC_DELETE - Delete a rate monotonic period, RATE_MONOTONIC_PERIOD - Conclude current/Start next period, RATE_MONOTONIC_CANCEL - Cancel a period, Rate Monotonic Manager Directives
|
||||
@end ifinfo
|
||||
@subsection RATE_MONOTONIC_DELETE - Delete a rate monotonic period
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1124,9 +995,6 @@ A rate monotonic period can be deleted by a task
|
||||
other than the task which created the period.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node RATE_MONOTONIC_PERIOD - Conclude current/Start next period, RATE_MONOTONIC_GET_STATUS - Obtain status information on period, RATE_MONOTONIC_DELETE - Delete a rate monotonic period, Rate Monotonic Manager Directives
|
||||
@end ifinfo
|
||||
@subsection RATE_MONOTONIC_PERIOD - Conclude current/Start next period
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1178,9 +1046,6 @@ This directive will not cause the running task to be preempted.
|
||||
|
||||
---------------------
|
||||
@page
|
||||
@ifinfo
|
||||
@node RATE_MONOTONIC_GET_STATUS - Obtain status information on period, Board Support Packages, RATE_MONOTONIC_PERIOD - Conclude current/Start next period, Rate Monotonic Manager Directives
|
||||
@end ifinfo
|
||||
@subsection RATE_MONOTONIC_GET_STATUS - Obtain status information on period
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -11,21 +11,8 @@
|
||||
@c Figure 17-1 RTEMS Task State Transitions
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Scheduling Concepts, Scheduling Concepts Introduction, FATAL_ERROR_OCCURRED - Invoke the fatal error handler, Top
|
||||
@end ifinfo
|
||||
@chapter Scheduling Concepts
|
||||
@ifinfo
|
||||
@menu
|
||||
* Scheduling Concepts Introduction::
|
||||
* Scheduling Concepts Scheduling Mechanisms::
|
||||
* Scheduling Concepts Task State Transitions::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Scheduling Concepts Introduction, Scheduling Concepts Scheduling Mechanisms, Scheduling Concepts, Scheduling Concepts
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The concept of scheduling in real-time systems
|
||||
@@ -60,19 +47,7 @@ chain is allocated the processor. RTEMS schedules tasks using
|
||||
the second method to guarantee faster response times to external
|
||||
events.
|
||||
|
||||
@ifinfo
|
||||
@node Scheduling Concepts Scheduling Mechanisms, Task Priority and Scheduling, Scheduling Concepts Introduction, Scheduling Concepts
|
||||
@end ifinfo
|
||||
@section Scheduling Mechanisms
|
||||
@ifinfo
|
||||
@menu
|
||||
* Task Priority and Scheduling::
|
||||
* Preemption::
|
||||
* Timeslicing::
|
||||
* Manual Round-Robin::
|
||||
* Dispatching Tasks::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
RTEMS provides four mechanisms which allow the user
|
||||
to impact the task scheduling process:
|
||||
@@ -97,9 +72,6 @@ preemption (if enabled) of a task by higher priority tasks will
|
||||
occur as required, overriding the other factors presented in the
|
||||
description.
|
||||
|
||||
@ifinfo
|
||||
@node Task Priority and Scheduling, Preemption, Scheduling Concepts Scheduling Mechanisms, Scheduling Concepts Scheduling Mechanisms
|
||||
@end ifinfo
|
||||
@subsection Task Priority and Scheduling
|
||||
|
||||
The most significant of these mechanisms is the
|
||||
@@ -121,9 +93,6 @@ priority task that is ready to run when allocating the processor
|
||||
to a task.}
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Preemption, Timeslicing, Task Priority and Scheduling, Scheduling Concepts Scheduling Mechanisms
|
||||
@end ifinfo
|
||||
@subsection Preemption
|
||||
|
||||
Another way the user can alter the basic scheduling
|
||||
@@ -137,9 +106,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Timeslicing, Manual Round-Robin, Preemption, Scheduling Concepts Scheduling Mechanisms
|
||||
@end ifinfo
|
||||
@subsection Timeslicing
|
||||
|
||||
Timeslicing or round-robin scheduling is an
|
||||
@@ -159,9 +125,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Manual Round-Robin, Dispatching Tasks, Timeslicing, Scheduling Concepts Scheduling Mechanisms
|
||||
@end ifinfo
|
||||
@subsection Manual Round-Robin
|
||||
|
||||
The final mechanism for altering the RTEMS scheduling
|
||||
@@ -174,9 +137,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Dispatching Tasks, Scheduling Concepts Task State Transitions, Manual Round-Robin, Scheduling Concepts Scheduling Mechanisms
|
||||
@end ifinfo
|
||||
@subsection Dispatching Tasks
|
||||
|
||||
The dispatcher is the RTEMS component responsible for
|
||||
@@ -205,9 +165,6 @@ operations, the state of the numeric coprocessor is only saved
|
||||
when a @code{@value{RPREFIX}FLOATING_POINT} task is dispatched and that task was not
|
||||
the last task to utilize the coprocessor.
|
||||
|
||||
@ifinfo
|
||||
@node Scheduling Concepts Task State Transitions, Rate Monotonic Manager, Dispatching Tasks, Scheduling Concepts
|
||||
@end ifinfo
|
||||
@section Task State Transitions
|
||||
|
||||
Tasks in an RTEMS system must always be in one of the
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Semaphore Manager, Semaphore Manager Introduction, TIMER_RESET - Reset an interval timer, Top
|
||||
@end ifinfo
|
||||
@chapter Semaphore Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Semaphore Manager Introduction::
|
||||
* Semaphore Manager Background::
|
||||
* Semaphore Manager Operations::
|
||||
* Semaphore Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Semaphore Manager Introduction, Semaphore Manager Background, Semaphore Manager, Semaphore Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The semaphore manager utilizes standard Dijkstra
|
||||
@@ -37,20 +23,7 @@ semaphore manager are:
|
||||
@item @code{@value{DIRPREFIX}semaphore_release} - Release a semaphore
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Semaphore Manager Background, Nested Resource Access, Semaphore Manager Introduction, Semaphore Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Nested Resource Access::
|
||||
* Priority Inversion::
|
||||
* Priority Inheritance::
|
||||
* Priority Ceiling::
|
||||
* Building a Semaphore's Attribute Set::
|
||||
* Building a SEMAPHORE_OBTAIN Option Set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
A semaphore can be viewed as a protected variable
|
||||
whose value can be modified only with the
|
||||
@@ -92,9 +65,6 @@ performs a corresponding @code{@value{DIRPREFIX}semaphore_release}
|
||||
operation when it reaches its synchronization point, thus unblocking
|
||||
the pending task.
|
||||
|
||||
@ifinfo
|
||||
@node Nested Resource Access, Priority Inversion, Semaphore Manager Background, Semaphore Manager Background
|
||||
@end ifinfo
|
||||
@subsection Nested Resource Access
|
||||
|
||||
Deadlock occurs when a task owning a binary semaphore
|
||||
@@ -114,9 +84,6 @@ outermost @code{@value{DIRPREFIX}semaphore_obtain} is matched with
|
||||
a @code{@value{DIRPREFIX}semaphore_release}.
|
||||
|
||||
|
||||
@ifinfo
|
||||
@node Priority Inversion, Priority Inheritance, Nested Resource Access, Semaphore Manager Background
|
||||
@end ifinfo
|
||||
@subsection Priority Inversion
|
||||
|
||||
Priority inversion is a form of indefinite
|
||||
@@ -132,9 +99,6 @@ cannot complete its interaction with the resource and release
|
||||
that resource. The high priority task is effectively prevented
|
||||
from executing by lower priority tasks.
|
||||
|
||||
@ifinfo
|
||||
@node Priority Inheritance, Priority Ceiling, Priority Inversion, Semaphore Manager Background
|
||||
@end ifinfo
|
||||
@subsection Priority Inheritance
|
||||
|
||||
Priority inheritance is an algorithm that calls for
|
||||
@@ -163,9 +127,6 @@ any of the semaphores the task holds. Only when the task
|
||||
releases ALL of the binary semaphores it holds will its priority
|
||||
be restored to the normal value.
|
||||
|
||||
@ifinfo
|
||||
@node Priority Ceiling, Building a Semaphore's Attribute Set, Priority Inheritance, Semaphore Manager Background
|
||||
@end ifinfo
|
||||
@subsection Priority Ceiling
|
||||
|
||||
Priority ceiling is an algorithm that calls for the
|
||||
@@ -207,9 +168,6 @@ any of the semaphores the task holds. Only when the task
|
||||
releases ALL of the binary semaphores it holds will its priority
|
||||
be restored to the normal value.
|
||||
|
||||
@ifinfo
|
||||
@node Building a Semaphore's Attribute Set, Building a SEMAPHORE_OBTAIN Option Set, Priority Ceiling, Semaphore Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a Semaphore's Attribute Set
|
||||
|
||||
In general, an attribute set is built by a bitwise OR
|
||||
@@ -263,9 +221,6 @@ similar semaphore were to be known globally, then the
|
||||
attribute_set parameter would be
|
||||
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}.
|
||||
|
||||
@ifinfo
|
||||
@node Building a SEMAPHORE_OBTAIN Option Set, Semaphore Manager Operations, Building a Semaphore's Attribute Set, Semaphore Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a SEMAPHORE_OBTAIN Option Set
|
||||
|
||||
In general, an option is built by a bitwise OR of the
|
||||
@@ -292,23 +247,8 @@ to poll for a semaphore. The option parameter passed to the
|
||||
@code{@value{DIRPREFIX}semaphore_obtain}
|
||||
directive should be @code{@value{RPREFIX}NO_WAIT}.
|
||||
|
||||
@ifinfo
|
||||
@node Semaphore Manager Operations, Creating a Semaphore, Building a SEMAPHORE_OBTAIN Option Set, Semaphore Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Semaphore::
|
||||
* Obtaining Semaphore IDs::
|
||||
* Acquiring a Semaphore::
|
||||
* Releasing a Semaphore::
|
||||
* Deleting a Semaphore::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Semaphore, Obtaining Semaphore IDs, Semaphore Manager Operations, Semaphore Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Semaphore
|
||||
|
||||
The @code{@value{DIRPREFIX}semaphore_create} directive creates a binary or
|
||||
@@ -328,9 +268,6 @@ must be specified. RTEMS allocates a Semaphore Control Block
|
||||
RTEMS to manage the newly created semaphore. Also, a unique
|
||||
semaphore ID is generated and returned to the calling task.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Semaphore IDs, Acquiring a Semaphore, Creating a Semaphore, Semaphore Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Semaphore IDs
|
||||
|
||||
When a semaphore is created, RTEMS generates a unique
|
||||
@@ -344,9 +281,6 @@ the semaphore ID may be obtained later using the
|
||||
used by other semaphore manager directives to access this
|
||||
semaphore.
|
||||
|
||||
@ifinfo
|
||||
@node Acquiring a Semaphore, Releasing a Semaphore, Obtaining Semaphore IDs, Semaphore Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Acquiring a Semaphore
|
||||
|
||||
The @code{@value{DIRPREFIX}semaphore_obtain} directive is used to acquire the
|
||||
@@ -389,9 +323,6 @@ priority ceiling and the priority ceiling for this semaphore is
|
||||
greater than that of the holder, then the holder's priority will
|
||||
be elevated.
|
||||
|
||||
@ifinfo
|
||||
@node Releasing a Semaphore, Deleting a Semaphore, Acquiring a Semaphore, Semaphore Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Releasing a Semaphore
|
||||
|
||||
The @code{@value{DIRPREFIX}semaphore_release} directive is used to release
|
||||
@@ -412,9 +343,6 @@ the task does not currently hold any other binary semaphores,
|
||||
then the task performing the @code{@value{DIRPREFIX}semaphore_release}
|
||||
will have its priority restored to its normal value.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a Semaphore, Semaphore Manager Directives, Releasing a Semaphore, Semaphore Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a Semaphore
|
||||
|
||||
The @code{@value{DIRPREFIX}semaphore_delete} directive removes a semaphore
|
||||
@@ -425,19 +353,7 @@ the semaphore will be readied and returned a status code which
|
||||
indicates that the semaphore was deleted. Any subsequent
|
||||
references to the semaphore's name and ID are invalid.
|
||||
|
||||
@ifinfo
|
||||
@node Semaphore Manager Directives, SEMAPHORE_CREATE - Create a semaphore, Deleting a Semaphore, Semaphore Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* SEMAPHORE_CREATE - Create a semaphore::
|
||||
* SEMAPHORE_IDENT - Get ID of a semaphore::
|
||||
* SEMAPHORE_DELETE - Delete a semaphore::
|
||||
* SEMAPHORE_OBTAIN - Acquire a semaphore::
|
||||
* SEMAPHORE_RELEASE - Release a semaphore::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the semaphore manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -445,9 +361,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SEMAPHORE_CREATE - Create a semaphore, SEMAPHORE_IDENT - Get ID of a semaphore, Semaphore Manager Directives, Semaphore Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SEMAPHORE_CREATE - Create a semaphore
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -549,9 +462,6 @@ semaphores, is limited by the maximum_global_objects field in
|
||||
the Configuration Table.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SEMAPHORE_IDENT - Get ID of a semaphore, SEMAPHORE_DELETE - Delete a semaphore, SEMAPHORE_CREATE - Create a semaphore, Semaphore Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SEMAPHORE_IDENT - Get ID of a semaphore
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -609,9 +519,6 @@ nodes. It accesses only the local copy of the global object
|
||||
table.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SEMAPHORE_DELETE - Delete a semaphore, SEMAPHORE_OBTAIN - Acquire a semaphore, SEMAPHORE_IDENT - Get ID of a semaphore, Semaphore Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SEMAPHORE_DELETE - Delete a semaphore
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -670,9 +577,6 @@ Proxies, used to represent remote tasks, are
|
||||
reclaimed when the semaphore is deleted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SEMAPHORE_OBTAIN - Acquire a semaphore, SEMAPHORE_RELEASE - Release a semaphore, SEMAPHORE_DELETE - Delete a semaphore, Semaphore Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SEMAPHORE_OBTAIN - Acquire a semaphore
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -762,9 +666,6 @@ A clock tick is required to support the timeout functionality of
|
||||
this directive.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SEMAPHORE_RELEASE - Release a semaphore, Message Manager, SEMAPHORE_OBTAIN - Acquire a semaphore, Semaphore Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SEMAPHORE_RELEASE - Release a semaphore
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Signal Manager, Signal Manager Introduction, EVENT_RECEIVE - Receive event condition, Top
|
||||
@end ifinfo
|
||||
@chapter Signal Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Signal Manager Introduction::
|
||||
* Signal Manager Background::
|
||||
* Signal Manager Operations::
|
||||
* Signal Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Signal Manager Introduction, Signal Manager Background, Signal Manager, Signal Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The signal manager provides the capabilities required
|
||||
@@ -33,22 +19,8 @@ signal manager are:
|
||||
@item @code{@value{DIRPREFIX}signal_send} - Send signal set to a task
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Signal Manager Background, Signal Manager Definitions, Signal Manager Introduction, Signal Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Signal Manager Definitions::
|
||||
* A Comparison of ASRs and ISRs::
|
||||
* Building a Signal Set::
|
||||
* Building an ASR's Mode::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Signal Manager Definitions, A Comparison of ASRs and ISRs, Signal Manager Background, Signal Manager Background
|
||||
@end ifinfo
|
||||
@subsection Signal Manager Definitions
|
||||
|
||||
The signal manager allows a task to optionally define
|
||||
@@ -69,9 +41,6 @@ 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.
|
||||
|
||||
|
||||
@ifinfo
|
||||
@node A Comparison of ASRs and ISRs, Building a Signal Set, Signal Manager Definitions, Signal Manager Background
|
||||
@end ifinfo
|
||||
@subsection A Comparison of ASRs and ISRs
|
||||
|
||||
The format of an ASR is similar to that of an ISR
|
||||
@@ -94,9 +63,6 @@ of the task. An ISR does not execute as a task and, as a
|
||||
result, does not have a task mode.
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Building a Signal Set, Building an ASR's Mode, A Comparison of ASRs and ISRs, Signal Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a Signal Set
|
||||
|
||||
A signal set is built by a bitwise OR of the desired
|
||||
@@ -116,9 +82,6 @@ to the @code{@value{DIRPREFIX}signal_send} directive should be
|
||||
@code{@value{RPREFIX}SIGNAL_6 @value{OR}
|
||||
@value{RPREFIX}SIGNAL_15 @value{OR} @value{RPREFIX}SIGNAL_31}.
|
||||
|
||||
@ifinfo
|
||||
@node Building an ASR's Mode, Signal Manager Operations, Building a Signal Set, Signal Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building an ASR's Mode
|
||||
|
||||
In general, an ASR's mode is built by a bitwise OR of
|
||||
@@ -171,21 +134,8 @@ be set to
|
||||
to indicate the
|
||||
desired processor mode and interrupt level.
|
||||
|
||||
@ifinfo
|
||||
@node Signal Manager Operations, Establishing an ASR, Building an ASR's Mode, Signal Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Establishing an ASR::
|
||||
* Sending a Signal Set::
|
||||
* Processing an ASR::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Establishing an ASR, Sending a Signal Set, Signal Manager Operations, Signal Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Establishing an ASR
|
||||
|
||||
The @code{@value{DIRPREFIX}signal_catch} directive establishes an ASR for the
|
||||
@@ -215,9 +165,6 @@ Normally, signal processing is disabled for the ASR's
|
||||
execution mode, but if signal processing is enabled for the ASR,
|
||||
the ASR must be reentrant.
|
||||
|
||||
@ifinfo
|
||||
@node Sending a Signal Set, Processing an ASR, Establishing an ASR, Signal Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Sending a Signal Set
|
||||
|
||||
The @code{@value{DIRPREFIX}signal_send} directive allows both
|
||||
@@ -246,9 +193,6 @@ to a task (without any intermediate signal processing occurring
|
||||
for the task), has the same result as sending that signal to
|
||||
that task once.
|
||||
|
||||
@ifinfo
|
||||
@node Processing an ASR, Signal Manager Directives, Sending a Signal Set, Signal Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Processing an ASR
|
||||
|
||||
Asynchronous signals were designed to provide the
|
||||
@@ -279,16 +223,7 @@ When the ASR returns to RTEMS the mode and execution
|
||||
path of the interrupted task (or ASR) is restored to the context
|
||||
prior to entering the ASR.
|
||||
|
||||
@ifinfo
|
||||
@node Signal Manager Directives, SIGNAL_CATCH - Establish an ASR, Processing an ASR, Signal Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* SIGNAL_CATCH - Establish an ASR::
|
||||
* SIGNAL_SEND - Send signal set to a task::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the signal manager's directives.
|
||||
A subsection is dedicated to each of this manager's directives
|
||||
@@ -296,9 +231,6 @@ and describes the calling sequence, related constants, usage,
|
||||
and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SIGNAL_CATCH - Establish an ASR, SIGNAL_SEND - Send signal set to a task, Signal Manager Directives, Signal Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SIGNAL_CATCH - Establish an ASR
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -370,9 +302,6 @@ The following task mode constants are defined by RTEMS:
|
||||
@end itemize
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node SIGNAL_SEND - Send signal set to a task, Partition Manager, SIGNAL_CATCH - Establish an ASR, Signal Manager Directives
|
||||
@end ifinfo
|
||||
@subsection SIGNAL_SEND - Send signal set to a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
169
doc/user/task.t
169
doc/user/task.t
@@ -6,24 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Task Manager, Task Manager Introduction, SHUTDOWN_EXECUTIVE - Shutdown RTEMS, Top
|
||||
@end ifinfo
|
||||
|
||||
@chapter Task Manager
|
||||
|
||||
@ifinfo
|
||||
@menu
|
||||
* Task Manager Introduction::
|
||||
* Task Manager Background::
|
||||
* Task Manager Operations::
|
||||
* Task Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Task Manager Introduction, Task Manager Background, Task Manager, Task Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The task manager provides a comprehensive set of directives to
|
||||
@@ -46,31 +30,8 @@ by the task manager are:
|
||||
@item @code{@value{DIRPREFIX}task_wake_when} - Wake up when specified
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Task Manager Background, Task Definition, Task Manager Introduction, Task Manager
|
||||
@end ifinfo
|
||||
|
||||
@section Background
|
||||
|
||||
@ifinfo
|
||||
@menu
|
||||
* Task Definition::
|
||||
* Task Control Block::
|
||||
* Task States::
|
||||
* Task Priority::
|
||||
* Task Mode::
|
||||
* Accessing Task Arguments::
|
||||
* Floating Point Considerations::
|
||||
* Building a Task's Attribute Set::
|
||||
* Building a Mode and Mask::
|
||||
@end menu
|
||||
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Task Definition, Task Control Block, Task Manager Background, Task Manager Background
|
||||
@end ifinfo
|
||||
|
||||
@subsection Task Definition
|
||||
|
||||
Many definitions of a task have been proposed in computer literature.
|
||||
@@ -99,9 +60,6 @@ execution which can compete on its own for system resources. A
|
||||
task is manifested by the existence of a task control block
|
||||
(TCB).
|
||||
|
||||
@ifinfo
|
||||
@node Task Control Block, Task States, Task Definition, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Task Control Block
|
||||
|
||||
The Task Control Block (TCB) is an RTEMS defined data structure
|
||||
@@ -126,9 +84,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Task States, Task Priority, Task Control Block, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Task States
|
||||
|
||||
A task may exist in one of the following five states:
|
||||
@@ -151,9 +106,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Task Priority, Task Mode, Task States, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Task Priority
|
||||
|
||||
A task's priority determines its importance in relation to the
|
||||
@@ -175,9 +127,6 @@ 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.
|
||||
|
||||
@ifinfo
|
||||
@node Task Mode, Accessing Task Arguments, Task Priority, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Task Mode
|
||||
|
||||
A task's mode is a combination of the following four components:
|
||||
@@ -237,9 +186,6 @@ specifies that the task will execute at interrupt level n.
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} - execute at interrupt level n
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node Accessing Task Arguments, Floating Point Considerations, Task Mode, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Accessing Task Arguments
|
||||
|
||||
All RTEMS tasks are invoked with a single argument which is
|
||||
@@ -267,9 +213,6 @@ procedure User_Task (
|
||||
Application tasks requiring more information may view this
|
||||
single argument as an index into an array of parameter blocks.
|
||||
|
||||
@ifinfo
|
||||
@node Floating Point Considerations, Building a Task's Attribute Set, Accessing Task Arguments, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Floating Point Considerations
|
||||
|
||||
Creating a task with the @code{@value{RPREFIX}FLOATING_POINT} flag results
|
||||
@@ -321,9 +264,6 @@ attribute. The consequence of a @code{@value{RPREFIX}NO_FLOATING_POINT}
|
||||
task attempting to access the floating point unit is CPU dependent but will
|
||||
generally result in an exception condition.
|
||||
|
||||
@ifinfo
|
||||
@node Building a Task's Attribute Set, Building a Mode and Mask, Floating Point Considerations, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a Task's Attribute Set
|
||||
|
||||
In general, an attribute set is built by a bitwise OR of the
|
||||
@@ -355,9 +295,6 @@ tasks. If the task were global and used the numeric
|
||||
coprocessor, then the attribute_set parameter would be
|
||||
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}FLOATING_POINT}.
|
||||
|
||||
@ifinfo
|
||||
@node Building a Mode and Mask, Task Manager Operations, Building a Task's Attribute Set, Task Manager Background
|
||||
@end ifinfo
|
||||
@subsection Building a Mode and Mask
|
||||
|
||||
In general, a mode and its corresponding mask is built by a
|
||||
@@ -482,29 +419,8 @@ interrupt level, while the mask parameter should be set to
|
||||
@value{RPREFIX}NO_PREEMPT_MASK} to indicate that the calling task's
|
||||
interrupt level and preemption mode are being altered.
|
||||
|
||||
@ifinfo
|
||||
@node Task Manager Operations, Creating Tasks, Building a Mode and Mask, Task Manager
|
||||
@end ifinfo
|
||||
|
||||
@section Operations
|
||||
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating Tasks::
|
||||
* Obtaining Task IDs::
|
||||
* Starting and Restarting Tasks::
|
||||
* Suspending and Resuming Tasks::
|
||||
* Delaying the Currently Executing Task::
|
||||
* Changing Task Priority::
|
||||
* Changing Task Mode::
|
||||
* Notepad Locations::
|
||||
* Task Deletion::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating Tasks, Obtaining Task IDs, Task Manager Operations, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating Tasks
|
||||
|
||||
The @code{@value{DIRPREFIX}task_create}
|
||||
@@ -516,9 +432,6 @@ initial mode, and assigning it a task ID. Newly created tasks
|
||||
are initially placed in the dormant state. All RTEMS tasks
|
||||
execute in the most privileged mode of the processor.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Task IDs, Starting and Restarting Tasks, Creating Tasks, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Task IDs
|
||||
|
||||
When a task is created, RTEMS generates a unique task ID and
|
||||
@@ -531,9 +444,6 @@ obtained later using the @code{@value{DIRPREFIX}task_ident}
|
||||
directive. The task ID is
|
||||
used by other directives to manipulate this task.
|
||||
|
||||
@ifinfo
|
||||
@node Starting and Restarting Tasks, Suspending and Resuming Tasks, Obtaining Task IDs, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Starting and Restarting Tasks
|
||||
|
||||
The @code{@value{DIRPREFIX}task_start}
|
||||
@@ -566,9 +476,6 @@ returned to RTEMS. A task cannot be restarted unless it has
|
||||
previously been started (i.e. dormant tasks cannot be
|
||||
restarted). All restarted tasks are placed in the ready state.
|
||||
|
||||
@ifinfo
|
||||
@node Suspending and Resuming Tasks, Delaying the Currently Executing Task, Starting and Restarting Tasks, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Suspending and Resuming Tasks
|
||||
|
||||
The @code{@value{DIRPREFIX}task_suspend}
|
||||
@@ -590,9 +497,6 @@ suspension and leaves the task in the blocked state.
|
||||
Suspending a task which is already suspended or resuming a
|
||||
task which is not suspended is considered an error.
|
||||
|
||||
@ifinfo
|
||||
@node Delaying the Currently Executing Task, Changing Task Priority, Suspending and Resuming Tasks, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Delaying the Currently Executing Task
|
||||
|
||||
The @code{@value{DIRPREFIX}task_wake_after} directive creates a sleep timer
|
||||
@@ -610,9 +514,6 @@ a task to go to sleep until a specified date and time. The
|
||||
calling task is blocked until the specified date and time has
|
||||
occurred, at which time the task is unblocked.
|
||||
|
||||
@ifinfo
|
||||
@node Changing Task Priority, Changing Task Mode, Delaying the Currently Executing Task, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Changing Task Priority
|
||||
|
||||
The @code{@value{DIRPREFIX}task_set_priority}
|
||||
@@ -629,9 +530,6 @@ The @code{@value{DIRPREFIX}task_restart}
|
||||
directive resets the priority of a task to its
|
||||
original value.
|
||||
|
||||
@ifinfo
|
||||
@node Changing Task Mode, Notepad Locations, Changing Task Priority, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Changing Task Mode
|
||||
|
||||
The @code{@value{DIRPREFIX}task_mode}
|
||||
@@ -644,9 +542,6 @@ The @code{@value{DIRPREFIX}task_restart}
|
||||
directive resets the mode of a task to its
|
||||
original value.
|
||||
|
||||
@ifinfo
|
||||
@node Notepad Locations, Task Deletion, Changing Task Mode, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Notepad Locations
|
||||
|
||||
RTEMS provides sixteen notepad locations for each task. Each
|
||||
@@ -662,9 +557,6 @@ to set a task's notepad entry to a specified note. The
|
||||
directive allows the user to obtain the note
|
||||
contained in any one of the sixteen notepads of a specified task.
|
||||
|
||||
@ifinfo
|
||||
@node Task Deletion, Task Manager Directives, Notepad Locations, Task Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Task Deletion
|
||||
|
||||
RTEMS provides the @code{@value{DIRPREFIX}task_delete}
|
||||
@@ -692,30 +584,8 @@ task to delete itself by sending a "delete self" message, event,
|
||||
or signal, or by restarting the task with special arguments
|
||||
which instruct the task to delete itself.
|
||||
|
||||
@ifinfo
|
||||
@node Task Manager Directives, TASK_CREATE - Create a task, Task Deletion, Task Manager
|
||||
@end ifinfo
|
||||
|
||||
@section Directives
|
||||
|
||||
@ifinfo
|
||||
@menu
|
||||
* TASK_CREATE - Create a task::
|
||||
* TASK_IDENT - Get ID of a task::
|
||||
* TASK_START - Start a task::
|
||||
* TASK_RESTART - Restart a task::
|
||||
* TASK_DELETE - Delete a task::
|
||||
* TASK_SUSPEND - Suspend a task::
|
||||
* TASK_RESUME - Resume a task::
|
||||
* TASK_SET_PRIORITY - Set task priority::
|
||||
* TASK_MODE - Change current task's mode::
|
||||
* TASK_GET_NOTE - Get task notepad entry::
|
||||
* TASK_SET_NOTE - Set task notepad entry::
|
||||
* TASK_WAKE_AFTER - Wake up after interval::
|
||||
* TASK_WAKE_WHEN - Wake up when specified::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the task manager's directives. A
|
||||
subsection is dedicated to each of this manager's directives and
|
||||
describes the calling sequence, related constants, usage, and
|
||||
@@ -723,9 +593,6 @@ status codes.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_CREATE - Create a task, TASK_IDENT - Get ID of a task, Task Manager Directives, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_CREATE - Create a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -835,9 +702,6 @@ by the maximum_global_objects field in the Configuration Table.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_IDENT - Get ID of a task, TASK_START - Start a task, TASK_CREATE - Create a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_IDENT - Get ID of a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -893,9 +757,6 @@ accesses only the local copy of the global object table.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_START - Start a task, TASK_RESTART - Restart a task, TASK_IDENT - Get ID of a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_START - Start a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -945,9 +806,6 @@ the @code{@value{DIRPREFIX}task_start} directive.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_RESTART - Restart a task, TASK_DELETE - Delete a task, TASK_START - Start a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_RESTART - Restart a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1009,9 +867,6 @@ created with the @code{@value{RPREFIX}GLOBAL} option.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_DELETE - Delete a task, TASK_SUSPEND - Suspend a task, TASK_RESTART - Restart a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_DELETE - Delete a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1068,9 +923,6 @@ created with the @code{@value{RPREFIX}GLOBAL} option.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_SUSPEND - Suspend a task, TASK_RESUME - Resume a task, TASK_DELETE - Delete a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_SUSPEND - Suspend a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1119,9 +971,6 @@ If the task specified by id is already suspended, then the
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_RESUME - Resume a task, TASK_SET_PRIORITY - Set task priority, TASK_SUSPEND - Suspend a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_RESUME - Resume a task
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1167,9 +1016,6 @@ If the task specified by id is not suspended, then the
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_SET_PRIORITY - Set task priority, TASK_MODE - Change current task's mode, TASK_RESUME - Resume a task, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_SET_PRIORITY - Set task priority
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1231,9 +1077,6 @@ binary semaphores.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_MODE - Change current task's mode, TASK_GET_NOTE - Get task notepad entry, TASK_SET_PRIORITY - Set task priority, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_MODE - Change current task's mode
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1388,9 +1231,6 @@ mask constant is provided in the following table:
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_GET_NOTE - Get task notepad entry, TASK_SET_NOTE - Set task notepad entry, TASK_MODE - Change current task's mode, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_GET_NOTE - Get task notepad entry
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1443,9 +1283,6 @@ the notepad entry of the specified task.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_SET_NOTE - Set task notepad entry, TASK_WAKE_AFTER - Wake up after interval, TASK_GET_NOTE - Get task notepad entry, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_SET_NOTE - Set task notepad entry
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1498,9 +1335,6 @@ node to set the specified notepad entry.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_WAKE_AFTER - Wake up after interval, TASK_WAKE_WHEN - Wake up when specified, TASK_SET_NOTE - Set task notepad entry, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_WAKE_AFTER - Wake up after interval
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -1545,9 +1379,6 @@ A clock tick is required to support the functionality of this directive.
|
||||
|
||||
@page
|
||||
|
||||
@ifinfo
|
||||
@node TASK_WAKE_WHEN - Wake up when specified, Interrupt Manager, TASK_WAKE_AFTER - Wake up after interval, Task Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TASK_WAKE_WHEN - Wake up when specified
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
103
doc/user/timer.t
103
doc/user/timer.t
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node Timer Manager, Timer Manager Introduction, CLOCK_TICK - Announce a clock tick, Top
|
||||
@end ifinfo
|
||||
@chapter Timer Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* Timer Manager Introduction::
|
||||
* Timer Manager Background::
|
||||
* Timer Manager Operations::
|
||||
* Timer Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Timer Manager Introduction, Timer Manager Background, Timer Manager, Timer Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The timer manager provides support for timer
|
||||
@@ -38,28 +24,12 @@ facilities. The directives provided by the timer manager are:
|
||||
@end itemize
|
||||
|
||||
|
||||
@ifinfo
|
||||
@node Timer Manager Background, Timer Manager Required Support, Timer Manager Introduction, Timer Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Timer Manager Required Support::
|
||||
* Timers::
|
||||
* Timer Service Routines::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Timer Manager Required Support, Timers, Timer Manager Background, Timer Manager Background
|
||||
@end ifinfo
|
||||
@subsection Required Support
|
||||
|
||||
A clock tick is required to support the functionality provided by this manager.
|
||||
|
||||
@ifinfo
|
||||
@node Timers, Timer Service Routines, Timer Manager Required Support, Timer Manager Background
|
||||
@end ifinfo
|
||||
@subsection Timers
|
||||
|
||||
A timer is an RTEMS object which allows the
|
||||
@@ -80,9 +50,6 @@ timer service routine will fire to indicate that the application
|
||||
has failed to reach a reset point. This use of a timer is
|
||||
sometimes referred to as a "keep alive" or a "deadman" timer.
|
||||
|
||||
@ifinfo
|
||||
@node Timer Service Routines, Timer Manager Operations, Timers, Timer Manager Background
|
||||
@end ifinfo
|
||||
@subsection Timer Service Routines
|
||||
|
||||
The timer service routine should adhere to @value{LANGUAGE} calling
|
||||
@@ -111,25 +78,8 @@ of the timer which is being fired and user_data is a pointer to
|
||||
user-defined information which may be utilized by the timer
|
||||
service routine. The argument user_data may be NULL.
|
||||
|
||||
@ifinfo
|
||||
@node Timer Manager Operations, Creating a Timer, Timer Service Routines, Timer Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating a Timer::
|
||||
* Obtaining Timer IDs::
|
||||
* Initiating an Interval Timer::
|
||||
* Initiating a Time of Day Timer::
|
||||
* Canceling a Timer::
|
||||
* Resetting a Timer::
|
||||
* Deleting a Timer::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating a Timer, Obtaining Timer IDs, Timer Manager Operations, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating a Timer
|
||||
|
||||
The @code{@value{DIRPREFIX}timer_create} directive creates a timer by
|
||||
@@ -138,9 +88,6 @@ user-specified name, and assigning it a timer ID. Newly created
|
||||
timers do not have a timer service routine associated with them
|
||||
and are not active.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Timer IDs, Initiating an Interval Timer, Creating a Timer, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Timer IDs
|
||||
|
||||
When a timer is created, RTEMS generates a unique
|
||||
@@ -153,9 +100,6 @@ Second, the timer ID may be obtained later using the
|
||||
@code{@value{DIRPREFIX}timer_ident} directive. The timer ID
|
||||
is used by other directives to manipulate this timer.
|
||||
|
||||
@ifinfo
|
||||
@node Initiating an Interval Timer, Initiating a Time of Day Timer, Obtaining Timer IDs, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Initiating an Interval Timer
|
||||
|
||||
The @code{@value{DIRPREFIX}timer_fire_after} directive initiates a timer to
|
||||
@@ -164,9 +108,6 @@ number of clock ticks have elapsed. When the interval has
|
||||
elapsed, the timer service routine will be invoked from the
|
||||
@code{@value{DIRPREFIX}clock_tick} directive.
|
||||
|
||||
@ifinfo
|
||||
@node Initiating a Time of Day Timer, Canceling a Timer, Initiating an Interval Timer, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Initiating a Time of Day Timer
|
||||
|
||||
The @code{@value{DIRPREFIX}timer_fire_when} directive initiates a timer to
|
||||
@@ -175,9 +116,6 @@ time of day has been reached. When the interval has elapsed,
|
||||
the timer service routine will be invoked from the
|
||||
@code{@value{DIRPREFIX}clock_tick} directive.
|
||||
|
||||
@ifinfo
|
||||
@node Canceling a Timer, Resetting a Timer, Initiating a Time of Day Timer, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Canceling a Timer
|
||||
|
||||
The @code{@value{DIRPREFIX}timer_cancel} directive is used to halt the
|
||||
@@ -187,9 +125,6 @@ reinitiated using the @code{@value{DIRPREFIX}timer_reset},
|
||||
@code{@value{DIRPREFIX}timer_fire_after}, and
|
||||
@code{@value{DIRPREFIX}timer_fire_when} directives.
|
||||
|
||||
@ifinfo
|
||||
@node Resetting a Timer, Deleting a Timer, Canceling a Timer, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Resetting a Timer
|
||||
|
||||
The @code{@value{DIRPREFIX}timer_reset} directive is used to restore an
|
||||
@@ -201,9 +136,6 @@ was by a @code{@value{DIRPREFIX}timer_fire_when} directive, then an error is
|
||||
returned. The timer service routine is not changed or
|
||||
fired by this directive.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting a Timer, Timer Manager Directives, Resetting a Timer, Timer Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting a Timer
|
||||
|
||||
The @code{@value{DIRPREFIX}timer_delete} directive is used to delete a timer.
|
||||
@@ -213,21 +145,7 @@ to the TMCB free list when it is deleted. A timer can be
|
||||
deleted by a task other than the task which created the timer.
|
||||
Any subsequent references to the timer's name and ID are invalid.
|
||||
|
||||
@ifinfo
|
||||
@node Timer Manager Directives, TIMER_CREATE - Create a timer, Deleting a Timer, Timer Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* TIMER_CREATE - Create a timer::
|
||||
* TIMER_IDENT - Get ID of a timer::
|
||||
* TIMER_CANCEL - Cancel a timer::
|
||||
* TIMER_DELETE - Delete a timer::
|
||||
* TIMER_FIRE_AFTER - Fire timer after interval::
|
||||
* TIMER_FIRE_WHEN - Fire timer when specified::
|
||||
* TIMER_RESET - Reset an interval timer::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the timer manager's directives.
|
||||
A subsection is dedicated to each of this manager's directives
|
||||
@@ -235,9 +153,6 @@ and describes the calling sequence, related constants, usage,
|
||||
and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_CREATE - Create a timer, TIMER_IDENT - Get ID of a timer, Timer Manager Directives, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_CREATE - Create a timer
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -280,9 +195,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_IDENT - Get ID of a timer, TIMER_CANCEL - Cancel a timer, TIMER_CREATE - Create a timer, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_IDENT - Get ID of a timer
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -325,9 +237,6 @@ This directive will not cause the running task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_CANCEL - Cancel a timer, TIMER_DELETE - Delete a timer, TIMER_IDENT - Get ID of a timer, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_CANCEL - Cancel a timer
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -365,9 +274,6 @@ be reinitiated by the next invocation of @code{@value{DIRPREFIX}timer_reset},
|
||||
This directive will not cause the running task to be preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_DELETE - Delete a timer, TIMER_FIRE_AFTER - Fire timer after interval, TIMER_CANCEL - Cancel a timer, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_DELETE - Delete a timer
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -408,9 +314,6 @@ A timer can be deleted by a task other than the task
|
||||
which created the timer.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_FIRE_AFTER - Fire timer after interval, TIMER_FIRE_WHEN - Fire timer when specified, TIMER_DELETE - Delete a timer, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_FIRE_AFTER - Fire timer after interval
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -458,9 +361,6 @@ This directive will not cause the running task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_FIRE_WHEN - Fire timer when specified, TIMER_RESET - Reset an interval timer, TIMER_FIRE_AFTER - Fire timer after interval, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_FIRE_WHEN - Fire timer when specified
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -509,9 +409,6 @@ This directive will not cause the running task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node TIMER_RESET - Reset an interval timer, Semaphore Manager, TIMER_FIRE_WHEN - Fire timer when specified, Timer Manager Directives
|
||||
@end ifinfo
|
||||
@subsection TIMER_RESET - Reset an interval timer
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
@@ -6,22 +6,8 @@
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
@ifinfo
|
||||
@node User Extensions Manager, User Extensions Manager Introduction, Heterogeneous Systems, Top
|
||||
@end ifinfo
|
||||
@chapter User Extensions Manager
|
||||
@ifinfo
|
||||
@menu
|
||||
* User Extensions Manager Introduction::
|
||||
* User Extensions Manager Background::
|
||||
* User Extensions Manager Operations::
|
||||
* User Extensions Manager Directives::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node User Extensions Manager Introduction, User Extensions Manager Background, User Extensions Manager, User Extensions Manager
|
||||
@end ifinfo
|
||||
@section Introduction
|
||||
|
||||
The RTEMS User Extensions Manager allows the
|
||||
@@ -36,27 +22,7 @@ manager are:
|
||||
@item @code{@value{DIRPREFIX}extension_delete} - Delete an extension set
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@node User Extensions Manager Background, Extension Sets, User Extensions Manager Introduction, User Extensions Manager
|
||||
@end ifinfo
|
||||
@section Background
|
||||
@ifinfo
|
||||
@menu
|
||||
* Extension Sets::
|
||||
* TCB Extension Area::
|
||||
* Extensions::
|
||||
* TASK_CREATE Extension::
|
||||
* TASK_START Extension::
|
||||
* TASK_RESTART Extension::
|
||||
* TASK_DELETE Extension::
|
||||
* TASK_SWITCH Extension::
|
||||
* TASK_POST_SWITCH Extension::
|
||||
* TASK_BEGIN Extension::
|
||||
* TASK_EXITTED Extension::
|
||||
* FATAL Error Extension::
|
||||
* Order of Invocation::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
User extension routines are invoked when the
|
||||
following system events occur:
|
||||
@@ -76,9 +42,6 @@ following system events occur:
|
||||
These extensions are invoked as a function with
|
||||
arguments that are appropriate to the system event.
|
||||
|
||||
@ifinfo
|
||||
@node Extension Sets, TCB Extension Area, User Extensions Manager Background, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection Extension Sets
|
||||
|
||||
An extension set is defined as a set of routines
|
||||
@@ -154,9 +117,6 @@ independently of the others.
|
||||
All user extensions are optional and RTEMS places no
|
||||
naming restrictions on the user.
|
||||
|
||||
@ifinfo
|
||||
@node TCB Extension Area, Extensions, Extension Sets, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TCB Extension Area
|
||||
|
||||
RTEMS provides for a pointer to a user-defined data
|
||||
@@ -193,9 +153,6 @@ could create a partition of fixed size TCB extension buffers and
|
||||
use the partition manager's allocation and deallocation
|
||||
directives to obtain and release the extension buffers.
|
||||
|
||||
@ifinfo
|
||||
@node Extensions, TASK_CREATE Extension, TCB Extension Area, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection Extensions
|
||||
|
||||
The sections that follow will contain a description
|
||||
@@ -207,9 +164,6 @@ its arguments are all defined by the user. The names used in
|
||||
the examples were arbitrarily chosen and impose no naming
|
||||
conventions on the user.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_CREATE Extension, TASK_START Extension, Extensions, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_CREATE Extension
|
||||
|
||||
The TASK_CREATE extension directly corresponds to the
|
||||
@@ -244,9 +198,6 @@ invoked from the task_create directive after new_task has been
|
||||
completely initialized, but before it is placed on a ready TCB
|
||||
chain.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_START Extension, TASK_RESTART Extension, TASK_CREATE Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_START Extension
|
||||
|
||||
The TASK_START extension directly corresponds to the
|
||||
@@ -281,9 +232,6 @@ extension is invoked from the task_start directive after
|
||||
started_task has been made ready to start execution, but before
|
||||
it is placed on a ready TCB chain.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_RESTART Extension, TASK_DELETE Extension, TASK_START Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_RESTART Extension
|
||||
|
||||
The TASK_RESTART extension directly corresponds to
|
||||
@@ -317,9 +265,6 @@ invoked from the task_restart directive after restarted_task has
|
||||
been made ready to start execution, but before it is placed on a
|
||||
ready TCB chain.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_DELETE Extension, TASK_SWITCH Extension, TASK_RESTART Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_DELETE Extension
|
||||
|
||||
The TASK_DELETE extension is associated with the
|
||||
@@ -356,9 +301,6 @@ including the TCB have been returned to their respective free
|
||||
pools. This extension should not call any RTEMS directives if a
|
||||
task is deleting itself (current_task is equal to deleted_task).
|
||||
|
||||
@ifinfo
|
||||
@node TASK_SWITCH Extension, TASK_POST_SWITCH Extension, TASK_DELETE Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_SWITCH Extension
|
||||
|
||||
The TASK_SWITCH extension corresponds to a task
|
||||
@@ -394,9 +336,6 @@ context has been saved, but before the heir_task context has
|
||||
been restored. This extension should not call any RTEMS
|
||||
directives.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_POST_SWITCH Extension, TASK_BEGIN Extension, TASK_SWITCH Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_POST_SWITCH Extension
|
||||
|
||||
The TASK_POST_SWITCH extension corresponds to a task
|
||||
@@ -429,9 +368,6 @@ invoked from RTEMS' dispatcher routine after the current_task
|
||||
context has been restored and the extension runs in the context
|
||||
of the current_task.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_BEGIN Extension, TASK_EXITTED Extension, TASK_POST_SWITCH Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_BEGIN Extension
|
||||
|
||||
The TASK_BEGIN extension is invoked when a task
|
||||
@@ -463,9 +399,6 @@ task while the TASK_START extension is executed in the context
|
||||
of the task performing the task_start directive. For most
|
||||
extensions, this is not a critical distinction.
|
||||
|
||||
@ifinfo
|
||||
@node TASK_EXITTED Extension, FATAL Error Extension, TASK_BEGIN Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection TASK_EXITTED Extension
|
||||
|
||||
The TASK_EXITTED extension is invoked when a task
|
||||
@@ -503,9 +436,6 @@ fatal_error_occurred with the @code{@value{RPREFIX}TASK_EXITTED} directive statu
|
||||
|
||||
@lowersections
|
||||
|
||||
@ifinfo
|
||||
@node FATAL Error Extension, Order of Invocation, TASK_EXITTED Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection FATAL Error Extension
|
||||
|
||||
The FATAL error extension is associated with the
|
||||
@@ -544,9 +474,6 @@ This extension should not call any RTEMS directives.
|
||||
|
||||
@raisesections
|
||||
|
||||
@ifinfo
|
||||
@node Order of Invocation, User Extensions Manager Operations, FATAL Error Extension, User Extensions Manager Background
|
||||
@end ifinfo
|
||||
@subsection Order of Invocation
|
||||
|
||||
When one of the critical system events occur, the
|
||||
@@ -591,21 +518,8 @@ the Standard C Library will operate correctly even if they
|
||||
utilize the C Library because the C Library's TASK_DELETE
|
||||
extension is invoked after that of the other extensions.
|
||||
|
||||
@ifinfo
|
||||
@node User Extensions Manager Operations, Creating an Extension Set, Order of Invocation, User Extensions Manager
|
||||
@end ifinfo
|
||||
@section Operations
|
||||
@ifinfo
|
||||
@menu
|
||||
* Creating an Extension Set::
|
||||
* Obtaining Extension Set IDs::
|
||||
* Deleting an Extension Set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
@node Creating an Extension Set, Obtaining Extension Set IDs, User Extensions Manager Operations, User Extensions Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Creating an Extension Set
|
||||
|
||||
The @code{@value{DIRPREFIX}extension_create} directive creates and installs
|
||||
@@ -615,9 +529,6 @@ assigning it an extension set ID. Newly created extension sets
|
||||
are immediately installed and are invoked upon the next system
|
||||
even supporting an extension.
|
||||
|
||||
@ifinfo
|
||||
@node Obtaining Extension Set IDs, Deleting an Extension Set, Creating an Extension Set, User Extensions Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Obtaining Extension Set IDs
|
||||
|
||||
When an extension set is created, RTEMS generates a
|
||||
@@ -631,9 +542,6 @@ be obtained later using the @code{@value{DIRPREFIX}extension_ident}
|
||||
directive. The extension set ID is used by other directives
|
||||
to manipulate this extension set.
|
||||
|
||||
@ifinfo
|
||||
@node Deleting an Extension Set, User Extensions Manager Directives, Obtaining Extension Set IDs, User Extensions Manager Operations
|
||||
@end ifinfo
|
||||
@subsection Deleting an Extension Set
|
||||
|
||||
The @code{@value{DIRPREFIX}extension_delete} directive is used to delete an
|
||||
@@ -643,17 +551,7 @@ deleted by a task other than the task which created the
|
||||
extension set. Any subsequent references to the extension's
|
||||
name and ID are invalid.
|
||||
|
||||
@ifinfo
|
||||
@node User Extensions Manager Directives, EXTENSION_CREATE - Create a extension set, Deleting an Extension Set, User Extensions Manager
|
||||
@end ifinfo
|
||||
@section Directives
|
||||
@ifinfo
|
||||
@menu
|
||||
* EXTENSION_CREATE - Create a extension set::
|
||||
* EXTENSION_IDENT - Get ID of a extension set::
|
||||
* EXTENSION_DELETE - Delete a extension set::
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
This section details the user extension manager's
|
||||
directives. A subsection is dedicated to each of this manager's
|
||||
@@ -661,9 +559,6 @@ directives and describes the calling sequence, related
|
||||
constants, usage, and status codes.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node EXTENSION_CREATE - Create a extension set, EXTENSION_IDENT - Get ID of a extension set, User Extensions Manager Directives, User Extensions Manager Directives
|
||||
@end ifinfo
|
||||
@subsection EXTENSION_CREATE - Create a extension set
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -709,9 +604,6 @@ This directive will not cause the calling task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node EXTENSION_IDENT - Get ID of a extension set, EXTENSION_DELETE - Delete a extension set, EXTENSION_CREATE - Create a extension set, User Extensions Manager Directives
|
||||
@end ifinfo
|
||||
@subsection EXTENSION_IDENT - Get ID of a extension set
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
@@ -755,9 +647,6 @@ This directive will not cause the running task to be
|
||||
preempted.
|
||||
|
||||
@page
|
||||
@ifinfo
|
||||
@node EXTENSION_DELETE - Delete a extension set, Configuring a System, EXTENSION_IDENT - Get ID of a extension set, User Extensions Manager Directives
|
||||
@end ifinfo
|
||||
@subsection EXTENSION_DELETE - Delete a extension set
|
||||
|
||||
@subheading CALLING SEQUENCE:
|
||||
|
||||
Reference in New Issue
Block a user