diff options
Diffstat (limited to 'c/src/lib/libbsp/shared/include')
-rw-r--r-- | c/src/lib/libbsp/shared/include/irq-generic.h | 20 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/include/irq-info.h | 51 |
2 files changed, 55 insertions, 16 deletions
diff --git a/c/src/lib/libbsp/shared/include/irq-generic.h b/c/src/lib/libbsp/shared/include/irq-generic.h index 58d4f4639f..71ff88fe84 100644 --- a/c/src/lib/libbsp/shared/include/irq-generic.h +++ b/c/src/lib/libbsp/shared/include/irq-generic.h @@ -75,13 +75,6 @@ static inline rtems_vector_number bsp_interrupt_handler_index( rtems_vector_numb #endif /* BSP_INTERRUPT_USE_INDEX_TABLE */ } -void bsp_interrupt_handler_empty( rtems_vector_number vector, void *arg); - -static inline bool bsp_interrupt_is_empty_handler_entry( bsp_interrupt_handler_entry *e) -{ - return e->handler == bsp_interrupt_handler_empty; -} - /** * @defgroup bsp_interrupt BSP Interrupt Support * @@ -217,17 +210,12 @@ rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number vector); static inline void bsp_interrupt_handler_dispatch( rtems_vector_number vector) { if (bsp_interrupt_is_valid_vector( vector)) { - bsp_interrupt_handler_entry *head = &bsp_interrupt_handler_table [bsp_interrupt_handler_index( vector)]; - bsp_interrupt_handler_entry *current = head; + bsp_interrupt_handler_entry *e = &bsp_interrupt_handler_table [bsp_interrupt_handler_index( vector)]; do { - current->handler( vector, current->arg); - current = current->next; - } while (current != NULL); - - if (bsp_interrupt_is_empty_handler_entry( head)) { - bsp_interrupt_handler_default( vector); - } + e->handler( vector, e->arg); + e = e->next; + } while (e != NULL); } else { bsp_interrupt_handler_default( vector); } diff --git a/c/src/lib/libbsp/shared/include/irq-info.h b/c/src/lib/libbsp/shared/include/irq-info.h new file mode 100644 index 0000000000..f2dee7ed35 --- /dev/null +++ b/c/src/lib/libbsp/shared/include/irq-info.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @ingroup bsp_interrupt + * + * @brief Header file for generic BSP interrupt information. + */ + +/* + * Copyright (c) 2008 + * Embedded Brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * rtems@embedded-brains.de + * + * The license and distribution terms for this file may be found in the file + * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE. + */ + +#ifndef LIBBSP_SHARED_IRQ_INFO_H +#define LIBBSP_SHARED_IRQ_INFO_H + +#include <rtems/shell.h> +#include <rtems/bspIo.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup bsp_interrupt BSP Interrupt Information + * + * @ingroup rtems_interrupt_extension + * + * @{ + */ + +void bsp_interrupt_report_with_plugin( void *context, rtems_printk_plugin_t print); + +void bsp_interrupt_report( void); + +extern struct rtems_shell_cmd_tt bsp_interrupt_shell_command; + +/** @} */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* LIBBSP_SHARED_IRQ_INFO_H */ |