summaryrefslogtreecommitdiffstats
path: root/doc/user/intr.t
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1997-05-31 15:55:10 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1997-05-31 15:55:10 +0000
commita94c5a5d6992b6dca9afec09352ab80db4643078 (patch)
tree09da48a21cc739f0871774d815761a536591e7fe /doc/user/intr.t
parentChanged bitwise OR's used to build up option and attribute sets (diff)
downloadrtems-a94c5a5d6992b6dca9afec09352ab80db4643078.tar.bz2
Changed bitwise OR's used to build up option and attribute sets
to be correct in either C or Ada. Added the interrupt disable, enable, flash, and is in progress directives. changed "97" to "1997"
Diffstat (limited to 'doc/user/intr.t')
-rw-r--r--doc/user/intr.t172
1 files changed, 168 insertions, 4 deletions
diff --git a/doc/user/intr.t b/doc/user/intr.t
index 2ea796b7c6..d2226df3f6 100644
--- a/doc/user/intr.t
+++ b/doc/user/intr.t
@@ -56,7 +56,7 @@ The interrupt manager allows the application to
connect a function to a hardware interrupt vector. When an
interrupt occurs, the processor will automatically vector to
RTEMS. RTEMS saves and restores all registers which are not
-preserved by the normal @value{RTEMS-LANGUAGE} calling convention
+preserved by the normal @value{LANGUAGE} calling convention
for the target
processor and invokes the user's ISR. The user's ISR is
responsible for processing the interrupt, clearing the interrupt
@@ -265,6 +265,10 @@ made from an ISR:
@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
@@ -275,7 +279,7 @@ constants, usage, and status codes.
@page
@ifinfo
-@node INTERRUPT_CATCH - Establish an ISR, Clock Manager, Interrupt Manager Directives, Interrupt Manager Directives
+@node INTERRUPT_CATCH - Establish an ISR, INTERRUPT_DISABLE - Disable Interrupts, Interrupt Manager Directives, Interrupt Manager Directives
@end ifinfo
@subsection INTERRUPT_CATCH - Establish an ISR
@@ -317,6 +321,166 @@ returned in old_isr_handler.
@subheading NOTES:
-This directive will not cause the calling task to be
-preempted.
+This directive will not cause the calling task to be preempted.
+
+@page
+@ifinfo
+@node INTERRUPT_DISABLE - Disable Interrupts, INTERRUPT_ENABLE - Enable Interrupts, INTERRUPT_CATCH - Establish an ISR, Interrupt Manager Directives
+@end ifinfo
+@subsection INTERRUPT_DISABLE - Disable Interrupts
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+void rtems_interrupt_disable(
+ rtems_isr_level level
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@example
+function Interrupt_Disable
+return RTEMS.ISR_Level;
+@end example
+@end ifset
+
+@subheading DIRECTIVE STATUS CODES:
+
+NONE
+
+@subheading DESCRIPTION:
+
+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
+restore the interrupt level.
+
+@subheading NOTES:
+
+This directive will not cause the calling task to be preempted.
+
+@ifset is-C
+@b{This directive is implemented as a macro which modifies the @code{level}
+parameter.}
+@end ifset
+
+@page
+@ifinfo
+@node INTERRUPT_ENABLE - Enable Interrupts, INTERRUPT_FLASH - Flash Interrupts, INTERRUPT_DISABLE - Disable Interrupts, Interrupt Manager Directives
+@end ifinfo
+@subsection INTERRUPT_ENABLE - Enable Interrupts
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+void rtems_interrupt_enable(
+ rtems_isr_level level
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Interrupt_Enable (
+ Level : in RTEMS.ISR_Level
+);
+@end example
+@end ifset
+
+@subheading DIRECTIVE STATUS CODES:
+
+NONE
+
+@subheading DESCRIPTION:
+
+This directive enables maskable interrupts to the @code{level}
+which was returned by a previous call to @code{rtems_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
+when this directive returns to the caller.
+
+@subheading NOTES:
+
+This directive will not cause the calling task to be preempted.
+
+
+@page
+@ifinfo
+@node INTERRUPT_FLASH - Flash Interrupts, INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress, INTERRUPT_ENABLE - Enable Interrupts, Interrupt Manager Directives
+@end ifinfo
+@subsection INTERRUPT_FLASH - Flash Interrupts
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+void rtems_interrupt_flash(
+ rtems_isr_level level
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Interrupt_Flash (
+ Level : in RTEMS.ISR_Level
+);
+@end example
+@end ifset
+
+@subheading DIRECTIVE STATUS CODES:
+
+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}.
+Immediately prior to invoking this directive, maskable interrupts should
+be disabled by a call to @code{rtems_interrupt_disable} and will be redisabled
+when this directive returns to the caller.
+
+@subheading NOTES:
+
+This directive will not cause the calling task to be preempted.
+
+@page
+@ifinfo
+@node INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress, Clock Manager, INTERRUPT_FLASH - Flash Interrupts, Interrupt Manager Directives
+@end ifinfo
+@subsection INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+rtems_boolean rtems_interrupt_is_in_progress( void );
+@end example
+@end ifset
+
+@ifset is-Ada
+@example
+function Interrupt_Is_In_Progress
+return RTEMS.Boolean;
+@end example
+@end ifset
+
+@subheading DIRECTIVE STATUS CODES:
+
+NONE
+
+@subheading DESCRIPTION:
+
+This directive returns @code{TRUE} if the processor is currently
+servicing an interrupt and @code{FALSE} otherwise. A return value
+of @code{TRUE} indicates that the caller is an interrupt service
+routine, @b{NOT} a task. The directives available to an interrupt
+service routine are restricted.
+
+@subheading NOTES:
+
+This directive will not cause the calling task to be preempted.