Nodes, menus, etc are automatically generated now

This commit is contained in:
Joel Sherrill
1998-03-27 18:53:17 +00:00
parent 1f020c6577
commit 20515fc1f8
24 changed files with 130 additions and 1837 deletions

View File

@@ -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 \ part.texi preface.texi region.texi rtmon.texi schedule.texi sem.texi \
signal.texi task.texi timer.texi userext.texi $(COMMON_FILES) 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: all:
INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
@@ -57,5 +63,125 @@ html:
clean: clean:
rm -f *.o $(PROG) *.txt core *.html rm -f *.o $(PROG) *.txt core *.html
rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) 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

View File

@@ -6,23 +6,8 @@
@c $Id$ @c $Id$
@c @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 @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 @section Introduction
A board support package (BSP) is a collection of 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 (MPCI). However, a minimal BSP need only support processor
reset and initialization and, if needed, a clock tick. 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 @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 An RTEMS based application is initiated or
re-initiated when the processor is reset. This initialization 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 initialization task facility is typically used to create the
application's set of tasks. 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 @subsection Interrupt Stack Requirements
The worst-case stack usage by interrupt service 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 The size of the interrupt stack must be greater than
or equal to the constant @code{@value{RPREFIX}MINIMUM_STACK_SIZE}. 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 @subsection Processors with a Separate Interrupt Stack
Some processors support a separate stack for 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 all ISRs use this stack, the stack size must take into account
the worst case stack usage by any combination of nested ISRs. 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 @subsection Processors without a Separate Interrupt Stack
Some processors do not support a separate stack for 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 logically equivalent to the processor supporting a separate
interrupt stack in hardware. 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 @section Device Drivers
@ifinfo
@menu
* Clock Tick Device Driver::
@end menu
@end ifinfo
Device drivers consist of control software for Device drivers consist of control software for
special peripheral devices and provide a logical interface 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 For more information on device drivers, refer to the
I/O Manager chapter. 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 @subsection Clock Tick Device Driver
Most RTEMS applications will include a clock tick 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 available for task execution due to the increased number of
clock tick ISRs. 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 @section User Extensions
RTEMS allows the application developer to augment RTEMS allows the application developer to augment
@@ -280,18 +232,7 @@ device.
For more information on user extensions, refer to the For more information on user extensions, refer to the
User Extensions chapter. 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) @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 RTEMS requires that an MPCI layer be provided when a
multiple node application is developed. This MPCI layer must multiple node application is developed. This MPCI layer must
@@ -304,9 +245,6 @@ target platform.
For more information on the MPCI, refer to the For more information on the MPCI, refer to the
Multiprocessing Manager chapter. 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 @subsection Tightly-Coupled Systems
A tightly-coupled system is a multiprocessor 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 a node poll for arrival of packets. The drawback to this
technique is the overhead associated with polling. 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 @subsection Loosely-Coupled Systems
A loosely-coupled system is a multiprocessor 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 networks provide both the point-to-point and broadcast
capabilities which are expected by RTEMS. 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 @subsection Systems with Mixed Coupling
A mixed-coupling system is a multiprocessor 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 communications paths in the event of an overload or a partial
failure. failure.
@ifinfo
@node Heterogeneous Systems, User Extensions Manager, Systems with Mixed Coupling, Board Support Packages Multiprocessor Communications Interface (MPCI)
@end ifinfo
@subsection Heterogeneous Systems @subsection Heterogeneous Systems
Designing an MPCI layer for a heterogeneous system Designing an MPCI layer for a heterogeneous system

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Clock Manager, Clock Manager Introduction, INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress, Top
@end ifinfo
@chapter Clock Manager @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 @section Introduction
The clock manager provides support for time of day 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 @item @code{@value{DIRPREFIX}clock_tick} - Announce a clock tick
@end itemize @end itemize
@ifinfo
@node Clock Manager Background, Required Support, Clock Manager Introduction, Clock Manager
@end ifinfo
@section Background @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 @subsection Required Support
For the features provided by the clock manager to be 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 defined to be an integral number of microseconds which is
specified by the user in the Configuration Table. 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 @subsection Time and Date Data Structures
The clock facilities of the clock manager operate 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 The seconds field in this @value{STRUCTURE} is the number of
seconds since the RTEMS epoch of January 1, 1988. 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 @subsection Clock Tick and Timeslicing
Timeslicing is a task scheduling discipline in which 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 has expired, then that task will be preempted if there exists a
ready task of equal priority. ready task of equal priority.
@ifinfo
@node Delays, Timeouts, Clock Tick and Timeslicing, Clock Manager Background
@end ifinfo
@subsection Delays @subsection Delays
A sleep timer allows a task to delay for a given 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 be explicitly deleted. Each task may activate one and only one
sleep timer at a time. sleep timer at a time.
@ifinfo
@node Timeouts, Clock Manager Operations, Delays, Clock Manager Background
@end ifinfo
@subsection Timeouts @subsection Timeouts
Timeouts are a special type of timer automatically 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. 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. 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 @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 @subsection Announcing a Tick
RTEMS provides the @code{@value{DIRPREFIX}clock_tick} directive which is 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 directive is responsible for maintaining both
calendar time and the dynamic set of timers. 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 @subsection Setting the Time
The @code{@value{DIRPREFIX}clock_set} directive allows a task or an ISR to 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 then the expired timers will be fired during the invocation of
the @code{@value{DIRPREFIX}clock_set} directive. 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 @subsection Obtaining the Time
The @code{@value{DIRPREFIX}clock_get} directive allows a task or an ISR to 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 Calendar time operations will return an error code if
invoked before the date and time have been set. 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 @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. This section details the clock manager's directives.
A subsection is dedicated to each of this 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. and status codes.
@page @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 @subsection CLOCK_SET - Set system date and time
@subheading CALLING SEQUENCE: @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. the system date and time to application specific specifications.
@page @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 @subsection CLOCK_GET - Get system date and time information
@subheading CALLING SEQUENCE: @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. system date and time to application specific specifications.
@page @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 @subsection CLOCK_TICK - Announce a clock tick
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -10,23 +10,9 @@
@c The following figure was replaced with an ASCII equivalent. @c The following figure was replaced with an ASCII equivalent.
@c Figure 2-1 Object ID Composition @c Figure 2-1 Object ID Composition
@c @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 @chapter Key Concepts
@node Key Concepts Introduction, Key Concepts Objects, Key Concepts, Key Concepts
@end ifinfo
@section Introduction @section Introduction
The facilities provided by RTEMS are built upon a 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 utilize RTEMS. The purpose of this chapter is to familiarize
one with these concepts. one with these concepts.
@ifinfo
@node Key Concepts Objects, Key Concepts Communication and Synchronization, Key Concepts Introduction, Key Concepts
@end ifinfo
@section Objects @section Objects
RTEMS provides directives which can be used to 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 routines, object control blocks are not directly manipulated by
user applications. user applications.
@ifinfo
@node Key Concepts Communication and Synchronization, Key Concepts Time, Key Concepts Objects, Key Concepts
@end ifinfo
@section Communication and Synchronization @section Communication and Synchronization
In real-time multitasking applications, the ability 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 supports only asynchronous communication and is typically used
for exception handling. for exception handling.
@ifinfo
@node Key Concepts Time, Key Concepts Memory Management, Key Concepts Communication and Synchronization, Key Concepts
@end ifinfo
@section Time @section Time
The development of responsive real-time applications 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 provides a periodic clock tick. This clock tick is typically
provided by a real time clock or counter/timer device. 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 @section Memory Management
RTEMS memory management facilities can be grouped RTEMS memory management facilities can be grouped

View File

