rtems_interrupt_catch()

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Jun 23 16:40:56 UTC 2020


Hello,

I noticed that the rtems_interrupt_catch() directive is only declared 
and implemented if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE:

#if (CPU_SIMPLE_VECTORED_INTERRUPTS == FALSE)

typedef ISR_Handler_entry rtems_isr_entry;

#else
/**
  *  @brief Interrupt handler type.
  *
  *  @see rtems_interrupt_catch()
  */
typedef rtems_isr ( *rtems_isr_entry )(
                  rtems_vector_number
              );

/**
  * @brief RTEMS Interrupt Catch
  *
  * This directive installs @a new_isr_handler as the RTEMS interrupt 
service
  * routine for the interrupt vector with number @a vector. The previous 
RTEMS
  * interrupt service routine is returned in @a old_isr_handler.
  *
  * @param[in] new_isr_handler is the address of interrupt service routine
  * @param[in] vector is the interrupt vector number
  * @param[in] old_isr_handler address at which to store previous ISR 
address
  *
  * @retval RTEMS_SUCCESSFUL and *old_isr_handler filled with previous ISR
  *         address
  */
rtems_status_code rtems_interrupt_catch(
   rtems_isr_entry      new_isr_handler,
   rtems_vector_number  vector,
   rtems_isr_entry     *old_isr_handler
);
#endif

This is not mentioned in the documentation:

https://docs.rtems.org/branches/master/c-user/interrupt_manager.html#interrupt-catch-establish-an-isr

Should we provide this function also if CPU_SIMPLE_VECTORED_INTERRUPTS 
== FALSE and for example just return RTEMS_NOT_IMPLEMENTED?



More information about the devel mailing list