diff options
Diffstat (limited to 'bsps/shared/irq/irq-generic.c')
-rw-r--r-- | bsps/shared/irq/irq-generic.c | 86 |
1 files changed, 4 insertions, 82 deletions
diff --git a/bsps/shared/irq/irq-generic.c b/bsps/shared/irq/irq-generic.c index bea6612136..81da647228 100644 --- a/bsps/shared/irq/irq-generic.c +++ b/bsps/shared/irq/irq-generic.c @@ -50,14 +50,14 @@ bsp_interrupt_handler_entry bsp_interrupt_handler_table [BSP_INTERRUPT_HANDLER_TABLE_SIZE]; /* The last entry indicates if everything is initialized */ -static uint8_t bsp_interrupt_handler_unique_table - [(BSP_INTERRUPT_HANDLER_TABLE_SIZE + 7 + 1) / 8]; +uint8_t bsp_interrupt_handler_unique_table + [ ( BSP_INTERRUPT_HANDLER_TABLE_SIZE + 7 + 1 ) / 8 ]; -static void bsp_interrupt_handler_empty(void *arg) +void bsp_interrupt_handler_empty( void *arg ) { rtems_vector_number vector = (rtems_vector_number) (uintptr_t) arg; - bsp_interrupt_handler_default(vector); + bsp_interrupt_handler_default( vector ); } #ifdef RTEMS_SMP @@ -67,13 +67,6 @@ static void bsp_interrupt_handler_empty(void *arg) } #endif -static inline bool bsp_interrupt_is_handler_unique(rtems_vector_number index) -{ - rtems_vector_number i = index / 8; - rtems_vector_number s = index % 8; - return (bsp_interrupt_handler_unique_table [i] >> s) & 0x1; -} - static inline void bsp_interrupt_set_handler_unique( rtems_vector_number index, bool unique @@ -88,23 +81,11 @@ static inline void bsp_interrupt_set_handler_unique( } } -static inline bool bsp_interrupt_is_initialized(void) -{ - return bsp_interrupt_is_handler_unique(BSP_INTERRUPT_HANDLER_TABLE_SIZE); -} - static inline void bsp_interrupt_set_initialized(void) { bsp_interrupt_set_handler_unique(BSP_INTERRUPT_HANDLER_TABLE_SIZE, true); } -static inline bool bsp_interrupt_is_empty_handler_entry( - const bsp_interrupt_handler_entry *e -) -{ - return e->handler == bsp_interrupt_handler_empty; -} - static inline void bsp_interrupt_clear_handler_entry( bsp_interrupt_handler_entry *e, rtems_vector_number vector @@ -450,56 +431,6 @@ static rtems_status_code bsp_interrupt_handler_remove( return RTEMS_SUCCESSFUL; } -/** - * @brief Iterates over all installed interrupt handler of a vector. - * - * @ingroup bsp_interrupt - * - * @return In addition to the standard status codes this function returns - * RTEMS_INTERNAL_ERROR if the BSP interrupt support is not initialized. - * - * @see rtems_interrupt_handler_iterate(). - */ -static rtems_status_code bsp_interrupt_handler_iterate( - rtems_vector_number vector, - rtems_interrupt_per_handler_routine routine, - void *arg -) -{ - bsp_interrupt_handler_entry *current = NULL; - rtems_option options = 0; - rtems_vector_number index = 0; - - /* Check parameters and system state */ - if (!bsp_interrupt_is_initialized()) { - return RTEMS_INTERNAL_ERROR; - } else if (!bsp_interrupt_is_valid_vector(vector)) { - return RTEMS_INVALID_ID; - } else if (rtems_interrupt_is_in_progress()) { - return RTEMS_CALLED_FROM_ISR; - } - - /* Lock */ - bsp_interrupt_lock(); - - /* Interate */ - index = bsp_interrupt_handler_index(vector); - current = &bsp_interrupt_handler_table [index]; - if (!bsp_interrupt_is_empty_handler_entry(current)) { - do { - options = bsp_interrupt_is_handler_unique(index) ? - RTEMS_INTERRUPT_UNIQUE : RTEMS_INTERRUPT_SHARED; - routine(arg, current->info, options, current->handler, current->arg); - current = current->next; - } while (current != NULL); - } - - /* Unlock */ - bsp_interrupt_unlock(); - - return RTEMS_SUCCESSFUL; -} - rtems_status_code rtems_interrupt_handler_install( rtems_vector_number vector, const char *info, @@ -520,15 +451,6 @@ rtems_status_code rtems_interrupt_handler_remove( return bsp_interrupt_handler_remove(vector, handler, arg); } -rtems_status_code rtems_interrupt_handler_iterate( - rtems_vector_number vector, - rtems_interrupt_per_handler_routine routine, - void *arg -) -{ - return bsp_interrupt_handler_iterate(vector, routine, arg); -} - bool bsp_interrupt_handler_is_empty(rtems_vector_number vector) { rtems_vector_number index = 0; |