@@ -6,29 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Configuring a System, Configuring a System Configuration Table, EXTENSION_DELETE - Delete a extension set, Top
@end ifinfo
@chapter Configuring a System @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 @section Configuration Table
The RTEMS Configuration Table is used to tailor an The RTEMS Configuration Table is used to tailor an
@@ -145,9 +124,6 @@ NULL if the POSIX API is not used.
@end table @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 @section RTEMS API Configuration Table
The RTEMS API Configuration Table is used to configure the 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 @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 @section POSIX API Configuration Table
The POSIX API Configuration Table is used to configure the The POSIX API Configuration Table is used to configure the
@@ -340,9 +313,6 @@ posix_initialization_threads_table @value{STRUCTURE}.
@end table @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 @section CPU Dependent Information Table
The CPU Dependent Information Table is used to 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 chapter of the Applications Supplement document for a specific
target processor. 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 @section Initialization Task Table
The Initialization Task Table is used to describe The Initialization Task Table is used to describe
@@ -477,9 +444,6 @@ Initialization_Tasks : aliased RTEMS.Initialization_Tasks_Table( 1 .. 2 ) := (
@end example @end example
@end ifset @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 @section Driver Address Table
The Device Driver Table is used to inform the I/O 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 operation of device drivers is provided in the I/O Manager
chapter. 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 @section User Extensions Table
The User Extensions Table is used to inform RTEMS of 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 More information regarding the user extensions is
provided in the User Extensions chapter. 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 @section Multiprocessor Configuration Table
The Multiprocessor Configuration Table contains The Multiprocessor Configuration Table contains
@@ -828,9 +786,6 @@ regarding its entries can be found in the next section.
@end table @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 @section Multiprocessor Communications Interface Table
The format of this table is defined in The format of this table is defined in
@@ -909,9 +864,6 @@ supplied multiprocessor communications layer.
More information regarding the required functionality of these More information regarding the required functionality of these
entry points is provided in the Multiprocessor chapter. 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 @section Determining Memory Requirements
Since memory is a critical resource in many real-time 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 letter to avoid any naming conflicts. All RTEMS directive names
should be treated as reserved words. 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 @section Sizing the RTEMS RAM Workspace
The RTEMS RAM Workspace is a user-specified block of The RTEMS RAM Workspace is a user-specified block of

View File

@@ -7,7 +7,7 @@
@c @c
@ifinfo @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 @end ifinfo
@chapter Directive Status Codes @chapter Directive Status Codes
@table @b @table @b

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @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 @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 @section Introduction
The dual-ported memory manager provides a mechanism 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 @item @code{@value{DIRPREFIX}port_internal_to_external} - Convert internal to external address
@end itemize @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 @section Background
A dual-ported memory area (DPMA) is an contiguous 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 controllers typically utilize the DPMA for high-performance data
transfers. transfers.
@ifinfo
@node Dual-Ported Memory Manager Operations, Creating a Port, Dual-Ported Memory Manager Background, Dual-Ported Memory Manager
@end ifinfo
@section Operations @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 @subsection Creating a Port
The @code{@value{DIRPREFIX}port_create} directive creates a port into a DPMA 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 initialize the dual-ported memory area or access any memory
within it. within it.
@ifinfo
@node Obtaining Port IDs, Converting an Address, Creating a Port, Dual-Ported Memory Manager Operations
@end ifinfo
@subsection Obtaining Port IDs @subsection Obtaining Port IDs
When a port is created, RTEMS generates a unique port 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 ID is used by other dual-ported memory manager directives to
access this port. 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 @subsection Converting an Address
The @code{@value{DIRPREFIX}port_external_to_internal} directive is used to 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 convert an address which lies outside the specified DPMA, then
the address to be converted will be returned. 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 @subsection Deleting a DPMA Port
A port can be removed from the system and returned to 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, RTEMS with the @code{@value{DIRPREFIX}port_delete} directive. When a port is deleted,
its control block is returned to the DPCB free list. 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 @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 This section details the dual-ported memory manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection PORT_CREATE - Create a port
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -205,9 +150,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection PORT_IDENT - Get ID of a port
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -250,9 +192,6 @@ This directive will not cause the running task to be
preempted. preempted.
@page @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 @subsection PORT_DELETE - Delete a port
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -294,9 +233,6 @@ created the port. Any local task that knows the port id can
delete the port. delete the port.
@page @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 @subsection PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -341,9 +277,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Event Manager, Event Manager Introduction, MESSAGE_QUEUE_FLUSH - Flush all messages on a queue, Top
@end ifinfo
@chapter Event Manager @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 @section Introduction
The event manager provides a high performance method 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 @item @code{@value{DIRPREFIX}event_receive} - Receive event condition
@end itemize @end itemize
@ifinfo
@node Event Manager Background, Event Sets, Event Manager Introduction, Event Manager
@end ifinfo
@section Background @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 @subsection Event Sets
An event flag is used by a task (or ISR) to inform 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 event is posted. The @code{@value{RPREFIX}EVENT_ALL} algorithm states that an event
condition is satisfied when every requested event is posted. 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 @subsection Building an Event Set or Condition
An event set or condition is built by a bitwise OR of 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} directive should be @code{@value{RPREFIX}EVENT_6 @value{OR}
@value{RPREFIX}EVENT_15 @value{OR} @value{RPREFIX}EVENT_31}. @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 @subsection Building an EVENT_RECEIVE Option Set
In general, an option is built by a bitwise OR of the 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 @code{@value{RPREFIX}NO_WAIT} because @code{@value{RPREFIX}EVENT_ALL} is the
default condition for @code{@value{DIRPREFIX}event_receive}. 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 @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 @subsection Sending an Event Set
The @code{@value{DIRPREFIX}event_send} directive allows a task (or an ISR) to The @code{@value{DIRPREFIX}event_send} directive allows a task (or an ISR) to
@@ -183,9 +136,6 @@ task remains blocked.
@end itemize @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 @subsection Receiving an Event Set
The @code{@value{DIRPREFIX}event_receive} directive is used by tasks to 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. wait before returning with an error status code.
@end itemize @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 @subsection Determining the Pending Event Set
A task can determine the pending event set by calling 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 The pending events are returned to the calling task but the event
set is left unaltered. 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 @subsection Receiving all Pending Events
A task can receive all of the currently pending 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 calling task and the event set is cleared. If no events are
pending then the @code{@value{RPREFIX}UNSATISFIED} status code will be returned. 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 @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. This section details the event manager's directives.
A subsection is dedicated to each of this 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. and status codes.
@page @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 @subsection EVENT_SEND - Send event set to a task
@subheading CALLING SEQUENCE: @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. remote node to send the event set to the appropriate task.
@page @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 @subsection EVENT_RECEIVE - Receive event condition
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Fatal Error Manager, Fatal Error Manager Introduction, IO_CONTROL - Special device services, Top
@end ifinfo
@chapter Fatal Error Manager @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 @section Introduction
The fatal error manager processes all fatal or 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 @item @code{@value{DIRPREFIX}fatal_error_occurred} - Invoke the fatal error handler
@end itemize @end itemize
@ifinfo
@node Fatal Error Manager Background, Fatal Error Manager Operations, Fatal Error Manager Introduction, Fatal Error Manager
@end ifinfo
@section Background @section Background
The fatal error manager is called upon detection of 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 Processing chapter of the Applications Supplement document for
a specific target processor. 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 @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 @subsection Announcing a Fatal Error
The @code{@value{DIRPREFIX}fatal_error_occurred} directive is invoked when a 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 handler will halt execution on the processor where the error
occurred. 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 @section Directives
@ifinfo
@menu
* FATAL_ERROR_OCCURRED - Invoke the fatal error handler::
@end menu
@end ifinfo
This section details the fatal error manager's This section details the fatal error manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection FATAL_ERROR_OCCURRED - Invoke the fatal error handler
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Initialization Manager, Initialization Manager Introduction, Key Concepts Memory Management, Top
@end ifinfo
@chapter Initialization Manager @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 @section Introduction
The initialization manager is responsible for 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 @item @code{@value{DIRPREFIX}shutdown_executive} - Shutdown RTEMS
@end itemize @end itemize
@ifinfo
@node Initialization Manager Background, Initialization Tasks, Initialization Manager Introduction, Initialization Manager
@end ifinfo
@section Background @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 @subsection Initialization Tasks
Initialization task(s) are the mechanism by which 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 execution mode. RTEMS does not automatically delete the
initialization tasks. initialization tasks.
@ifinfo
@node The System Initialization Task, The Idle Task, Initialization Tasks, Initialization Manager Background
@end ifinfo
@subsection The System Initialization Task @subsection The System Initialization Task
The System Initialization Task is responsible for The System Initialization Task is responsible for
@@ -107,9 +76,6 @@ Multiprocessing Server which initializes the Multiprocessor
Communications Interface Layer, verifies multiprocessor system Communications Interface Layer, verifies multiprocessor system
consistency, and processes all requests from remote nodes. 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 @subsection The Idle Task
The Idle Task is the lowest priority task in a system 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 task consists of an infinite loop and will be preempted when any
other task is made ready to execute. 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 @subsection Initialization Manager Failure
The fatal_error_occurred directive will be called The fatal_error_occurred directive will be called
@@ -155,20 +118,8 @@ initialization sequence.
created or started successfully. created or started successfully.
@end itemize @end itemize
@ifinfo
@node Initialization Manager Operations, Initializing RTEMS, Initialization Manager Failure, Initialization Manager
@end ifinfo
@section Operations @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 @subsection Initializing RTEMS
The @code{@value{DIRPREFIX}initialize_executive} 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 multitasking. It is critical that only one of the RTEMS
initialization sequences be used in an application. 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 @subsection Shutting Down RTEMS
The @code{@value{DIRPREFIX}shutdown_executive} directive is invoked by the 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 the code immediately following the invocation of the
@code{@value{DIRPREFIX}initialize_executive} directive. @code{@value{DIRPREFIX}initialize_executive} directive.
@ifinfo
@node Initialization Manager Directives, INITIALIZE_EXECUTIVE - Initialize RTEMS, Shutting Down RTEMS, Initialization Manager
@end ifinfo
@section Directives @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 This section details the initialization manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection INITIALIZE_EXECUTIVE - Initialize RTEMS
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -317,9 +251,6 @@ directive is logically equivalent to invoking
with no intervening actions. with no intervening actions.
@page @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 @subsection INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -372,9 +303,6 @@ initialization sequences:
@code{@value{DIRPREFIX}nitialize_executive_late}. @code{@value{DIRPREFIX}nitialize_executive_late}.
@page @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 @subsection INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -432,9 +360,6 @@ initialization sequences:
@page @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 @subsection SHUTDOWN_EXECUTIVE - Shutdown RTEMS
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Interrupt Manager, Interrupt Manager Introduction, TASK_WAKE_WHEN - Wake up when specified, Top
@end ifinfo
@chapter Interrupt Manager @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 @section Introduction
Any real-time executive must provide a mechanism for 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 @item @code{@value{DIRPREFIX}interrupt_is_in_progress} - Is an ISR in Progress
@end itemize @end itemize
@ifinfo
@node Interrupt Manager Background, Processing an Interrupt, Interrupt Manager Introduction, Interrupt Manager
@end ifinfo
@section Background @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 @subsection Processing an Interrupt
The interrupt manager allows the application to 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 without performing any dispatch processing. Only when the
outermost ISR terminates will the postponed dispatching occur. 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 @subsection RTEMS Interrupt Levels
Many processors support multiple interrupt levels or 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 chapter of the Applications Supplement document for a specific
target processor. 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 @subsection Disabling of Interrupts by RTEMS
During the execution of directive calls, critical 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 sections. However, ISRs that make no system calls may safely
execute as non-maskable interrupts. execute as non-maskable interrupts.
@ifinfo
@node Interrupt Manager Operations, Establishing an ISR, Disabling of Interrupts by RTEMS, Interrupt Manager
@end ifinfo
@section Operations @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 @subsection Establishing an ISR
The @code{@value{DIRPREFIX}interrupt_catch} 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 RTEMS' Vector Table. This directive returns the previous
contents of the specified vector in the RTEMS' Vector Table. 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 @subsection Directives Allowed from an ISR
Using the interrupt manager insures that RTEMS knows Using the interrupt manager insures that RTEMS knows
@@ -266,19 +218,7 @@ made from an ISR:
@end itemize @end itemize
@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 @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 This section details the interrupt manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection INTERRUPT_CATCH - Establish an ISR
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -332,9 +269,6 @@ returned in @code{old_isr_handler}.
This directive will not cause the calling task to be preempted. This directive will not cause the calling task to be preempted.
@page @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 @subsection INTERRUPT_DISABLE - Disable Interrupts
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -375,9 +309,6 @@ parameter.}
@end ifset @end ifset
@page @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 @subsection INTERRUPT_ENABLE - Enable Interrupts
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -417,9 +348,6 @@ This directive will not cause the calling task to be preempted.
@page @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 @subsection INTERRUPT_FLASH - Flash Interrupts
@subheading CALLING SEQUENCE: @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. This directive will not cause the calling task to be preempted.
@page @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 @subsection INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @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 @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 @section Introduction
The input/output interface manager provides a 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 @item @code{@value{DIRPREFIX}io_control} - Special device services
@end itemize @end itemize
@ifinfo
@node I/O Manager Background, Device Driver Table, I/O Manager Introduction, I/O Manager
@end ifinfo
@section Background @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 @subsection Device Driver Table
Each application utilizing the RTEMS I/O manager must 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 zero (0) as the device driver's return code for these device
driver entry points. 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 @subsection Major and Minor Device Numbers
Each call to the I/O manager must provide a device's 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 commonly used to distinguish between a number of devices
controlled by the same driver. 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 @subsection Device Names
The I/O Manager provides facilities to associate a 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 register the name of a device and to look up the major/minor
number pair associated with a device name. 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 @subsection Device Driver Environment
Application developers, as well as device driver 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 for device drivers, it makes no assumptions regarding the
construction or operation of a device driver. 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 @subsection Device Driver Interface
When an application invokes an I/O manager directive, 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 driver specific error codes is to make the most significant part
of the status indicate a driver specific code. 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 @subsection Device Driver Initialization
RTEMS automatically initializes all device drivers 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 cannot successfully initialize the device, then it should invoke
the fatal_error_occurred directive. 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 @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 @subsection Register and Lookup Name
The @code{@value{DIRPREFIX}io_register} directive associates a name with the 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 major numbers in a particular application. No device naming
conventions are dictated by RTEMS. 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 @subsection Accessing an Device Driver
The I/O manager provides directives which enable the The I/O manager provides directives which enable the
@@ -252,22 +190,7 @@ manager directives
@code{@value{DIRPREFIX}io_control} @code{@value{DIRPREFIX}io_control}
and the underlying device driver entry points. 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 @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 This section details the I/O manager's directives. A
subsection is dedicated to each of this manager's directives and 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. status codes.
@page @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 @subsection IO_INITIALIZE - Initialize a device driver
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -328,9 +248,6 @@ to be preempted. This is dependent on the device driver being
initialized. initialized.
@page @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 @subsection IO_REGISTER_NAME - Register a device
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -371,9 +288,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection IO_LOOKUP_NAME - Lookup a device
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -412,9 +326,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection IO_OPEN - Open a device
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -459,9 +370,6 @@ to be preempted. This is dependent on the device driver being
invoked. invoked.
@page @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 @subsection IO_CLOSE - Close a device
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -506,9 +414,6 @@ to be preempted. This is dependent on the device driver being
invoked. invoked.
@page @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 @subsection IO_READ - Read from a device
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -554,9 +459,6 @@ to be preempted. This is dependent on the device driver being
invoked. invoked.
@page @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 @subsection IO_WRITE - Write to a device
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -602,9 +504,6 @@ to be preempted. This is dependent on the device driver being
invoked. invoked.
@page @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 @subsection IO_CONTROL - Special device services
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,23 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Multiprocessing Manager, Multiprocessing Manager Introduction, Configuring a System Sizing the RTEMS RAM Workspace, Top
@end ifinfo
@chapter Multiprocessing Manager @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 @section Introduction
In multiprocessor real-time systems, new 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 Simply stated, RTEMS allows the entire system, both hardware and
software, to be viewed logically as a single system. software, to be viewed logically as a single system.
@ifinfo
@node Multiprocessing Manager Background, Nodes, Multiprocessing Manager Introduction, Multiprocessing Manager
@end ifinfo
@section Background @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 RTEMS makes no assumptions regarding the connection
media or topology of a multiprocessor system. The tasks which 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 providing transparent physical node boundaries, the minimal
heterogeneous processing required is isolated in the MPCI layer. heterogeneous processing required is isolated in the MPCI layer.
@ifinfo
@node Nodes, Global Objects, Multiprocessing Manager Background, Multiprocessing Manager Background
@end ifinfo
@subsection Nodes @subsection Nodes
A processor in a RTEMS system is referred to as a 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 Multiprocessor Communications Interface Layer (MPCI) must be
able to route messages based on the node number. 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 @subsection Global Objects
All RTEMS objects which are created with the GLOBAL 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 performed during the application design phase. Dynamic task
relocation is not supported by RTEMS. relocation is not supported by RTEMS.
@ifinfo
@node Global Object Table, Remote Operations, Global Objects, Multiprocessing Manager Background
@end ifinfo
@subsection Global Object Table @subsection Global Object Table
RTEMS maintains two tables containing object 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 node in the system must be informed of the creation or deletion
of a global object. of a global object.
@ifinfo
@node Remote Operations, Proxies, Global Object Table, Multiprocessing Manager Background
@end ifinfo
@subsection Remote Operations @subsection Remote Operations
When an application performs an operation on a remote 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 assumes the reliable transmission and reception of messages by
the MPCI and makes no attempt to detect or correct errors. 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 @subsection Proxies
A proxy is an RTEMS data structure which resides on a 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 application dependent and is different from the distribution of
tasks. tasks.
@ifinfo
@node Multiprocessor Configuration Table, Multiprocessing Manager Multiprocessor Communications Interface Layer, Proxies, Multiprocessing Manager Background
@end ifinfo
@subsection Multiprocessor Configuration Table @subsection Multiprocessor Configuration Table
The Multiprocessor Configuration Table contains 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 Multiprocessor Configuration Table of the Configuring a System
chapter. chapter.
@ifinfo
@node Multiprocessing Manager Multiprocessor Communications Interface Layer, INITIALIZATION, Multiprocessor Configuration Table, Multiprocessing Manager
@end ifinfo
@section Multiprocessor Communications Interface Layer @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 The Multiprocessor Communications Interface Layer
(MPCI) is a set of user-provided procedures which enable the (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 entry to obtain a packet buffer and the receive_entry entry to
copy the message into the buffer obtained. 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 @subsection INITIALIZATION
The INITIALIZATION component of the user-provided 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 There must be enough packet buffers so RTEMS can obtain one
whenever needed. whenever needed.
@ifinfo
@node GET_PACKET, RETURN_PACKET, INITIALIZATION, Multiprocessing Manager Multiprocessor Communications Interface Layer
@end ifinfo
@subsection GET_PACKET @subsection GET_PACKET
The GET_PACKET component of the user-provided MPCI 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) originator in the same packet in which the request message (RQ)
arrived. arrived.
@ifinfo
@node RETURN_PACKET, RECEIVE_PACKET, GET_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
@end ifinfo
@subsection RETURN_PACKET @subsection RETURN_PACKET
The RETURN_PACKET component of the user-provided MPCI 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 packet cannot be successfully returned, the fatal error manager
should be invoked. should be invoked.
@ifinfo
@node RECEIVE_PACKET, SEND_PACKET, RETURN_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
@end ifinfo
@subsection RECEIVE_PACKET @subsection RECEIVE_PACKET
The RECEIVE_PACKET component of the user-provided 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 from another node. If no messages are available, this entry
packet should contain NULL. packet should contain NULL.
@ifinfo
@node SEND_PACKET, Supporting Heterogeneous Environments, RECEIVE_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
@end ifinfo
@subsection SEND_PACKET @subsection SEND_PACKET
The SEND_PACKET component of the user-provided MPCI 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 how much of the packet (in unsigned32's) may require conversion in a
heterogeneous system. heterogeneous system.
@ifinfo
@node Supporting Heterogeneous Environments, Multiprocessing Manager Operations, SEND_PACKET, Multiprocessing Manager Multiprocessor Communications Interface Layer
@end ifinfo
@subsection Supporting Heterogeneous Environments @subsection Supporting Heterogeneous Environments
Developing an MPCI layer for a heterogeneous system Developing an MPCI layer for a heterogeneous system
@@ -614,19 +537,8 @@ sending or receiving MPCI layer.
data component of the packet. data component of the packet.
@end itemize @end itemize
@ifinfo
@node Multiprocessing Manager Operations, Announcing a Packet, Supporting Heterogeneous Environments, Multiprocessing Manager
@end ifinfo
@section Operations @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 @subsection Announcing a Packet
The @code{@value{DIRPREFIX}multiprocessing_announce} directive is called by 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 another node. This directive can be called from an interrupt
service routine or from within a polling routine. 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 @section Directives
@ifinfo
@menu
* MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet::
@end menu
@end ifinfo
This section details the additional directives This section details the additional directives
required to support RTEMS in a multiprocessor configuration. A required to support RTEMS in a multiprocessor configuration. A
@@ -651,9 +555,6 @@ describes the calling sequence, related constants, usage, and
status codes. status codes.
@page @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 @subsection MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Message Manager, Message Manager Introduction, SEMAPHORE_RELEASE - Release a semaphore, Top
@end ifinfo
@chapter Message Manager @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 @section Introduction
The message manager provides communication and 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 @item @code{@value{DIRPREFIX}message_queue_flush} - Flush all messages on a queue
@end itemize @end itemize
@ifinfo
@node Message Manager Background, Messages, Message Manager Introduction, Message Manager
@end ifinfo
@section Background @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 @subsection Messages
A message is a variable length buffer where 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 of the message and the information stored in that message are
user-defined and can be actual data, pointer(s), or empty. 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 @subsection Message Queues
A message queue permits the passing of messages among 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 The maximum length message which can be sent is set
on a per message queue basis. 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 @subsection Building a Message Queue's Attribute Set
In general, an attribute set is built by a bitwise OR 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 attribute_set parameter would be
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}. @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 @subsection Building a MESSAGE_QUEUE_RECEIVE Option Set
In general, an option is built by a bitwise OR of the 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 the @code{@value{DIRPREFIX}message_queue_receive} directive should
be @code{@value{RPREFIX}NO_WAIT}. 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 @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 @subsection Creating a Message Queue
The @code{@value{DIRPREFIX}message_queue_create} directive creates a message 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 is effectively limited to the longest message which the MPCI is
capable of transmitting. 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 @subsection Obtaining Message Queue IDs
When a message queue is created, RTEMS generates a 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 directive. The queue ID is used by other message manager
directives to access this message queue. 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 @subsection Receiving a Message
The @code{@value{DIRPREFIX}message_queue_receive} directive attempts to 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 priority order. All tasks waiting on a message queue are
returned an error code when the message queue is deleted. 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 @subsection Sending a Message
Messages can be sent to a queue with the 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 message to a message queue which has a full queue of pending
messages. messages.
@ifinfo
@node Broadcasting a Message, Deleting a Message Queue, Sending a Message, Message Manager Operations
@end ifinfo
@subsection Broadcasting a Message @subsection Broadcasting a Message
The @code{@value{DIRPREFIX}message_queue_broadcast} directive sends the same 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 task's message buffer and each task is unblocked. The number of
tasks which were unblocked is returned to the caller. 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 @subsection Deleting a Message Queue
The @code{@value{DIRPREFIX}message_queue_delete} directive removes a message 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 message queue's name and ID are invalid. Any messages waiting
at the message queue are also deleted and deallocated. 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 @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 This section details the message manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection MESSAGE_QUEUE_CREATE - Create a queue
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -384,9 +297,6 @@ queues, is limited by the maximum_global_objects field in the
configuration table. configuration table.
@page @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 @subsection MESSAGE_QUEUE_IDENT - Get ID of a queue
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -444,9 +354,6 @@ nodes. It accesses only the local copy of the global object
table. table.
@page @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 @subsection MESSAGE_QUEUE_DELETE - Delete a queue
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -508,9 +415,6 @@ Proxies, used to represent remote tasks, are
reclaimed when the message queue is deleted. reclaimed when the message queue is deleted.
@page @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 @subsection MESSAGE_QUEUE_SEND - Put message at rear of a queue
@subheading CALLING SEQUENCE: @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. proxy used to represent the task is reclaimed.
@page @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 @subsection MESSAGE_QUEUE_URGENT - Put message at front of a queue
@subheading CALLING SEQUENCE: @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. proxy used to represent the task is reclaimed.
@page @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 @subsection MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
@subheading CALLING SEQUENCE: @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. proxy used to represent the task is reclaimed.
@page @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 @subsection MESSAGE_QUEUE_RECEIVE - Receive message from a queue
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -786,9 +681,6 @@ A clock tick is required to support the timeout functionality of
this directive. this directive.
@page @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 @subsection MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -831,9 +723,6 @@ the specified message queue.
@page @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 @subsection MESSAGE_QUEUE_FLUSH - Flush all messages on a queue
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -13,29 +13,8 @@
@c Figure 1-2 RTEMS Internal Architecture @c Figure 1-2 RTEMS Internal Architecture
@c @c
@ifinfo
@node Overview, Overview Introduction, Preface, Top
@end ifinfo
@chapter Overview @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 @section Introduction
RTEMS, Real-Time Executive for Multiprocessor Systems, is a 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 affect RTEMS is provided for each processor type that is
supported. supported.
@ifinfo
@node Overview Real-time Application Systems, Overview Real-time Executive, Overview Introduction, Overview
@end ifinfo
@section Real-time Application Systems @section Real-time Application Systems
Real-time application systems are a special class of 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 ramifications of multiple processors complicate each and every
characteristic of a real-time system. 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 @section Real-time Executive
Fortunately, real-time operating systems or real-time 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 time and cost required to develop sophisticated real-time
applications is significantly reduced. 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 @section RTEMS Application Architecture
One important design goal of RTEMS was to provide a One important design goal of RTEMS was to provide a
@@ -252,9 +222,6 @@ real-time projects.
@end html @end html
@end ifset @end ifset
@ifinfo
@node Overview RTEMS Internal Architecture, Overview User Customization and Extensibility, Overview RTEMS Application Architecture, Overview
@end ifinfo
@section RTEMS Internal Architecture @section RTEMS Internal Architecture
RTEMS can be viewed as a set of layered components that work in 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 @item multiprocessing
@end itemize @end itemize
@ifinfo
@node Overview User Customization and Extensibility, Overview Portability, Overview RTEMS Internal Architecture, Overview
@end ifinfo
@section User Customization and Extensibility @section User Customization and Extensibility
As thirty-two bit microprocessors have decreased in 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 features allow RTEMS to efficiently support as many environments
as possible. as possible.
@ifinfo
@node Overview Portability, Overview Memory Requirements, Overview User Customization and Extensibility, Overview
@end ifinfo
@section Portability @section Portability
The issue of portability was the major factor in the 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 applications which can be completely independent of a particular
microprocessor architecture. microprocessor architecture.
@ifinfo
@node Overview Memory Requirements, Overview Audience, Overview Portability, Overview
@end ifinfo
@section Memory Requirements @section Memory Requirements
Since memory is a critical resource in many real-time 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 Although RTEMS' data space must be in RAM, its code space can be
located in either ROM or RAM. located in either ROM or RAM.
@ifinfo
@node Overview Audience, Overview Conventions, Overview Memory Requirements, Overview
@end ifinfo
@section Audience @section Audience
This manual was written for experienced real-time 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 that the manual organization facilitates its use as a reference
document. document.
@ifinfo
@node Overview Conventions, Overview Manual Organization, Overview Audience, Overview
@end ifinfo
@section Conventions @section Conventions
The following conventions are used in this manual: 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. assumed to be in decimal format.
@end itemize @end itemize
@ifinfo
@node Overview Manual Organization, Key Concepts, Overview Conventions, Overview
@end ifinfo
@section Manual Organization @section Manual Organization
This first chapter has presented the introductory and This first chapter has presented the introductory and

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Partition Manager, Partition Manager Introduction, SIGNAL_SEND - Send signal set to a task, Top
@end ifinfo
@chapter Partition Manager @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 @section Introduction
The partition manager provides facilities to 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 @item @code{@value{DIRPREFIX}partition_return_buffer} - Return buffer to a partition
@end itemize @end itemize
@ifinfo
@node Partition Manager Background, Partition Manager Definitions, Partition Manager Introduction, Partition Manager
@end ifinfo
@section Background @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 @subsection Partition Manager Definitions
A partition is a physically contiguous memory area 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 buffer could destroy the free buffer chain or the contents of an
adjacent allocated buffer. 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 @subsection Building a Partition's Attribute Set
In general, an attribute set is built by a bitwise OR 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 @code{@value{RPREFIX}GLOBAL} to indicate that the partition
is to be known globally. 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 @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 @subsection Creating a Partition
The @code{@value{DIRPREFIX}partition_create} directive creates 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 specified partition length and buffer size, and returned to the
calling task along with a unique partition ID. 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 @subsection Obtaining Partition IDs
When a partition is created, RTEMS generates a unique 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 directive. The partition ID is used by other partition manager directives
to access this partition. to access this partition.
@ifinfo
@node Acquiring a Buffer, Releasing a Buffer, Obtaining Partition IDs, Partition Manager Operations
@end ifinfo
@subsection Acquiring a Buffer @subsection Acquiring a Buffer
A buffer can be obtained by calling the 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 to the caller. Tasks cannot block to wait for a buffer to
become available. become available.
@ifinfo
@node Releasing a Buffer, Deleting a Partition, Acquiring a Buffer, Partition Manager Operations
@end ifinfo
@subsection Releasing a Buffer @subsection Releasing a Buffer
Buffers are returned to a partition's free 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 directive returns an error status code if the returned buffer
was not previously allocated from this partition. 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 @subsection Deleting a Partition
The @code{@value{DIRPREFIX}partition_delete} directive allows a partition to 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 A partition with buffers still allocated cannot be deleted. Any
task attempting to do so will be returned an error status code. 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 @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 This section details the partition manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection PARTITION_CREATE - Create a partition
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -281,9 +210,6 @@ partitions, is limited by the maximum_global_objects field in
the Configuration Table. the Configuration Table.
@page @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 @subsection PARTITION_IDENT - Get ID of a partition
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -341,9 +267,6 @@ nodes. It accesses only the local copy of the global object
table. table.
@page @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 @subsection PARTITION_DELETE - Delete a partition
@subheading CALLING SEQUENCE: @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. the partition was created with the @code{@value{RPREFIX}GLOBAL} option.
@page @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 @subsection PARTITION_GET_BUFFER - Get buffer from a partition
@subheading CALLING SEQUENCE: @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. remote node to allocate a buffer from the specified partition.
@page @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 @subsection PARTITION_RETURN_BUFFER - Return buffer to a partition
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Region Manager, Region Manager Introduction, PARTITION_RETURN_BUFFER - Return buffer to a partition, Top
@end ifinfo
@chapter Region Manager @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 @section Introduction
The region manager provides facilities to dynamically 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 @item @code{@value{DIRPREFIX}region_get_segment_size} - Obtain size of a segment
@end itemize @end itemize
@ifinfo
@node Region Manager Background, Region Manager Definitions, Region Manager Introduction, Region Manager
@end ifinfo
@section Background @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 @subsection Region Manager Definitions
A region makes up a physically contiguous memory 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 coalesced with its neighbors (if free) on both sides to produce
the largest possible unused block. 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 @subsection Building an Attribute Set
In general, an attribute set is built by a bitwise OR 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} @code{@value{DIRPREFIX}region_create}
directive should be @code{@value{RPREFIX}PRIORITY}. 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 @subsection Building an Option Set
In general, an option is built by a bitwise OR of the 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 @code{@value{DIRPREFIX}region_get_segment} directive should
be @code{@value{RPREFIX}NO_WAIT}. be @code{@value{RPREFIX}NO_WAIT}.
@ifinfo
@node Region Manager Operations, Creating a Region, Building an Option Set, Region Manager
@end ifinfo
@section Operations @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 @subsection Creating a Region
The @code{@value{DIRPREFIX}region_create} directive creates a region with the 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 in the region dynamically changes. Therefore, the total
overhead required by RTEMS dynamically changes. 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 @subsection Obtaining Region IDs
When a region is created, RTEMS generates a unique 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 The region ID is used by other region manager directives to
access this region. 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 @subsection Adding Memory to a Region
The @code{@value{DIRPREFIX}region_extend} directive may be used to add memory 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 the memory being added in relation to memory already in the
region. region.
@ifinfo
@node Acquiring a Segment, Releasing a Segment, Adding Memory to a Region, Region Manager Operations
@end ifinfo
@subsection Acquiring a Segment @subsection Acquiring a Segment
The @code{@value{DIRPREFIX}region_get_segment} directive attempts to acquire 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 order. All tasks waiting on a region are returned an error when
the message queue is deleted. 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 @subsection Releasing a Segment
When a segment is returned to a region by the 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 segment and unblocked. This process is repeated until the first
task's segment request cannot be satisfied. 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 @subsection Obtaining the Size of a Segment
The @code{@value{DIRPREFIX}region_get_segment_size} directive returns the 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 includes any "extra" memory included in the segment because of
rounding up to a page size boundary. 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 @subsection Deleting a Region
A region can be removed from the system and returned 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 to obtain a segment from the region will be readied and returned
a status code which indicates that the region was deleted. 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 @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. This section details the region manager's directives.
A subsection is dedicated to each of this 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. and status codes.
@page @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 @subsection REGION_CREATE - Create a region
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -378,9 +293,6 @@ by RTEMS:
@end itemize @end itemize
@page @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 @subsection REGION_IDENT - Get ID of a region
@subheading CALLING SEQUENCE: @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. This directive will not cause the running task to be preempted.
@page @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 @subsection REGION_DELETE - Delete a region
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -469,9 +378,6 @@ created the region. Any local task that knows the region id can
delete the region. delete the region.
@page @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 @subsection REGION_EXTEND - Add memory to a region
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -517,9 +423,6 @@ created the region. Any local task that knows the region id can
extend the region. extend the region.
@page @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 @subsection REGION_GET_SEGMENT - Get segment from a region
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -607,9 +510,6 @@ A clock tick is required to support the timeout functionality of
this directive. this directive.
@page @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 @subsection REGION_RETURN_SEGMENT - Return segment to a region
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -663,9 +563,6 @@ is less than or equal to the size of the segment returned.
@end itemize @end itemize
@page @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 @subsection REGION_GET_SEGMENT_SIZE - Obtain size of a segment
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -12,22 +12,8 @@
@c - use math mode to print formulas @c - use math mode to print formulas
@c @c
@ifinfo
@node Rate Monotonic Manager, Rate Monotonic Manager Introduction, Scheduling Concepts Task State Transitions, Top
@end ifinfo
@chapter Rate Monotonic Manager @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 @section Introduction
The rate monotonic manager provides facilities to 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 @item @code{@value{DIRPREFIX}rate_monotonic_get_status} - Obtain status information on period
@end itemize @end itemize
@ifinfo
@node Rate Monotonic Manager Background, Rate Monotonic Manager Required Support, Rate Monotonic Manager Introduction, Rate Monotonic Manager
@end ifinfo
@section Background @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 The rate monotonic manager provides facilities to
manage the execution of periodic tasks. This manager was 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 systems, the services provided by the rate monotonic manager may
be used by any application which requires periodic tasks. 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 @subsection Rate Monotonic Manager Required Support
A clock tick is required to support the functionality provided by this manager. 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 @subsection Rate Monotonic Manager Definitions
A periodic task is one which must be executed at a 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, insures a minimum time period between successive activations,
but the missile must be launched by a hard deadline. 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 @subsection Rate Monotonic Scheduling Algorithm
The Rate Monotonic Scheduling Algorithm (RMS) is 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, non-critical tasks, it is not necessary. In this instance,
schedulability is only guaranteed for the critical task set. schedulability is only guaranteed for the critical task set.
@ifinfo
@node Schedulability Analysis, Assumptions, Rate Monotonic Scheduling Algorithm, Rate Monotonic Manager Background
@end ifinfo
@subsection Schedulability Analysis @subsection Schedulability Analysis
RMS allows application designers to insure that tasks RMS allows application designers to insure that tasks
@@ -247,9 +203,6 @@ proven schedulability analysis rules.
@lowersections @lowersections
@ifinfo
@node Assumptions, Processor Utilization Rule, Schedulability Analysis, Rate Monotonic Manager Background
@end ifinfo
@subsection Assumptions @subsection Assumptions
The schedulability analysis rules for RMS were 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 some of the above assumptions can be relaxed and the
side-effects accounted for. side-effects accounted for.
@ifinfo
@node Processor Utilization Rule, Processor Utilization Rule Example, Assumptions, Rate Monotonic Manager Background
@end ifinfo
@subsection Processor Utilization Rule @subsection Processor Utilization Rule
The Processor Utilization Rule requires that 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 utilization threshold for a randomly generated task set is
approximately 0.88. 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 @subsection Processor Utilization Rule Example
This example illustrates the application of the 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, 0.779, imposed by the Processor Utilization Rule. Therefore,
this task set is guaranteed to be schedulable using RMS. 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 @subsection First Deadline Rule
If a given set of tasks do exceed the processor 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 compete for execution time at the same instant -- when the user
initialization task deletes itself. 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 @subsection First Deadline Rule Example
The First Deadline Rule can insure schedulability 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 at time 200, and the task set is schedulable using the First
Deadline Rule. Deadline Rule.
@ifinfo
@node Relaxation of Assumptions, Further Reading, First Deadline Rule Example, Rate Monotonic Manager Background
@end ifinfo
@subsection Relaxation of Assumptions @subsection Relaxation of Assumptions
The assumptions used to develop the RMS 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 time of each task must be accounted for in the schedulability
analysis. analysis.
@ifinfo
@node Further Reading, Rate Monotonic Manager Operations, Relaxation of Assumptions, Rate Monotonic Manager Background
@end ifinfo
@subsection Further Reading @subsection Further Reading
For more information on Rate Monotonic Scheduling and For more information on Rate Monotonic Scheduling and
@@ -674,26 +609,8 @@ review." @b{Software Engineering Journal}. May 1991. pp. 116-128.}
@raisesections @raisesections
@ifinfo
@node Rate Monotonic Manager Operations, Creating a Rate Monotonic Period, Further Reading, Rate Monotonic Manager
@end ifinfo
@section Operations @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 @subsection Creating a Rate Monotonic Period
The @code{@value{DIRPREFIX}rate_monotonic_create} directive creates a rate 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 other rate monotonic manager directives to access this rate
monotonic period. 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 @subsection Manipulating a Period
The @code{@value{DIRPREFIX}rate_monotonic_period} directive is used to The @code{@value{DIRPREFIX}rate_monotonic_period} directive is used to
@@ -734,9 +648,6 @@ returns immediately with a timeout error status.
@end itemize @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 @subsection Obtaining a Period's Status
If the @code{@value{DIRPREFIX}rate_monotonic_period} directive is invoked 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 Obtaining the status of a rate monotonic period does
not alter the state or length of that period. 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 @subsection Canceling a Period
The @code{@value{DIRPREFIX}rate_monotonic_cancel} directive is used to stop 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 The period is stopped and the rate monotonic period can be
reinitiated using the @code{@value{DIRPREFIX}rate_monotonic_period} directive. 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 @subsection Deleting a Rate Monotonic Period
The @code{@value{DIRPREFIX}rate_monotonic_delete} directive is used to delete 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 list when it is deleted. A rate monotonic period can be deleted
by a task other than the task which created the period. 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 @subsection Examples
The following sections illustrate common uses of rate The following sections illustrate common uses of rate
monotonic periods to construct periodic tasks. 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 @subsection Simple Periodic Task
This example consists of a single 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 If the above task misses its deadline, it will delete the rate
monotonic period and itself. 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 @subsection Task with Multiple Periods
This example consists of a single periodic task 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 directive status. If the above task misses its deadline, it
will delete the rate monotonic periods and itself. 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 @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 This section details the rate monotonic manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection RATE_MONOTONIC_CREATE - Create a rate monotonic period
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -992,9 +872,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection RATE_MONOTONIC_IDENT - Get ID of a period
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1037,9 +914,6 @@ This directive will not cause the running task to be
preempted. preempted.
@page @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 @subsection RATE_MONOTONIC_CANCEL - Cancel a period
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1081,9 +955,6 @@ The rate monotonic period specified by id must have
been created by the calling task. been created by the calling task.
@page @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 @subsection RATE_MONOTONIC_DELETE - Delete a rate monotonic period
@subheading CALLING SEQUENCE: @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. other than the task which created the period.
@page @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 @subsection RATE_MONOTONIC_PERIOD - Conclude current/Start next period
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1178,9 +1046,6 @@ This directive will not cause the running task to be preempted.
--------------------- ---------------------
@page @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 @subsection RATE_MONOTONIC_GET_STATUS - Obtain status information on period
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -11,21 +11,8 @@
@c Figure 17-1 RTEMS Task State Transitions @c Figure 17-1 RTEMS Task State Transitions
@c @c
@ifinfo
@node Scheduling Concepts, Scheduling Concepts Introduction, FATAL_ERROR_OCCURRED - Invoke the fatal error handler, Top
@end ifinfo
@chapter Scheduling Concepts @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 @section Introduction
The concept of scheduling in real-time systems 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 the second method to guarantee faster response times to external
events. events.
@ifinfo
@node Scheduling Concepts Scheduling Mechanisms, Task Priority and Scheduling, Scheduling Concepts Introduction, Scheduling Concepts
@end ifinfo
@section Scheduling Mechanisms @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 RTEMS provides four mechanisms which allow the user
to impact the task scheduling process: 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 occur as required, overriding the other factors presented in the
description. description.
@ifinfo
@node Task Priority and Scheduling, Preemption, Scheduling Concepts Scheduling Mechanisms, Scheduling Concepts Scheduling Mechanisms
@end ifinfo
@subsection Task Priority and Scheduling @subsection Task Priority and Scheduling
The most significant of these mechanisms is the 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.} to a task.}
@end itemize @end itemize
@ifinfo
@node Preemption, Timeslicing, Task Priority and Scheduling, Scheduling Concepts Scheduling Mechanisms
@end ifinfo
@subsection Preemption @subsection Preemption
Another way the user can alter the basic scheduling 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 which a task is scheduled. It only applies once a task has
control of the processor. control of the processor.
@ifinfo
@node Timeslicing, Manual Round-Robin, Preemption, Scheduling Concepts Scheduling Mechanisms
@end ifinfo
@subsection Timeslicing @subsection Timeslicing
Timeslicing or round-robin scheduling is an 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 soon as it is ready to run, even if the task has not used up its
entire timeslice. entire timeslice.
@ifinfo
@node Manual Round-Robin, Dispatching Tasks, Timeslicing, Scheduling Concepts Scheduling Mechanisms
@end ifinfo
@subsection Manual Round-Robin @subsection Manual Round-Robin
The final mechanism for altering the RTEMS scheduling 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 priority are ready to run, then the task does not lose control
of the processor. of the processor.
@ifinfo
@node Dispatching Tasks, Scheduling Concepts Task State Transitions, Manual Round-Robin, Scheduling Concepts Scheduling Mechanisms
@end ifinfo
@subsection Dispatching Tasks @subsection Dispatching Tasks
The dispatcher is the RTEMS component responsible for 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 when a @code{@value{RPREFIX}FLOATING_POINT} task is dispatched and that task was not
the last task to utilize the coprocessor. 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 @section Task State Transitions
Tasks in an RTEMS system must always be in one of the Tasks in an RTEMS system must always be in one of the

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Semaphore Manager, Semaphore Manager Introduction, TIMER_RESET - Reset an interval timer, Top
@end ifinfo
@chapter Semaphore Manager @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 @section Introduction
The semaphore manager utilizes standard Dijkstra The semaphore manager utilizes standard Dijkstra
@@ -37,20 +23,7 @@ semaphore manager are:
@item @code{@value{DIRPREFIX}semaphore_release} - Release a semaphore @item @code{@value{DIRPREFIX}semaphore_release} - Release a semaphore
@end itemize @end itemize
@ifinfo
@node Semaphore Manager Background, Nested Resource Access, Semaphore Manager Introduction, Semaphore Manager
@end ifinfo
@section Background @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 A semaphore can be viewed as a protected variable
whose value can be modified only with the 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 operation when it reaches its synchronization point, thus unblocking
the pending task. the pending task.
@ifinfo
@node Nested Resource Access, Priority Inversion, Semaphore Manager Background, Semaphore Manager Background
@end ifinfo
@subsection Nested Resource Access @subsection Nested Resource Access
Deadlock occurs when a task owning a binary semaphore 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}. a @code{@value{DIRPREFIX}semaphore_release}.
@ifinfo
@node Priority Inversion, Priority Inheritance, Nested Resource Access, Semaphore Manager Background
@end ifinfo
@subsection Priority Inversion @subsection Priority Inversion
Priority inversion is a form of indefinite 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 that resource. The high priority task is effectively prevented
from executing by lower priority tasks. from executing by lower priority tasks.
@ifinfo
@node Priority Inheritance, Priority Ceiling, Priority Inversion, Semaphore Manager Background
@end ifinfo
@subsection Priority Inheritance @subsection Priority Inheritance
Priority inheritance is an algorithm that calls for 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 releases ALL of the binary semaphores it holds will its priority
be restored to the normal value. 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 @subsection Priority Ceiling
Priority ceiling is an algorithm that calls for the 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 releases ALL of the binary semaphores it holds will its priority
be restored to the normal value. 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 @subsection Building a Semaphore's Attribute Set
In general, an attribute set is built by a bitwise OR 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 attribute_set parameter would be
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}. @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 @subsection Building a SEMAPHORE_OBTAIN Option Set
In general, an option is built by a bitwise OR of the 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} @code{@value{DIRPREFIX}semaphore_obtain}
directive should be @code{@value{RPREFIX}NO_WAIT}. 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 @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 @subsection Creating a Semaphore
The @code{@value{DIRPREFIX}semaphore_create} directive creates a binary or 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 RTEMS to manage the newly created semaphore. Also, a unique
semaphore ID is generated and returned to the calling task. 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 @subsection Obtaining Semaphore IDs
When a semaphore is created, RTEMS generates a unique 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 used by other semaphore manager directives to access this
semaphore. semaphore.
@ifinfo
@node Acquiring a Semaphore, Releasing a Semaphore, Obtaining Semaphore IDs, Semaphore Manager Operations
@end ifinfo
@subsection Acquiring a Semaphore @subsection Acquiring a Semaphore
The @code{@value{DIRPREFIX}semaphore_obtain} directive is used to acquire the 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 greater than that of the holder, then the holder's priority will
be elevated. be elevated.
@ifinfo
@node Releasing a Semaphore, Deleting a Semaphore, Acquiring a Semaphore, Semaphore Manager Operations
@end ifinfo
@subsection Releasing a Semaphore @subsection Releasing a Semaphore
The @code{@value{DIRPREFIX}semaphore_release} directive is used to release 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} then the task performing the @code{@value{DIRPREFIX}semaphore_release}
will have its priority restored to its normal value. 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 @subsection Deleting a Semaphore
The @code{@value{DIRPREFIX}semaphore_delete} directive removes 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 indicates that the semaphore was deleted. Any subsequent
references to the semaphore's name and ID are invalid. 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 @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 This section details the semaphore manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection SEMAPHORE_CREATE - Create a semaphore
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -549,9 +462,6 @@ semaphores, is limited by the maximum_global_objects field in
the Configuration Table. the Configuration Table.
@page @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 @subsection SEMAPHORE_IDENT - Get ID of a semaphore
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -609,9 +519,6 @@ nodes. It accesses only the local copy of the global object
table. table.
@page @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 @subsection SEMAPHORE_DELETE - Delete a semaphore
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -670,9 +577,6 @@ Proxies, used to represent remote tasks, are
reclaimed when the semaphore is deleted. reclaimed when the semaphore is deleted.
@page @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 @subsection SEMAPHORE_OBTAIN - Acquire a semaphore
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -762,9 +666,6 @@ A clock tick is required to support the timeout functionality of
this directive. this directive.
@page @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 @subsection SEMAPHORE_RELEASE - Release a semaphore
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Signal Manager, Signal Manager Introduction, EVENT_RECEIVE - Receive event condition, Top
@end ifinfo
@chapter Signal Manager @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 @section Introduction
The signal manager provides the capabilities required 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 @item @code{@value{DIRPREFIX}signal_send} - Send signal set to a task
@end itemize @end itemize
@ifinfo
@node Signal Manager Background, Signal Manager Definitions, Signal Manager Introduction, Signal Manager
@end ifinfo
@section Background @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 @subsection Signal Manager Definitions
The signal manager allows a task to optionally define 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. 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 @subsection A Comparison of ASRs and ISRs
The format of an ASR is similar to that of an ISR 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. result, does not have a task mode.
@end itemize @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 @subsection Building a Signal Set
A signal set is built by a bitwise OR of the desired 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} @code{@value{RPREFIX}SIGNAL_6 @value{OR}
@value{RPREFIX}SIGNAL_15 @value{OR} @value{RPREFIX}SIGNAL_31}. @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 @subsection Building an ASR's Mode
In general, an ASR's mode is built by a bitwise OR of In general, an ASR's mode is built by a bitwise OR of
@@ -171,21 +134,8 @@ be set to
to indicate the to indicate the
desired processor mode and interrupt level. 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 @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 @subsection Establishing an ASR
The @code{@value{DIRPREFIX}signal_catch} directive establishes an ASR for the 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, execution mode, but if signal processing is enabled for the ASR,
the ASR must be reentrant. 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 @subsection Sending a Signal Set
The @code{@value{DIRPREFIX}signal_send} directive allows both 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 for the task), has the same result as sending that signal to
that task once. that task once.
@ifinfo
@node Processing an ASR, Signal Manager Directives, Sending a Signal Set, Signal Manager Operations
@end ifinfo
@subsection Processing an ASR @subsection Processing an ASR
Asynchronous signals were designed to provide the 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 path of the interrupted task (or ASR) is restored to the context
prior to entering the ASR. prior to entering the ASR.
@ifinfo
@node Signal Manager Directives, SIGNAL_CATCH - Establish an ASR, Processing an ASR, Signal Manager
@end ifinfo
@section Directives @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. This section details the signal manager's directives.
A subsection is dedicated to each of this 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. and status codes.
@page @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 @subsection SIGNAL_CATCH - Establish an ASR
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -370,9 +302,6 @@ The following task mode constants are defined by RTEMS:
@end itemize @end itemize
@page @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 @subsection SIGNAL_SEND - Send signal set to a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,24 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Task Manager, Task Manager Introduction, SHUTDOWN_EXECUTIVE - Shutdown RTEMS, Top
@end ifinfo
@chapter Task Manager @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 @section Introduction
The task manager provides a comprehensive set of directives to 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 @item @code{@value{DIRPREFIX}task_wake_when} - Wake up when specified
@end itemize @end itemize
@ifinfo
@node Task Manager Background, Task Definition, Task Manager Introduction, Task Manager
@end ifinfo
@section Background @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 @subsection Task Definition
Many definitions of a task have been proposed in computer literature. 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 task is manifested by the existence of a task control block
(TCB). (TCB).
@ifinfo
@node Task Control Block, Task States, Task Definition, Task Manager Background
@end ifinfo
@subsection Task Control Block @subsection Task Control Block
The Task Control Block (TCB) is an RTEMS defined data structure 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 state of the task is restored from the starting context area in
the task's TCB. the task's TCB.
@ifinfo
@node Task States, Task Priority, Task Control Block, Task Manager Background
@end ifinfo
@subsection Task States @subsection Task States
A task may exist in one of the following five 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 scheduling algorithm. The scheduling of a task is based on its
current state and priority. current state and priority.
@ifinfo
@node Task Priority, Task Mode, Task States, Task Manager Background
@end ifinfo
@subsection Task Priority @subsection Task Priority
A task's priority determines its importance in relation to the 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 logical priority of a task, the more likely it is to receive
processor execution time. processor execution time.
@ifinfo
@node Task Mode, Accessing Task Arguments, Task Priority, Task Manager Background
@end ifinfo
@subsection Task Mode @subsection Task Mode
A task's mode is a combination of the following four components: 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 @item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} - execute at interrupt level n
@end itemize @end itemize
@ifinfo
@node Accessing Task Arguments, Floating Point Considerations, Task Mode, Task Manager Background
@end ifinfo
@subsection Accessing Task Arguments @subsection Accessing Task Arguments
All RTEMS tasks are invoked with a single argument which is 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 Application tasks requiring more information may view this
single argument as an index into an array of parameter blocks. 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 @subsection Floating Point Considerations
Creating a task with the @code{@value{RPREFIX}FLOATING_POINT} flag results 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 task attempting to access the floating point unit is CPU dependent but will
generally result in an exception condition. 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 @subsection Building a Task's Attribute Set
In general, an attribute set is built by a bitwise OR of the 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 coprocessor, then the attribute_set parameter would be
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}FLOATING_POINT}. @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 @subsection Building a Mode and Mask
In general, a mode and its corresponding mask is built by a 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 @value{RPREFIX}NO_PREEMPT_MASK} to indicate that the calling task's
interrupt level and preemption mode are being altered. 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 @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 @subsection Creating Tasks
The @code{@value{DIRPREFIX}task_create} 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 are initially placed in the dormant state. All RTEMS tasks
execute in the most privileged mode of the processor. 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 @subsection Obtaining Task IDs
When a task is created, RTEMS generates a unique task ID and 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 directive. The task ID is
used by other directives to manipulate this task. 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 @subsection Starting and Restarting Tasks
The @code{@value{DIRPREFIX}task_start} 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 previously been started (i.e. dormant tasks cannot be
restarted). All restarted tasks are placed in the ready state. 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 @subsection Suspending and Resuming Tasks
The @code{@value{DIRPREFIX}task_suspend} 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 Suspending a task which is already suspended or resuming a
task which is not suspended is considered an error. 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 @subsection Delaying the Currently Executing Task
The @code{@value{DIRPREFIX}task_wake_after} directive creates a sleep timer 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 calling task is blocked until the specified date and time has
occurred, at which time the task is unblocked. 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 @subsection Changing Task Priority
The @code{@value{DIRPREFIX}task_set_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 directive resets the priority of a task to its
original value. original value.
@ifinfo
@node Changing Task Mode, Notepad Locations, Changing Task Priority, Task Manager Operations
@end ifinfo
@subsection Changing Task Mode @subsection Changing Task Mode
The @code{@value{DIRPREFIX}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 directive resets the mode of a task to its
original value. original value.
@ifinfo
@node Notepad Locations, Task Deletion, Changing Task Mode, Task Manager Operations
@end ifinfo
@subsection Notepad Locations @subsection Notepad Locations
RTEMS provides sixteen notepad locations for each task. Each 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 directive allows the user to obtain the note
contained in any one of the sixteen notepads of a specified task. 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 @subsection Task Deletion
RTEMS provides the @code{@value{DIRPREFIX}task_delete} 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 or signal, or by restarting the task with special arguments
which instruct the task to delete itself. 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 @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 This section details the task manager's directives. A
subsection is dedicated to each of this manager's directives and subsection is dedicated to each of this manager's directives and
describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage, and
@@ -723,9 +593,6 @@ status codes.
@page @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 @subsection TASK_CREATE - Create a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -835,9 +702,6 @@ by the maximum_global_objects field in the Configuration Table.
@page @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 @subsection TASK_IDENT - Get ID of a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -893,9 +757,6 @@ accesses only the local copy of the global object table.
@page @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 @subsection TASK_START - Start a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -945,9 +806,6 @@ the @code{@value{DIRPREFIX}task_start} directive.
@page @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 @subsection TASK_RESTART - Restart a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1009,9 +867,6 @@ created with the @code{@value{RPREFIX}GLOBAL} option.
@page @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 @subsection TASK_DELETE - Delete a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1068,9 +923,6 @@ created with the @code{@value{RPREFIX}GLOBAL} option.
@page @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 @subsection TASK_SUSPEND - Suspend a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1119,9 +971,6 @@ If the task specified by id is already suspended, then the
@page @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 @subsection TASK_RESUME - Resume a task
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1167,9 +1016,6 @@ If the task specified by id is not suspended, then the
@page @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 @subsection TASK_SET_PRIORITY - Set task priority
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1231,9 +1077,6 @@ binary semaphores.
@page @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 @subsection TASK_MODE - Change current task's mode
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1388,9 +1231,6 @@ mask constant is provided in the following table:
@page @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 @subsection TASK_GET_NOTE - Get task notepad entry
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1443,9 +1283,6 @@ the notepad entry of the specified task.
@page @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 @subsection TASK_SET_NOTE - Set task notepad entry
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1498,9 +1335,6 @@ node to set the specified notepad entry.
@page @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 @subsection TASK_WAKE_AFTER - Wake up after interval
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -1545,9 +1379,6 @@ A clock tick is required to support the functionality of this directive.
@page @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 @subsection TASK_WAKE_WHEN - Wake up when specified
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node Timer Manager, Timer Manager Introduction, CLOCK_TICK - Announce a clock tick, Top
@end ifinfo
@chapter Timer Manager @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 @section Introduction
The timer manager provides support for timer The timer manager provides support for timer
@@ -38,28 +24,12 @@ facilities. The directives provided by the timer manager are:
@end itemize @end itemize
@ifinfo
@node Timer Manager Background, Timer Manager Required Support, Timer Manager Introduction, Timer Manager
@end ifinfo
@section Background @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 @subsection Required Support
A clock tick is required to support the functionality provided by this manager. 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 @subsection Timers
A timer is an RTEMS object which allows the 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 has failed to reach a reset point. This use of a timer is
sometimes referred to as a "keep alive" or a "deadman" timer. 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 @subsection Timer Service Routines
The timer service routine should adhere to @value{LANGUAGE} calling 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 user-defined information which may be utilized by the timer
service routine. The argument user_data may be NULL. 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 @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 @subsection Creating a Timer
The @code{@value{DIRPREFIX}timer_create} directive creates a timer by 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 timers do not have a timer service routine associated with them
and are not active. 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 @subsection Obtaining Timer IDs
When a timer is created, RTEMS generates a unique 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 @code{@value{DIRPREFIX}timer_ident} directive. The timer ID
is used by other directives to manipulate this timer. 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 @subsection Initiating an Interval Timer
The @code{@value{DIRPREFIX}timer_fire_after} directive initiates a timer to 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 elapsed, the timer service routine will be invoked from the
@code{@value{DIRPREFIX}clock_tick} directive. @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 @subsection Initiating a Time of Day Timer
The @code{@value{DIRPREFIX}timer_fire_when} directive initiates a timer to 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 the timer service routine will be invoked from the
@code{@value{DIRPREFIX}clock_tick} directive. @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 @subsection Canceling a Timer
The @code{@value{DIRPREFIX}timer_cancel} directive is used to halt the 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_after}, and
@code{@value{DIRPREFIX}timer_fire_when} directives. @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 @subsection Resetting a Timer
The @code{@value{DIRPREFIX}timer_reset} directive is used to restore an 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 returned. The timer service routine is not changed or
fired by this directive. fired by this directive.
@ifinfo
@node Deleting a Timer, Timer Manager Directives, Resetting a Timer, Timer Manager Operations
@end ifinfo
@subsection Deleting a Timer @subsection Deleting a Timer
The @code{@value{DIRPREFIX}timer_delete} directive is used to delete 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. deleted by a task other than the task which created the timer.
Any subsequent references to the timer's name and ID are invalid. 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 @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. This section details the timer manager's directives.
A subsection is dedicated to each of this 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. and status codes.
@page @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 @subsection TIMER_CREATE - Create a timer
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -280,9 +195,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection TIMER_IDENT - Get ID of a timer
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -325,9 +237,6 @@ This directive will not cause the running task to be
preempted. preempted.
@page @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 @subsection TIMER_CANCEL - Cancel a timer
@subheading CALLING SEQUENCE: @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. This directive will not cause the running task to be preempted.
@page @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 @subsection TIMER_DELETE - Delete a timer
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -408,9 +314,6 @@ A timer can be deleted by a task other than the task
which created the timer. which created the timer.
@page @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 @subsection TIMER_FIRE_AFTER - Fire timer after interval
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -458,9 +361,6 @@ This directive will not cause the running task to be
preempted. preempted.
@page @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 @subsection TIMER_FIRE_WHEN - Fire timer when specified
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -509,9 +409,6 @@ This directive will not cause the running task to be
preempted. preempted.
@page @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 @subsection TIMER_RESET - Reset an interval timer
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:

View File

@@ -6,22 +6,8 @@
@c $Id$ @c $Id$
@c @c
@ifinfo
@node User Extensions Manager, User Extensions Manager Introduction, Heterogeneous Systems, Top
@end ifinfo
@chapter User Extensions Manager @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 @section Introduction
The RTEMS User Extensions Manager allows the The RTEMS User Extensions Manager allows the
@@ -36,27 +22,7 @@ manager are:
@item @code{@value{DIRPREFIX}extension_delete} - Delete an extension set @item @code{@value{DIRPREFIX}extension_delete} - Delete an extension set
@end itemize @end itemize
@ifinfo
@node User Extensions Manager Background, Extension Sets, User Extensions Manager Introduction, User Extensions Manager
@end ifinfo
@section Background @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 User extension routines are invoked when the
following system events occur: following system events occur:
@@ -76,9 +42,6 @@ following system events occur:
These extensions are invoked as a function with These extensions are invoked as a function with
arguments that are appropriate to the system event. 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 @subsection Extension Sets
An extension set is defined as a set of routines 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 All user extensions are optional and RTEMS places no
naming restrictions on the user. naming restrictions on the user.
@ifinfo
@node TCB Extension Area, Extensions, Extension Sets, User Extensions Manager Background
@end ifinfo
@subsection TCB Extension Area @subsection TCB Extension Area
RTEMS provides for a pointer to a user-defined data 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 use the partition manager's allocation and deallocation
directives to obtain and release the extension buffers. 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 @subsection Extensions
The sections that follow will contain a description 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 the examples were arbitrarily chosen and impose no naming
conventions on the user. conventions on the user.
@ifinfo
@node TASK_CREATE Extension, TASK_START Extension, Extensions, User Extensions Manager Background
@end ifinfo
@subsection TASK_CREATE Extension @subsection TASK_CREATE Extension
The TASK_CREATE extension directly corresponds to the 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 completely initialized, but before it is placed on a ready TCB
chain. chain.
@ifinfo
@node TASK_START Extension, TASK_RESTART Extension, TASK_CREATE Extension, User Extensions Manager Background
@end ifinfo
@subsection TASK_START Extension @subsection TASK_START Extension
The TASK_START extension directly corresponds to the 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 started_task has been made ready to start execution, but before
it is placed on a ready TCB chain. 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 @subsection TASK_RESTART Extension
The TASK_RESTART extension directly corresponds to 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 been made ready to start execution, but before it is placed on a
ready TCB chain. ready TCB chain.
@ifinfo
@node TASK_DELETE Extension, TASK_SWITCH Extension, TASK_RESTART Extension, User Extensions Manager Background
@end ifinfo
@subsection TASK_DELETE Extension @subsection TASK_DELETE Extension
The TASK_DELETE extension is associated with the 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 pools. This extension should not call any RTEMS directives if a
task is deleting itself (current_task is equal to deleted_task). 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 @subsection TASK_SWITCH Extension
The TASK_SWITCH extension corresponds to a task 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 been restored. This extension should not call any RTEMS
directives. directives.
@ifinfo
@node TASK_POST_SWITCH Extension, TASK_BEGIN Extension, TASK_SWITCH Extension, User Extensions Manager Background
@end ifinfo
@subsection TASK_POST_SWITCH Extension @subsection TASK_POST_SWITCH Extension
The TASK_POST_SWITCH extension corresponds to a task 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 context has been restored and the extension runs in the context
of the current_task. 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 @subsection TASK_BEGIN Extension
The TASK_BEGIN extension is invoked when a task 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 of the task performing the task_start directive. For most
extensions, this is not a critical distinction. 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 @subsection TASK_EXITTED Extension
The TASK_EXITTED extension is invoked when a task 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 @lowersections
@ifinfo
@node FATAL Error Extension, Order of Invocation, TASK_EXITTED Extension, User Extensions Manager Background
@end ifinfo
@subsection FATAL Error Extension @subsection FATAL Error Extension
The FATAL error extension is associated with the The FATAL error extension is associated with the
@@ -544,9 +474,6 @@ This extension should not call any RTEMS directives.
@raisesections @raisesections
@ifinfo
@node Order of Invocation, User Extensions Manager Operations, FATAL Error Extension, User Extensions Manager Background
@end ifinfo
@subsection Order of Invocation @subsection Order of Invocation
When one of the critical system events occur, the 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 utilize the C Library because the C Library's TASK_DELETE
extension is invoked after that of the other extensions. 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 @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 @subsection Creating an Extension Set
The @code{@value{DIRPREFIX}extension_create} directive creates and installs 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 are immediately installed and are invoked upon the next system
even supporting an extension. 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 @subsection Obtaining Extension Set IDs
When an extension set is created, RTEMS generates a 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 directive. The extension set ID is used by other directives
to manipulate this extension set. 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 @subsection Deleting an Extension Set
The @code{@value{DIRPREFIX}extension_delete} directive is used to delete an 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 extension set. Any subsequent references to the extension's
name and ID are invalid. 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 @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 This section details the user extension manager's
directives. A subsection is dedicated to each of this 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. constants, usage, and status codes.
@page @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 @subsection EXTENSION_CREATE - Create a extension set
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -709,9 +604,6 @@ This directive will not cause the calling task to be
preempted. preempted.
@page @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 @subsection EXTENSION_IDENT - Get ID of a extension set
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE:
@@ -755,9 +647,6 @@ This directive will not cause the running task to be
preempted. preempted.
@page @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 @subsection EXTENSION_DELETE - Delete a extension set
@subheading CALLING SEQUENCE: @subheading CALLING SEQUENCE: