[lkml]   [2001]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] net/ipv4/*, net/core/neighbour.c jiffies cleanup

    On Wed, 7 Nov 2001, Andreas Dilger wrote:
    > No, only a limited number of them cast to a signed value, which means
    > that a large number of them get the comparison wrong in the case of
    > jiffies wrap (where the difference is a large unsigned value, and not
    > a small negative number).


    Unsigned arithmetic is fine. The _correct_ way to test whether something
    is in within

    [ start , start+HZ ]

    is to do

    if (jiffies - start <= HZ)

    try it. The C language guarantees that unsigned arithmetic works in a
    "modulo power of two" fashion, which means that it _is_ ok to do
    arithmetic on unsigned longs, and jiffy wrapping does not matter. No need
    to cast to "signed" or anything else.

    In short: It is wrong to do

    if (jiffies <= start+HZ)

    and it is _right_ to do

    if (jiffies - start <= HZ)

    (as long as "start" is "unsigned long" like jiffies).


    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:12    [W:0.024 / U:0.312 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site