[rtems commit] Add rtems_interrupt_server_request_set_vector()

Sebastian Huber sebh at rtems.org
Thu Oct 4 09:33:32 UTC 2018


Module:    rtems
Branch:    master
Commit:    8777d4ccea9a2c52042a430104c004bee670b1f7
Changeset: http://git.rtems.org/rtems/commit/?id=8777d4ccea9a2c52042a430104c004bee670b1f7

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Oct  4 11:29:03 2018 +0200

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.

---

 cpukit/include/rtems/irq-extension.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/cpukit/include/rtems/irq-extension.h b/cpukit/include/rtems/irq-extension.h
index 5dd3792..28030c2 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.
  *



More information about the vc mailing list