summaryrefslogtreecommitdiffstats
path: root/c-user/interrupt/introduction.rst
blob: 7987b540c4f9a361721d861980783b154f8b971a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
.. SPDX-License-Identifier: CC-BY-SA-4.0

.. Copyright (C) 2008, 2021 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)

.. This file is part of the RTEMS quality process and was automatically
.. generated.  If you find something that needs to be fixed or
.. worded better please post a report or patch to an RTEMS mailing list
.. or raise a bug report:
..
.. https://www.rtems.org/bugs.html
..
.. For information on updating and regenerating please refer to the How-To
.. section in the Software Requirements Engineering chapter of the
.. RTEMS Software Engineering manual.  The manual is provided as a part of
.. a release.  For development sources please refer to the online
.. documentation at:
..
.. https://docs.rtems.org

.. Generated from spec:/rtems/intr/if/group

.. _InterruptManagerIntroduction:

Introduction
============

.. The following list was generated from:
.. spec:/rtems/intr/if/catch
.. spec:/rtems/intr/if/disable
.. spec:/rtems/intr/if/enable
.. spec:/rtems/intr/if/flash
.. spec:/rtems/intr/if/local-disable
.. spec:/rtems/intr/if/local-enable
.. spec:/rtems/intr/if/is-in-progress
.. spec:/rtems/intr/if/lock-initialize
.. spec:/rtems/intr/if/lock-destroy
.. spec:/rtems/intr/if/lock-acquire
.. spec:/rtems/intr/if/lock-release
.. spec:/rtems/intr/if/lock-acquire-isr
.. spec:/rtems/intr/if/lock-release-isr
.. spec:/rtems/intr/if/lock-isr-disable
.. spec:/rtems/intr/if/lock-declare
.. spec:/rtems/intr/if/lock-define
.. spec:/rtems/intr/if/lock-initializer
.. spec:/rtems/intr/if/lock-member
.. spec:/rtems/intr/if/lock-reference
.. spec:/rtems/intr/if/entry-initializer
.. spec:/rtems/intr/if/entry-initialize
.. spec:/rtems/intr/if/entry-install
.. spec:/rtems/intr/if/entry-remove
.. spec:/rtems/intr/if/handler-install
.. spec:/rtems/intr/if/handler-remove
.. spec:/rtems/intr/if/vector-is-enabled
.. spec:/rtems/intr/if/vector-enable
.. spec:/rtems/intr/if/vector-disable
.. spec:/rtems/intr/if/is-pending
.. spec:/rtems/intr/if/raise
.. spec:/rtems/intr/if/raise-on
.. spec:/rtems/intr/if/clear
.. spec:/rtems/intr/if/get-affinity
.. spec:/rtems/intr/if/set-affinity
.. spec:/rtems/intr/if/get-attributes
.. spec:/rtems/intr/if/handler-iterate
.. spec:/rtems/intr/if/server-initialize
.. spec:/rtems/intr/if/server-create
.. spec:/rtems/intr/if/server-handler-install
.. spec:/rtems/intr/if/server-handler-remove
.. spec:/rtems/intr/if/server-set-affinity
.. spec:/rtems/intr/if/server-delete
.. spec:/rtems/intr/if/server-suspend
.. spec:/rtems/intr/if/server-resume
.. spec:/rtems/intr/if/server-move
.. spec:/rtems/intr/if/server-handler-iterate
.. spec:/rtems/intr/if/server-entry-initialize
.. spec:/rtems/intr/if/server-action-prepend
.. spec:/rtems/intr/if/server-entry-destroy
.. spec:/rtems/intr/if/server-entry-submit
.. spec:/rtems/intr/if/server-entry-move
.. spec:/rtems/intr/if/server-request-initialize
.. spec:/rtems/intr/if/server-request-set-vector
.. spec:/rtems/intr/if/server-request-destroy
.. spec:/rtems/intr/if/server-request-submit

Any real-time executive must provide a mechanism for quick response to
externally generated interrupts to satisfy the critical time constraints of the
application.  The Interrupt Manager provides this mechanism for RTEMS. This
manager permits quick interrupt response times by providing the critical
ability to alter task execution which allows a task to be preempted upon exit
from an ISR. The directives provided by the Interrupt Manager are:

* :ref:`InterfaceRtemsInterruptCatch` - Establishes an interrupt service
  routine.

* :ref:`InterfaceRtemsInterruptDisable` - Disables the maskable interrupts on
  the current processor.

* :ref:`InterfaceRtemsInterruptEnable` - Restores the previous interrupt level
  on the current processor.

* :ref:`InterfaceRtemsInterruptFlash` - Flashes interrupts on the current
  processor.

* :ref:`InterfaceRtemsInterruptLocalDisable` - Disables the maskable interrupts
  on the current processor.

* :ref:`InterfaceRtemsInterruptLocalEnable` - Restores the previous interrupt
  level on the current processor.

* :ref:`InterfaceRtemsInterruptIsInProgress` - Checks if an ISR is in progress
  on the current processor.

* :ref:`InterfaceRtemsInterruptLockInitialize` - Initializes the ISR lock.

* :ref:`InterfaceRtemsInterruptLockDestroy` - Destroys the ISR lock.

* :ref:`InterfaceRtemsInterruptLockAcquire` - Acquires the ISR lock.

* :ref:`InterfaceRtemsInterruptLockRelease` - Releases the ISR lock.

