summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/irq-extension.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-10-04 11:29:03 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-10-04 11:32:25 +0200
commit8777d4ccea9a2c52042a430104c004bee670b1f7 (patch)
tree4463aa626e5ac9effa0c589275b32e38f00d6eca /cpukit/include/rtems/irq-extension.h
parentOptimize calloc() (diff)
downloadrtems-8777d4ccea9a2c52042a430104c004bee670b1f7.tar.bz2
Add rtems_interrupt_server_request_set_vector()
By default, the interrupt vector of an interrupt server request is set to a special value which is outside the range of vectors supported by the interrupt controller hardware. Add rtems_interrupt_server_request_set_vector() to set the interrupt vector in an interrupt server request. Calls to rtems_interrupt_server_request_submit() will disable the interrupt vector of the request. After processing of the request by the interrupt server the interrupt vector will be enabled again.
Diffstat (limited to 'cpukit/include/rtems/irq-extension.h')
-rw-r--r--cpukit/include/rtems/irq-extension.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/cpukit/include/rtems/irq-extension.h b/cpukit/include/rtems/irq-extension.h
index 5dd3792e22..28030c2181 100644
--- a/cpukit/include/rtems/irq-extension.h
+++ b/cpukit/include/rtems/irq-extension.h
@@ -284,6 +284,7 @@ typedef struct {
* accessed directly.
*
* @see rtems_interrupt_server_request_initialize(),
+ * rtems_interrupt_server_request_set_vector(),
* rtems_interrupt_server_request_submit(), and
* rtems_interrupt_server_request_destroy().
*/
@@ -587,6 +588,8 @@ void rtems_interrupt_server_entry_destroy(
* @retval RTEMS_SUCCESSFUL Successful operation.
* @retval RTEMS_INCORRECT_STATE The interrupt servers are not initialized.
* @retval RTEMS_INVALID_ID If the interrupt server index is invalid.
+ *
+ * @see rtems_interrupt_server_request_set_vector().
*/
rtems_status_code rtems_interrupt_server_request_initialize(
uint32_t server_index,
@@ -596,6 +599,30 @@ rtems_status_code rtems_interrupt_server_request_initialize(
);
/**
+ * @brief Sets the interrupt vector in the specified interrupt server request.
+ *
+ * By default, the interrupt vector of an interrupt server request is set to a
+ * special value which is outside the range of vectors supported by the
+ * interrupt controller hardware.
+ *
+ * Calls to rtems_interrupt_server_request_submit() will disable the interrupt
+ * vector of the request. After processing of the request by the interrupt
+ * server the interrupt vector will be enabled again.
+ *
+ * @param[in] request The initialized interrupt server request.
+ * @param[in] vector The interrupt vector number.
+ *
+ * @see rtems_interrupt_server_request_initialize().
+ */
+RTEMS_INLINE_ROUTINE void rtems_interrupt_server_request_set_vector(
+ rtems_interrupt_server_request *request,
+ rtems_vector_number vector
+)
+{
+ request->entry.vector = vector;
+}
+
+/**
* @brief Submits the specified interrupt server request so that its interrupt
* server action can be invoked by the specified interrupt server.
*