lkml.org 
[lkml]   [1996]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: signed int for interrupts??
    Date
    From

    >On Sun, 8 Sep 1996, Jon Lewis wrote:
    >
    >> 5: 1649726484 + cyclades
    >> 9: 12023652 53c8xx
    >> 10: 231379880 3c509
    >> 11: -2104643917 + cyclades
    >
    >Now I'm really confused. I did some looking, and found that the interrupt
    >counters _are_ or at least appear to be unsigned int.
    >
    >In kernel_stat.h:
    >struct kernel_stat {
    >...
    > unsigned int interrupts[NR_IRQS];
    >...
    >};
    >
    >So why did my Irq 11 counter wrap at 2^31 rather than 2^32?

    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

    \
     
     \ /
      Last update: 2005-03-22 13:38    [W:0.027 / U:20.772 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site