* :ref:`InterfaceRtemsInterruptLockAcquireIsr` - Acquires the ISR lock from
  within an ISR.

* :ref:`InterfaceRtemsInterruptLockReleaseIsr` - Releases the ISR lock from
  within an ISR.

* :ref:`InterfaceRtemsInterruptLockInterruptDisable` - Disables maskable
  interrupts on the current processor.

* :ref:`InterfaceRTEMSINTERRUPTLOCKDECLARE` - Declares an ISR lock object.

* :ref:`InterfaceRTEMSINTERRUPTLOCKDEFINE` - Defines an ISR lock object.

* :ref:`InterfaceRTEMSINTERRUPTLOCKINITIALIZER` - Statically initializes an ISR
  lock object.

* :ref:`InterfaceRTEMSINTERRUPTLOCKMEMBER` - Defines an ISR lock member.

* :ref:`InterfaceRTEMSINTERRUPTLOCKREFERENCE` - Defines an ISR lock object
  reference.

* :ref:`InterfaceRTEMSINTERRUPTENTRYINITIALIZER` - Statically initializes an
  interrupt entry object.

* :ref:`InterfaceRtemsInterruptEntryInitialize` - Initializes the interrupt
  entry.

* :ref:`InterfaceRtemsInterruptEntryInstall` - Installs the interrupt entry at
  the interrupt vector.

* :ref:`InterfaceRtemsInterruptEntryRemove` - Removes the interrupt entry from
  the interrupt vector.

* :ref:`InterfaceRtemsInterruptHandlerInstall` - Installs the interrupt handler
  routine and argument at the interrupt vector.

* :ref:`InterfaceRtemsInterruptHandlerRemove` - Removes the interrupt handler
  routine and argument from the interrupt vector.

* :ref:`InterfaceRtemsInterruptVectorIsEnabled` - Checks if the interrupt
  vector is enabled.

* :ref:`InterfaceRtemsInterruptVectorEnable` - Enables the interrupt vector.

* :ref:`InterfaceRtemsInterruptVectorDisable` - Disables the interrupt vector.

* :ref:`InterfaceRtemsInterruptIsPending` - Checks if the interrupt is pending.

* :ref:`InterfaceRtemsInterruptRaise` - Raises the interrupt vector.

* :ref:`InterfaceRtemsInterruptRaiseOn` - Raises the interrupt vector on the
  processor.

* :ref:`InterfaceRtemsInterruptClear` - Clears the interrupt vector.

* :ref:`InterfaceRtemsInterruptGetAffinity` - Gets the processor affinity set
  of the interrupt vector.

* :ref:`InterfaceRtemsInterruptSetAffinity` - Sets the processor affinity set
  of the interrupt vector.

* :ref:`InterfaceRtemsInterruptGetAttributes` - Gets the attributes of the
  interrupt vector.

* :ref:`InterfaceRtemsInterruptHandlerIterate` - Iterates over all interrupt
  handler installed at the interrupt vector.

* :ref:`InterfaceRtemsInterruptServerInitialize` - Initializes the interrupt
  server tasks.

* :ref:`InterfaceRtemsInterruptServerCreate` - Creates an interrupt server.

* :ref:`InterfaceRtemsInterruptServerHandlerInstall` - Installs the interrupt
  handler routine and argument at the interrupt vector on the interrupt server.

* :ref:`InterfaceRtemsInterruptServerHandlerRemove` - Removes the interrupt
  handler routine and argument from the interrupt vector and the interrupt
  server.

* :ref:`InterfaceRtemsInterruptServerSetAffinity` - Sets the processor affinity
  of the interrupt server.

* :ref:`InterfaceRtemsInterruptServerDelete` - Deletes the interrupt server.

* :ref:`InterfaceRtemsInterruptServerSuspend` - Suspends the interrupt server.

* :ref:`InterfaceRtemsInterruptServerResume` - Resumes the interrupt server.

* :ref:`InterfaceRtemsInterruptServerMove` - Moves the interrupt handlers
  installed at the interrupt vector and the source interrupt server to the
  destination interrupt server.

* :ref:`InterfaceRtemsInterruptServerHandlerIterate` - Iterates over all
  interrupt handler installed at the interrupt vector and interrupt server.

* :ref:`InterfaceRtemsInterruptServerEntryInitialize` - Initializes the
  interrupt server entry.

* :ref:`InterfaceRtemsInterruptServerActionPrepend` - Prepends the interrupt
  server action to the list of actions of the interrupt server entry.

* :ref:`InterfaceRtemsInterruptServerEntryDestroy` - Destroys the interrupt
  server entry.

* :ref:`InterfaceRtemsInterruptServerEntrySubmit` - Submits the interrupt
  server entry to be serviced by the interrupt server.

* :ref:`InterfaceRtemsInterruptServerEntryMove` - Moves the interrupt server
  entry to the interrupt server.

* :ref:`InterfaceRtemsInterruptServerRequestInitialize` - Initializes the
  interrupt server request.

* :ref:`InterfaceRtemsInterruptServerRequestSetVector` - Sets the interrupt
  vector in the interrupt server request.

* :ref:`InterfaceRtemsInterruptServerRequestDestroy` - Destroys the interrupt
  server request.

* :ref:`InterfaceRtemsInterruptServerRequestSubmit` - Submits the interrupt
  server request to be serviced by the interrupt server.