mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-28 23:40:15 +00:00
Attempting to add variable so that in C all constants start with RTEMS_
and all directives start with rtems_.
This commit is contained in:
@@ -45,6 +45,7 @@ END-INFO-DIR-ENTRY
|
||||
@set STRUCTURE structure
|
||||
@set ROUTINE function
|
||||
@set OR |
|
||||
@set RPREFIX RTEMS_
|
||||
@c the language is @value{LANGUAGE}
|
||||
@c NOTE: don't use underscore in the name
|
||||
@c
|
||||
|
||||
@@ -101,7 +101,8 @@ exactly once in the event set list.
|
||||
For example, when sending the event set consisting of
|
||||
@code{EVENT_6}, @code{EVENT_15}, and @code{EVENT_31},
|
||||
the event parameter to the event_send directive should be
|
||||
@code{EVENT_6 @value{OR} EVENT_15 @value{OR} EVENT_31}.
|
||||
@code{@value{RPREFIX}EVENT_6 @value{OR}
|
||||
@value{RPREFIX}EVENT_15 @value{OR} @value{RPREFIX}EVENT_31}.
|
||||
|
||||
@ifinfo
|
||||
@node Building an EVENT_RECEIVE Option Set, Event Manager Operations, Building an Event Set or Condition, Event Manager Background
|
||||
@@ -131,7 +132,8 @@ specified on this call.
|
||||
This example demonstrates the option parameter needed
|
||||
to poll for all events in a particular event condition to
|
||||
arrive. The option parameter passed to the event_receive
|
||||
directive should be either @code{EVENT_ALL @value{OR} NO_WAIT}
|
||||
directive should be either
|
||||
@code{@value{RPREFIX}EVENT_ALL @value{OR} @value{RPREFIX}NO_WAIT}
|
||||
or @code{NO_WAIT}. The option parameter can be set to
|
||||
@code{NO_WAIT} because @code{EVENT_ALL} is the
|
||||
default condition for event_receive.
|
||||
@@ -223,7 +225,7 @@ the calling task but the event set is left unaltered.
|
||||
A task can receive all of the currently pending
|
||||
events by calling the event_receive directive with a value of
|
||||
@code{ALL_EVENTS} for the input event condition and
|
||||
@code{NO_WAIT @value{OR} EVENT_ANY}
|
||||
@code{@value{RPREFIX}NO_WAIT @value{OR} @value{RPREFIX}EVENT_ANY}
|
||||
for the option set. The pending events are returned to the
|
||||
calling task and the event set is cleared. If no events are
|
||||
pending then the @code{UNSATISFIED} status code will be returned.
|
||||
|
||||
@@ -360,7 +360,7 @@ NONE
|
||||
|
||||
This directive disables all maskable interrupts and returns
|
||||
the previous @code{level}. A later invocation of the
|
||||
@code{rtems_interrupt_enable} directive should be used to
|
||||
@code{interrupt_enable} directive should be used to
|
||||
restore the interrupt level.
|
||||
|
||||
@subheading NOTES:
|
||||
@@ -403,9 +403,9 @@ NONE
|
||||
@subheading DESCRIPTION:
|
||||
|
||||
This directive enables maskable interrupts to the @code{level}
|
||||
which was returned by a previous call to @code{rtems_interrupt_disable}.
|
||||
which was returned by a previous call to @code{interrupt_disable}.
|
||||
Immediately prior to invoking this directive, maskable interrupts should
|
||||
be disabled by a call to @code{rtems_interrupt_disable} and will be enabled
|
||||
be disabled by a call to @code{interrupt_disable} and will be enabled
|
||||
when this directive returns to the caller.
|
||||
|
||||
@subheading NOTES:
|
||||
@@ -444,9 +444,9 @@ NONE
|
||||
@subheading DESCRIPTION:
|
||||
|
||||
This directive temporarily enables maskable interrupts to the @code{level}
|
||||
which was returned by a previous call to @code{rtems_interrupt_disable}.
|
||||
which was returned by a previous call to @code{interrupt_disable}.
|
||||
Immediately prior to invoking this directive, maskable interrupts should
|
||||
be disabled by a call to @code{rtems_interrupt_disable} and will be redisabled
|
||||
be disabled by a call to @code{interrupt_disable} and will be redisabled
|
||||
when this directive returns to the caller.
|
||||
|
||||
@subheading NOTES:
|
||||
|
||||
@@ -36,7 +36,7 @@ directives provided by the message manager are:
|
||||
@item @code{message_queue_urgent} - Put message at front of a queue
|
||||
@item @code{message_queue_broadcast} - Broadcast N messages to a queue
|
||||
@item @code{message_queue_receive} - Receive message from a queue
|
||||
@item @code{rtems_message_queue_get_number_pending} - Get number of messages pending on a queue
|
||||
@item @code{message_queue_get_number_pending} - Get number of messages pending on a queue
|
||||
@item @code{message_queue_flush} - Flush all messages on a queue
|
||||
@end itemize
|
||||
|
||||
@@ -92,10 +92,10 @@ of the desired attribute components. The set of valid message
|
||||
queue attributes is provided in the following table:
|
||||
|
||||
@itemize @bullet
|
||||
@item FIFO - tasks wait by FIFO (default)
|
||||
@item PRIORITY - tasks wait by priority
|
||||
@item LOCAL - local message queue (default)
|
||||
@item GLOBAL - global message queue
|
||||
@item @code{FIFO} - tasks wait by FIFO (default)
|
||||
@item @code{PRIORITY} - tasks wait by priority
|
||||
@item @code{LOCAL} - local message queue (default)
|
||||
@item @code{GLOBAL} - global message queue
|
||||
@end itemize
|
||||
|
||||
|
||||
@@ -110,11 +110,13 @@ This example demonstrates the attribute_set parameter
|
||||
needed to create a local message queue with the task priority
|
||||
waiting queue discipline. The attribute_set parameter to the
|
||||
message_queue_create directive could be either
|
||||
@code{PRIORITY} or @code{LOCAL @value{OR} PRIORITY}.
|
||||
@code{PRIORITY} or
|
||||
@code{@value{RPREFIX}LOCAL @value{OR} @value{RPREFIX}PRIORITY}.
|
||||
The attribute_set parameter can be set to @code{PRIORITY}
|
||||
because @code{LOCAL} is the default for all created message queues. If
|
||||
a similar message queue were to be known globally, then the
|
||||
attribute_set parameter would be @code{GLOBAL @value{OR} PRIORITY}.
|
||||
attribute_set parameter would be
|
||||
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}.
|
||||
|
||||
@ifinfo
|
||||
@node Building a MESSAGE_QUEUE_RECEIVE Option Set, Message Manager Operations, Building a Message Queue's Attribute Set, Message Manager Background
|
||||
@@ -342,9 +344,9 @@ for the specified count of messages, each of max_message_size
|
||||
bytes in length. The RTEMS-assigned queue id, returned in id,
|
||||
is used to access the message queue.
|
||||
|
||||
Specifying PRIORITY in attribute_set causes tasks
|
||||
Specifying @code{PRIORITY} in attribute_set causes tasks
|
||||
waiting for a message to be serviced according to task priority.
|
||||
When FIFO is specified, waiting tasks are serviced in First
|
||||
When @code{FIFO} is specified, waiting tasks are serviced in First
|
||||
In-First Out order.
|
||||
|
||||
@subheading NOTES:
|
||||
@@ -356,10 +358,10 @@ The following message queue attribute constants are
|
||||
defined by RTEMS:
|
||||
|
||||
@itemize @bullet
|
||||
@item FIFO - tasks wait by FIFO (default)
|
||||
@item PRIORITY - tasks wait by priority
|
||||
@item LOCAL - local message queue (default)
|
||||
@item GLOBAL - global message queue
|
||||
@item @code{FIFO} - tasks wait by FIFO (default)
|
||||
@item @code{PRIORITY} - tasks wait by priority
|
||||
@item @code{LOCAL} - local message queue (default)
|
||||
@item @code{GLOBAL} - global message queue
|
||||
@end itemize
|
||||
|
||||
Message queues should not be made global unless
|
||||
@@ -747,9 +749,9 @@ the queue is empty, then a status code indicating this condition
|
||||
is returned. If the calling task chooses to wait at the message
|
||||
queue and the queue is empty, then the calling task is placed on
|
||||
the message wait queue and blocked. If the queue was created
|
||||
with the PRIORITY option specified, then the calling task is
|
||||
with the @code{PRIORITY} option specified, then the calling task is
|
||||
inserted into the wait queue according to its priority. But, if
|
||||
the queue was created with the FIFO option specified, then the
|
||||
the queue was created with the @code{FIFO} option specified, then the
|
||||
calling task is placed at the rear of the wait queue.
|
||||
|
||||
A task choosing to wait at the queue can optionally
|
||||
|
||||
@@ -90,8 +90,8 @@ of the desired attribute components. The set of valid region
|
||||
attributes is provided in the following table:
|
||||
|
||||
@itemize @bullet
|
||||
@item FIFO - tasks wait by FIFO (default)
|
||||
@item PRIORITY - tasks wait by priority
|
||||
@item @code{FIFO} - tasks wait by FIFO (default)
|
||||
@item @code{PRIORITY} - tasks wait by priority
|
||||
@end itemize
|
||||
|
||||
Attribute values are specifically designed to be
|
||||
@@ -106,7 +106,7 @@ specified on this call.
|
||||
This example demonstrates the attribute_set parameter
|
||||
needed to create a region with the task priority waiting queue
|
||||
discipline. The attribute_set parameter to the region_create
|
||||
directive should be PRIORITY.
|
||||
directive should be @code{PRIORITY}.
|
||||
|
||||
@ifinfo
|
||||
@node Building an Option Set, Region Manager Operations, Building an Attribute Set, Region Manager Background
|
||||
@@ -346,9 +346,9 @@ memory from the region is not used to store the RNCB. However,
|
||||
some overhead within the region is required by RTEMS each time a
|
||||
segment is constructed in the region.
|
||||
|
||||
Specifying PRIORITY in attribute_set causes tasks
|
||||
Specifying @code{PRIORITY} in attribute_set causes tasks
|
||||
waiting for a segment to be serviced according to task priority.
|
||||
Specifying FIFO in attribute_set or selecting
|
||||
Specifying @code{FIFO} in attribute_set or selecting
|
||||
@code{DEFAULT_ATTRIBUTES} will cause waiting tasks to be serviced in
|
||||
First In-First Out order.
|
||||
|
||||
@@ -569,9 +569,9 @@ indicating this fact is returned. If the calling task chooses
|
||||
to wait for the segment and a segment large enough is not
|
||||
available, then the calling task is placed on the region's
|
||||
segment wait queue and blocked. If the region was created with
|
||||
the PRIORITY option, then the calling task is inserted into the
|
||||
the @priority{PRIORITY} option, then the calling task is inserted into the
|
||||
wait queue according to its priority. However, if the region
|
||||
was created with the FIFO option, then the calling task is
|
||||
was created with the @priority{FIFO} option, then the calling task is
|
||||
placed at the rear of the wait queue.
|
||||
|
||||
The timeout parameter specifies the maximum interval
|
||||
|
||||
@@ -128,8 +128,8 @@ to a task.}
|
||||
|
||||
Another way the user can alter the basic scheduling
|
||||
algorithm is by manipulating the preemption mode flag
|
||||
(PREEMPT_MASK) of individual tasks. If preemption is disabled
|
||||
for a task (NO_PREEMPT), then the task will not relinquish
|
||||
(@code{PREEMPT_MASK}) of individual tasks. If preemption is disabled
|
||||
for a task (@code{NO_PREEMPT}), then the task will not relinquish
|
||||
control of the processor until it terminates, blocks, or
|
||||
re-enables preemption. Even tasks which become ready to run and
|
||||
possess higher priority levels will not be allowed to execute.
|
||||
@@ -146,8 +146,8 @@ Timeslicing or round-robin scheduling is an
|
||||
additional method which can be used to alter the basic
|
||||
scheduling algorithm. Like preemption, timeslicing is specified
|
||||
on a task by task basis using the timeslicing mode flag
|
||||
(TIMESLICE_MASK). If timeslicing is enabled for a task
|
||||
(TIMESLICE), then RTEMS will limit the amount of time the task
|
||||
(@code{TIMESLICE_MASK}). If timeslicing is enabled for a task
|
||||
(@code{TIMESLICE}), then RTEMS will limit the amount of time the task
|
||||
can execute before the processor is allocated to another task.
|
||||
Each tick of the real-time clock reduces the currently running
|
||||
task's timeslice. When the execution time equals the timeslice,
|
||||
|
||||
@@ -237,11 +237,13 @@ This example demonstrates the attribute_set parameter
|
||||
needed to create a local semaphore with the task priority
|
||||
waiting queue discipline. The attribute_set parameter passed to
|
||||
the semaphore_create directive could be either
|
||||
@code{PRIORITY} or @code{LOCAL @value{OR} PRIORITY}.
|
||||
@code{PRIORITY} or
|
||||
@code{@value{RPREFIX}LOCAL @value{OR} @value{RPREFIX}PRIORITY}.
|
||||
The attribute_set parameter can be set to @code{PRIORITY}
|
||||
because @code{LOCAL} is the default for all created tasks. If a
|
||||
similar semaphore were to be known globally, then the
|
||||
attribute_set parameter would be @code{GLOBAL @value{OR} PRIORITY}.
|
||||
attribute_set parameter would be
|
||||
@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}.
|
||||
|
||||
@ifinfo
|
||||
@node Building a SEMAPHORE_OBTAIN Option Set, Semaphore Manager Operations, Building a Semaphore's Attribute Set, Semaphore Manager Background
|
||||
@@ -688,15 +690,15 @@ If the calling task chooses to wait for a semaphore and the
|
||||
current semaphore count is zero or negative, then it is
|
||||
decremented by one and the calling task is placed on the
|
||||
semaphore's wait queue and blocked. If the semaphore was
|
||||
created with the PRIORITY attribute, then the calling task is
|
||||
created with the @code{PRIORITY} attribute, then the calling task is
|
||||
inserted into the queue according to its priority. However, if
|
||||
the semaphore was created with the FIFO attribute, then the
|
||||
the semaphore was created with the @code{FIFO} attribute, then the
|
||||
calling task is placed at the rear of the wait queue. If the
|
||||
binary semaphore was created with the INHERIT_PRIORITY
|
||||
binary semaphore was created with the @code{INHERIT_PRIORITY}
|
||||
attribute, then the priority of the task currently holding the
|
||||
binary semaphore is guaranteed to be greater than or equal to
|
||||
that of the blocking task. If the binary semaphore was created
|
||||
with the PRIORITY_CEILING attribute, a task successfully obtains
|
||||
with the @code{PRIORITY_CEILING} attribute, a task successfully obtains
|
||||
the semaphore, and the priority of that task is greater than the
|
||||
ceiling priority for this semaphore, then the priority of the
|
||||
task obtaining the semaphore is elevated to that of the ceiling.
|
||||
|
||||
@@ -111,7 +111,8 @@ This example demonstrates the signal parameter used
|
||||
when sending the signal set consisting of
|
||||
@code{SIGNAL_6}, @code{SIGNAL_15}, and @code{SIGNAL_31}.
|
||||
The signal parameter provided to the signal_send directive should be
|
||||
@code{SIGNAL_6 @value{OR} SIGNAL_15 @value{OR} SIGNAL_31}.
|
||||
@code{@value{RPREFIX}SIGNAL_6 @value{OR}
|
||||
@value{RPREFIX}SIGNAL_15 @value{OR} @value{RPREFIX}SIGNAL_31}.
|
||||
|
||||
@ifinfo
|
||||
@node Building an ASR's Mode, Signal Manager Operations, Building a Signal Set, Signal Manager Background
|
||||
@@ -125,14 +126,29 @@ directives. A complete list of mode options is provided in the
|
||||
following table:
|
||||
|
||||
@itemize @bullet
|
||||
@item PREEMPT is masked by PREEMPT_MASK and enables preemption
|
||||
@item NO_PREEMPT is masked by PREEMPT_MASK and disables preemption
|
||||
@item NO_TIMESLICE is masked by TIMESLICE_MASK and disables timeslicing
|
||||
@item TIMESLICE is masked by TIMESLICE_MASK and enables timeslicing
|
||||
@item ASR is masked by ASR_MASK and enables ASR processing
|
||||
@item NO_ASR is masked by ASR_MASK and disables ASR processing
|
||||
@item INTERRUPT_LEVEL(0) is masked by INTERRUPT_MASK and enables all interrupts
|
||||
@item INTERRUPT_LEVEL(n) is masked by INTERRUPT_MASK and sets interrupts level n
|
||||
@item @code{PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and enables preemption
|
||||
|
||||
@item @code{NO_PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and disables preemption
|
||||
|
||||
@item @code{NO_TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and disables timeslicing
|
||||
|
||||
@item @code{TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and enables timeslicing
|
||||
|
||||
@item @code{ASR} is masked by
|
||||
@code{ASR_MASK} and enables ASR processing
|
||||
|
||||
@item @code{NO_ASR} is masked by
|
||||
@code{ASR_MASK} and disables ASR processing
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
|
||||
@code{INTERRUPT_MASK} and enables all interrupts
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL}(n)} is masked by
|
||||
@code{INTERRUPT_MASK} and sets interrupts level n
|
||||
@end itemize
|
||||
|
||||
Mode values are specifically designed to be mutually
|
||||
@@ -148,7 +164,8 @@ This example demonstrates the mode parameter used
|
||||
with the signal_catch to establish an ASR which executes at
|
||||
interrupt level three and is non-preemptible. The mode should
|
||||
be set to
|
||||
@code{INTERRUPT_LEVEL(3) @value{OR} NO_PREEMPT} to indicate the
|
||||
@code{@value{RPREFIX}INTERRUPT_LEVEL(3) @value{OR} @value{RPREFIX}NO_PREEMPT}
|
||||
to indicate the
|
||||
desired processor mode and interrupt level.
|
||||
|
||||
@ifinfo
|
||||
@@ -322,14 +339,29 @@ preempted.
|
||||
The following task mode constants are defined by RTEMS:
|
||||
|
||||
@itemize @bullet
|
||||
@item PREEMPT is masked by PREEMPT_MASK and enables preemption
|
||||
@item NO_PREEMPT is masked by PREEMPT_MASK and disables preemption
|
||||
@item NO_TIMESLICE is masked by TIMESLICE_MASK and disables timeslicing
|
||||
@item TIMESLICE is masked by TIMESLICE_MASK and enables timeslicing
|
||||
@item ASR is masked by ASR_MASK and enables ASR processing
|
||||
@item NO_ASR is masked by ASR_MASK and disables ASR processing
|
||||
@item INTERRUPT_LEVEL(0) is masked by INTERRUPT_MASK and enables all interrupts
|
||||
@item INTERRUPT_LEVEL(n) is masked by INTERRUPT_MASK and sets interrupts level n
|
||||
@item @code{PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and enables preemption
|
||||
|
||||
@item @code{NO_PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and disables preemption
|
||||
|
||||
@item @code{NO_TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and disables timeslicing
|
||||
|
||||
@item @code{TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and enables timeslicing
|
||||
|
||||
@item @code{ASR} is masked by
|
||||
@code{ASR_MASK} and enables ASR processing
|
||||
|
||||
@item @code{NO_ASR} is masked by
|
||||
@code{ASR_MASK} and disables ASR processing
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
|
||||
@code{INTERRUPT_MASK} and enables all interrupts
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL}(n)} is masked by
|
||||
@code{INTERRUPT_MASK} and sets interrupts level n
|
||||
@end itemize
|
||||
|
||||
@page
|
||||
|
||||
@@ -135,11 +135,11 @@ the task's TCB.
|
||||
A task may exist in one of the following five states:
|
||||
|
||||
@itemize @bullet
|
||||
@item @code{executing} - Currently scheduled to the CPU
|
||||
@item @code{ready} - May be scheduled to the CPU
|
||||
@item @code{blocked} - Unable to be scheduled to the CPU
|
||||
@item @code{dormant} - Created task that is not started
|
||||
@item @code{non-existent} - Uncreated or deleted task
|
||||
@item @b{executing} - Currently scheduled to the CPU
|
||||
@item @b{ready} - May be scheduled to the CPU
|
||||
@item @b{blocked} - Unable to be scheduled to the CPU
|
||||
@item @b{dormant} - Created task that is not started
|
||||
@item @b{non-existent} - Uncreated or deleted task
|
||||
@end itemize
|
||||
|
||||
An active task may occupy the executing, ready, blocked or
|
||||
@@ -235,8 +235,8 @@ interrupt level n.
|
||||
@item @code{TIMESLICE} - enable timeslicing
|
||||
@item @code{ASR} - enable ASR processing (default)
|
||||
@item @code{NO_ASR} - disable ASR processing
|
||||
@item @code{INTERRUPT_LEVEL(0)} - enable all interrupts (default)
|
||||
@item @code{INTERRUPT_LEVEL(n)} - execute at interrupt level n
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} - enable all interrupts (default)
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} - execute at interrupt level n
|
||||
@end itemize
|
||||
|
||||
@ifinfo
|
||||
@@ -352,12 +352,12 @@ defaults are desired, then @code{DEFAULT_ATTRIBUTES} should be used.
|
||||
This example demonstrates the attribute_set parameter needed to
|
||||
create a local task which utilizes the numeric coprocessor. The
|
||||
attribute_set parameter could be @code{FLOATING_POINT} or
|
||||
@code{LOCAL @value{OR} FLOATING_POINT}.
|
||||
@code{@value{RPREFIX}LOCAL @value{OR} @value{RPREFIX}FLOATING_POINT}.
|
||||
The attribute_set parameter can be set to
|
||||
@code{FLOATING_POINT} because @code{LOCAL} is the default for all created
|
||||
tasks. If the task were global and used the numeric
|
||||
coprocessor, then the attribute_set parameter would be
|
||||
@code{GLOBAL @value{OR} 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
|
||||
@@ -371,14 +371,29 @@ listed below:
|
||||
|
||||
@ifset use-ascii
|
||||
@itemize @bullet
|
||||
@item PREEMPT is masked by PREEMPT_MASK and enables preemption
|
||||
@item NO_PREEMPT is masked by PREEMPT_MASK and disables preemption
|
||||
@item NO_TIMESLICE is masked by TIMESLICE_MASK and disables timeslicing
|
||||
@item TIMESLICE is masked by TIMESLICE_MASK and enables timeslicing
|
||||
@item ASR is masked by ASR_MASK and enables ASR processing
|
||||
@item NO_ASR is masked by ASR_MASK and disables ASR processing
|
||||
@item INTERRUPT_LEVEL(0) is masked by INTERRUPT_MASK and enables all interrupts
|
||||
@item INTERRUPT_LEVEL(n) is masked by INTERRUPT_MASK and sets interrupts level n
|
||||
@item @code{PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and enables preemption
|
||||
|
||||
@item @code{NO_PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and disables preemption
|
||||
|
||||
@item @code{NO_TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and disables timeslicing
|
||||
|
||||
@item @code{TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and enables timeslicing
|
||||
|
||||
@item @code{ASR} is masked by
|
||||
@code{ASR_MASK} and enables ASR processing
|
||||
|
||||
@item @code{NO_ASR} is masked by
|
||||
@code{ASR_MASK} and disables ASR processing
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
|
||||
@code{INTERRUPT_MASK} and enables all interrupts
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL}(n)} is masked by
|
||||
@code{INTERRUPT_MASK} and sets interrupts level n
|
||||
@end itemize
|
||||
@end ifset
|
||||
|
||||
@@ -386,14 +401,29 @@ listed below:
|
||||
@sp 1
|
||||
@c this is temporary
|
||||
@itemize @bullet
|
||||
@item PREEMPT is masked by PREEMPT_MASK and enables preemption
|
||||
@item NO_PREEMPT is masked by PREEMPT_MASK and disables preemption
|
||||
@item NO_TIMESLICE is masked by TIMESLICE_MASK and disables timeslicing
|
||||
@item TIMESLICE is masked by TIMESLICE_MASK and enables timeslicing
|
||||
@item ASR is masked by ASR_MASK and enables ASR processing
|
||||
@item NO_ASR is masked by ASR_MASK and disables ASR processing
|
||||
@item INTERRUPT_LEVEL(0) is masked by INTERRUPT_MASK and enables all interrupts
|
||||
@item INTERRUPT_LEVEL(n) is masked by INTERRUPT_MASK and sets interrupts level n
|
||||
@item @code{PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and enables preemption
|
||||
|
||||
@item @code{NO_PREEMPT} is masked by
|
||||
@code{PREEMPT_MASK} and disables preemption
|
||||
|
||||
@item @code{NO_TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and disables timeslicing
|
||||
|
||||
@item @code{TIMESLICE} is masked by
|
||||
@code{TIMESLICE_MASK} and enables timeslicing
|
||||
|
||||
@item @code{ASR} is masked by
|
||||
@code{ASR_MASK} and enables ASR processing
|
||||
|
||||
@item @code{NO_ASR} is masked by
|
||||
@code{ASR_MASK} and disables ASR processing
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
|
||||
@code{INTERRUPT_MASK} and enables all interrupts
|
||||
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL}(n)} is masked by
|
||||
@code{INTERRUPT_MASK} and sets interrupts level n
|
||||
|
||||
@end itemize
|
||||
|
||||
@@ -452,9 +482,11 @@ should be used.
|
||||
The following example demonstrates the mode and mask parameters
|
||||
used with the task_mode directive to place a task at interrupt
|
||||
level 3 and make it non-preemptible. The mode should be set to
|
||||
@code{INTERRUPT_LEVEL(3) @value{RTEMSOR} NO_PREEMPT} to indicate the desired
|
||||
@code{@value{RPREFIX}INTERRUPT_LEVEL(3)
|
||||
@value{OR} @value{RPREFIX}NO_PREEMPT} to indicate the desired
|
||||
preemption mode and interrupt level, while the mask parameter
|
||||
should be set to @code{INTERRUPT_MASK @value{RTEMSOR} NO_PREEMPT_MASK}
|
||||
should be set to
|
||||
@code{@value{RPREFIX}INTERRUPT_MASK @value{OR} @value{RPREFIX}NO_PREEMPT_MASK}
|
||||
to indicate that the calling task's interrupt level and preemption mode are
|
||||
being altered.
|
||||
|
||||
@@ -711,7 +743,7 @@ procedure Task_Create (
|
||||
@end ifset
|
||||
|
||||
@subheading DIRECTIVE STATUS CODES:
|
||||
@code{SUCCESSFUL} - task created successfully@*
|
||||
@code{@value{RPREFIX}SUCCESSFUL} - task created successfully@*
|
||||
@code{INVALID_NAME} - invalid task name@*
|
||||
@code{INVALID_SIZE} - stack too small@*
|
||||
@code{INVALID_PRIORITY} - invalid task priority@*
|
||||
@@ -768,8 +800,8 @@ The following task mode constants are defined by RTEMS:
|
||||
@item @code{TIMESLICE} - enable timeslicing
|
||||
@item @code{ASR} - enable ASR processing (default)
|
||||
@item @code{NO_ASR} - disable ASR processing
|
||||
@item @code{INTERRUPT_LEVEL(0)} - enable all interrupts (default)
|
||||
@item @code{INTERRUPT_LEVEL(n)} - execute at interrupt level n
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} - enable all interrupts (default)
|
||||
@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} - execute at interrupt level n
|
||||
@end itemize
|
||||
|
||||
Tasks should not be made global unless remote tasks must
|
||||
@@ -1220,7 +1252,7 @@ a higher priority task is ready to run.
|
||||
Enabling timeslicing has no effect if preemption is enabled.
|
||||
|
||||
A task can obtain its current execution mode, without modifying
|
||||
it, by calling this directive with a mask value of CURRENT_MODE.
|
||||
it, by calling this directive with a mask value of @code{CURRENT_MODE}.
|
||||
|
||||
To temporarily disable the processing of a valid ASR, a task
|
||||
should call this directive with the NO_ASR indicator specified
|
||||
|
||||
Reference in New Issue
Block a user