• George Anzinger's avatar
    [PATCH] POSIX clocks & timers · db8b50ba
    George Anzinger authored
    This is version 23 or so of the POSIX timer code.
    
    Internal changelog:
    
     - Changed the signals code to match the new order of things.  Also the
       new xtime_lock code needed to be picked up.  It made some things a lot
       simpler.
    
     - Fixed a spin lock hand off problem in locking timers (thanks
       to Randy).
    
     - Fixed nanosleep to test for out of bound nanoseconds
       (thanks to Julie).
    
     - Fixed a couple of id deallocation bugs that left old ids
       laying around (hey I get this one).
    
     - This version has a new timer id manager.  Andrew Morton
       suggested elimination of recursion (done) and I added code
       to allow it to release unused nodes.  The prior version only
       released the leaf nodes.  (The id manager uses radix tree
       type nodes.)  Also added is a reuse count so ids will not
       repeat for at least 256 alloc/ free cycles.
    
     - The changes for the new sys_call restart now allow one
       restart function to handle both nanosleep and clock_nanosleep.
       Saves a bit of code, nice.
    
     - All the requested changes and Lindent too :).
    
     - I also broke clock_nanosleep() apart much the same way
       nanosleep() was with the 2.5.50-bk5 changes.
    
    TIMER STORMS
    
    The POSIX clocks and timers code prevents "timer storms" by
    not putting repeating timers back in the timer list until
    the signal is delivered for the prior expiry.  Timer events
    missed by this delay are accounted for in the timer overrun
    count.  The net result is MUCH lower system overhead while
    presenting the same info to the user as would be the case if
    an interrupt and timer processing were required for each
    increment in the overrun count.
    db8b50ba
time.c 11.3 KB