diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2009-10-30 04:07:51 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2009-10-30 04:07:51 +0000 |
commit | 385212f554e997e01abb89243b938bb03ae0e451 (patch) | |
tree | b2f087b9fc663809689706b9a18d61d479cded50 /c/src/lib/libbsp/i386/shared/irq/irq.c | |
parent | 2009-10-29 Till Straumann <strauman@slac.stanford.edu> (diff) | |
download | rtems-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.c | 19 |
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); } |