From 8777d4ccea9a2c52042a430104c004bee670b1f7 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 4 Oct 2018 11:29:03 +0200 Subject: 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(+) (limited to 'cpukit/include/rtems/irq-extension.h') 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, @@ -595,6 +598,30 @@ rtems_status_code rtems_interrupt_server_request_initialize( void *arg ); +/** + * @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. -- cgit v1.2.3