lkml.org 
[lkml]   [2009]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectHR timers prevent an itimer from generating EINTR?
    Summary:

    Mixing HR timers with itimers occasionally hides an EINTR from a
    blocking syscall.


    Description:

    In my test program I have a High Resolution timer firing every one
    second (with SA_RESTART) and I set an itimer (without SA_RESTART) to
    fire after three seconds. I then execute a blocking system call (flock
    in this case) and expect the three second itimer to interrupt the system
    call with EINTR. However, I frequently notice that the itimer will fire
    but it will not interrupt the blocking system call. There appears to be
    a race between the HR timer firing and the itimer firing. If I offset
    the HR timer frequency by a half second, the itimer always interrupts
    the system call.

    Kernel version:

    These kernels both demonstrate the condition:

    2.6.29.6-217.2.16.fc11.x86_64
    and
    2.6.30.5-43.fc11.x86_64


    I do not see this condition on:

    2.6.18-53.el5


    Test program:

    The following program illustrates this condition:

    http://github.com/mheffner/scripts/commits/master/hrtimer_vs_itimer.c


    Is this behavior expected?


    Cheers,

    Mike

    --

    Mike Heffner <mikeh@fesnel.com>



    \
     
     \ /
      Last update: 2009-09-04 23:37    [W:0.022 / U:31.152 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site