After a little bit more of checking the kernel, I found that the integer value
for the interrupts is sprintf()ed into the buffer to printed with a %d (signed)
instead of a %u (unsigned). This tiny (and untested) patch against 2.0.18
should fix the problem.
--- linux/arch/i386/kernel/irq.c.orig Sun Sep 8 16:52:46 1996
+++ linux/arch/i386/kernel/irq.c Sun Sep 8 16:53:00 1996
@@ -232,7 +232,7 @@
action = irq_action[i];
if (!action)
continue;
- len += sprintf(buf+len, "%2d: %8d %c %s",
+ len += sprintf(buf+len, "%2d: %8u %c %s",
i, kstat.interrupts[i],
(action->flags & SA_INTERRUPT) ? '+' : ' ',
action->name);
Is this a valid thing to do? Or is there a reason it is %d ??
-Steve