c-user: Document interrupt manager extensions

Close #3269.
This commit is contained in:
Sebastian Huber 2021-06-14 09:59:59 +02:00
parent 205f755bfd
commit 056886f171
2 changed files with 2714 additions and 72 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0 .. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) .. Copyright (C) 2008, 2021 embedded brains GmbH (http://www.embedded-brains.de)
.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) .. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
.. This file is part of the RTEMS quality process and was automatically .. This file is part of the RTEMS quality process and was automatically
@ -33,8 +33,6 @@ Introduction
.. spec:/rtems/intr/if/local-disable .. spec:/rtems/intr/if/local-disable
.. spec:/rtems/intr/if/local-enable .. spec:/rtems/intr/if/local-enable
.. spec:/rtems/intr/if/is-in-progress .. spec:/rtems/intr/if/is-in-progress
.. spec:/rtems/intr/if/cause
.. spec:/rtems/intr/if/clear
.. spec:/rtems/intr/if/lock-initialize .. spec:/rtems/intr/if/lock-initialize
.. spec:/rtems/intr/if/lock-destroy .. spec:/rtems/intr/if/lock-destroy
.. spec:/rtems/intr/if/lock-acquire .. spec:/rtems/intr/if/lock-acquire
@ -47,6 +45,42 @@ Introduction
.. spec:/rtems/intr/if/lock-initializer .. spec:/rtems/intr/if/lock-initializer
.. spec:/rtems/intr/if/lock-member .. spec:/rtems/intr/if/lock-member
.. spec:/rtems/intr/if/lock-reference .. 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 Any real-time executive must provide a mechanism for quick response to
externally generated interrupts to satisfy the critical time constraints of the externally generated interrupts to satisfy the critical time constraints of the
@ -76,10 +110,6 @@ from an ISR. The directives provided by the Interrupt Manager are:
* :ref:`InterfaceRtemsInterruptIsInProgress` - Checks if an ISR is in progress * :ref:`InterfaceRtemsInterruptIsInProgress` - Checks if an ISR is in progress
on the current processor. on the current processor.
* :ref:`InterfaceRtemsInterruptCause` - Causes the interrupt.
* :ref:`InterfaceRtemsInterruptClear` - Clears the interrupt.
* :ref:`InterfaceRtemsInterruptLockInitialize` - Initializes the ISR lock. * :ref:`InterfaceRtemsInterruptLockInitialize` - Initializes the ISR lock.
* :ref:`InterfaceRtemsInterruptLockDestroy` - Destroys the ISR lock. * :ref:`InterfaceRtemsInterruptLockDestroy` - Destroys the ISR lock.
@ -108,3 +138,104 @@ from an ISR. The directives provided by the Interrupt Manager are:
* :ref:`InterfaceRTEMSINTERRUPTLOCKREFERENCE` - Defines an ISR lock object * :ref:`InterfaceRTEMSINTERRUPTLOCKREFERENCE` - Defines an ISR lock object
reference. 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.