only print 1 every 1000 spurious interrupts (per interrupt).
This commit is contained in:
parent
12ef495cac
commit
4b2310a7ee
1 changed files with 10 additions and 3 deletions
|
@ -13,6 +13,8 @@
|
|||
* disable_irq: disable hook for IRQ.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "kernel.h"
|
||||
#include "proc.h"
|
||||
#include "archconst.h"
|
||||
|
@ -117,13 +119,18 @@ PUBLIC void irq_handle(int irq)
|
|||
irq_hook_t * hook;
|
||||
|
||||
/* here we need not to get this IRQ until all the handlers had a say */
|
||||
assert(irq >= 0 && irq < NR_IRQ_VECTORS);
|
||||
hw_intr_mask(irq);
|
||||
hook = irq_handlers[irq];
|
||||
|
||||
/* Sanity check. */
|
||||
/* Check for spurious interrupts. */
|
||||
if(hook == NULL) {
|
||||
printf("%s: irq_handle:no handler registered, masking the IRQ...\n",
|
||||
__FILE__);
|
||||
static int nspurious[NR_IRQ_VECTORS];
|
||||
nspurious[irq]++;
|
||||
if(nspurious[irq] == 1 || !(nspurious[irq] % 1000)) {
|
||||
printf("irq_handle: spurious irq %d (count: %d); keeping masked\n",
|
||||
irq, nspurious[irq]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue