[lkml]   [2008]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    I have noticed an issue with wait_event_interruptible_timeout() API
    which I will try to explain below:

    wait_event_interruptible_timeout() is supposed to wait until one of
    the following happens:

    (a) Timeout occurs (with no signals or the event of interest
    happening), in which case it returns 0

    (b) The process receives a signal and wakes up prematurely (i.e.,
    before its timeout expired or the event of interest occurred). In this
    case, it returns –ERESTARTSYS. I will come back to this later.

    (c) Of course, the last obvious way to wake up is that the event of
    interest occurs and it wakes up all (or one) process on the wait
    queue. In that case, it returns the # of jiffies that is left before
    the timeout would have occurred (unslept or balance jiffies).

    What if I really wanted to sleep for timeout interval and no more?
    That is to say, if I wake up on a signal and I wanted to know how many
    jiffies I did used up while sleeping and how many I am left with (just
    like poll or select does)? That way, when I retry the API, I can tell
    it to sleep only by the amount of my balance sleeping time.
    Unfortunately, the interface looses this information since it
    overrides the return value with ERESTARTSYS. I feel there is a need to
    modify the code in order to correct this behavior. I am more than
    willing to propose a patch but before I do so, I wanted to know what
    the community thinks about it.



    P.S: Please CC me separately as I am not on the mailing list.

    Anirban Sinha
    GNU/Kernel Developer
    Zeugma Systems, Canada.
    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: 2008-09-25 06:09    [W:0.043 / U:23.364 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site