summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/shared/irq/irq.c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2009-10-30 04:07:51 +0000
committerTill Straumann <strauman@slac.stanford.edu>2009-10-30 04:07:51 +0000
commit385212f554e997e01abb89243b938bb03ae0e451 (patch)
treeb2f087b9fc663809689706b9a18d61d479cded50 /c/src/lib/libbsp/i386/shared/irq/irq.c
parent2009-10-29 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-385212f554e997e01abb89243b938bb03ae0e451.tar.bz2
2009-10-29 Till Straumann <strauman@slac.stanford.edu>
* shared/irq/irq_asm.S: Make sure stack is aligned to CPU_STACK_ALIGNMENT for *all* C-routines (including _Thread_Dispatch() and _ThreadProcessSignalsFromIrq()) not only C_dispatch_isr(). * shared/irq/irq.c: Added IRQ statistics counters.
Diffstat (limited to 'c/src/lib/libbsp/i386/shared/irq/irq.c')
-rw-r--r--c/src/lib/libbsp/i386/shared/irq/irq.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/i386/shared/irq/irq.c b/c/src/lib/libbsp/i386/shared/irq/irq.c
index 450ff35848..5e66817a88 100644
--- a/c/src/lib/libbsp/i386/shared/irq/irq.c
+++ b/c/src/lib/libbsp/i386/shared/irq/irq.c
@@ -21,6 +21,8 @@
#include <stdlib.h>
#include <rtems/score/apiext.h>
+#include <stdio.h>
+#include <inttypes.h>
/*
* pointer to the mask representing the additionnal irq vectors
@@ -32,6 +34,22 @@
*/
rtems_i8259_masks irq_mask_or_tbl[BSP_IRQ_LINES_NUMBER];
+uint32_t irq_count[BSP_IRQ_LINES_NUMBER] = {0};
+
+uint32_t
+BSP_irq_count_dump(FILE *f)
+{
+uint32_t tot = 0;
+int i;
+ if ( !f )
+ f = stdout;
+ for ( i=0; i<BSP_IRQ_LINES_NUMBER; i++ ) {
+ tot += irq_count[i];
+ fprintf(f,"IRQ %2u: %9"PRIu32"\n", i, irq_count[i]);
+ }
+ return tot;
+}
+
/*-------------------------------------------------------------------------+
| Cache for 1st and 2nd PIC IRQ line's status (enabled or disabled) register.
+--------------------------------------------------------------------------*/
@@ -228,6 +246,7 @@ void bsp_interrupt_handler_default(rtems_vector_number vector)
void C_dispatch_isr(int vector)
{
+ irq_count[vector]++;
bsp_interrupt_handler_dispatch(vector);
}