diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-10-04 11:29:03 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-10-04 11:32:25 +0200 |
commit | 8777d4ccea9a2c52042a430104c004bee670b1f7 (patch) | |
tree | 4463aa626e5ac9effa0c589275b32e38f00d6eca /cpukit | |
parent | Optimize calloc() (diff) | |
download | rtems-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')
-rw-r--r-- | cpukit/include/rtems/irq-extension.h | 27 |
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. * |