[rtems commit] bsps: Fix empty interrupt handler entry

Sebastian Huber sebh at rtems.org
Fri Feb 28 07:59:27 UTC 2014


Module:    rtems
Branch:    master
Commit:    6faf789314aff183d128dc5436eb4278ebd4fc11
Changeset: http://git.rtems.org/rtems/commit/?id=6faf789314aff183d128dc5436eb4278ebd4fc11

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Feb 26 15:45:02 2014 +0100

bsps: Fix empty interrupt handler entry

The vector number of spurious interrupts was wrong after the interrupt
handler removal on SMP configurations.

---

 c/src/lib/libbsp/shared/src/irq-generic.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/c/src/lib/libbsp/shared/src/irq-generic.c b/c/src/lib/libbsp/shared/src/irq-generic.c
index f31b397..610fe40 100644
--- a/c/src/lib/libbsp/shared/src/irq-generic.c
+++ b/c/src/lib/libbsp/shared/src/irq-generic.c
@@ -88,11 +88,12 @@ static inline bool bsp_interrupt_is_empty_handler_entry(
 }
 
 static inline void bsp_interrupt_clear_handler_entry(
-  bsp_interrupt_handler_entry *e
+  bsp_interrupt_handler_entry *e,
+  rtems_vector_number vector
 )
 {
   e->handler = bsp_interrupt_handler_empty;
-  e->arg = NULL;
+  e->arg = (void *) vector;
   e->info = NULL;
   e->next = NULL;
 }
@@ -138,7 +139,7 @@ static bsp_interrupt_handler_entry *bsp_interrupt_allocate_handler_entry(void)
 static void bsp_interrupt_free_handler_entry(bsp_interrupt_handler_entry *e)
 {
   #ifdef BSP_INTERRUPT_NO_HEAP_USAGE
-    bsp_interrupt_clear_handler_entry(e);
+    bsp_interrupt_clear_handler_entry(e, 0);
   #else
     free(e);
   #endif
@@ -404,7 +405,7 @@ static rtems_status_code bsp_interrupt_handler_remove(
 
       /* Clear entry */
       rtems_interrupt_disable(level);
-      bsp_interrupt_clear_handler_entry(head);
+      bsp_interrupt_clear_handler_entry(head, vector);
       #ifdef BSP_INTERRUPT_USE_INDEX_TABLE
         bsp_interrupt_handler_index_table [vector] = 0;
       #endif




More information about the vc mailing list