• Andrew Morton's avatar
    [PATCH] Posix timer hang fix · cffa97e1
    Andrew Morton authored
    From: george anzinger <george@mvista.com>
    
    The MAJOR problem was a hang in the kernel if a user tried to delete a
    repeating timer that had a signal delivery pending. I was putting the
    task in a loop waiting for that same task to pick up the signal. OUCH!
    
    A minor issue relates to the need by the glibc folks, to specify a
    particular thread to get the signal.  I had this code in all along,
    but somewhere in 2.5 the signal code was made POSIX compliant, i.e.
    deliver to the first thread that doesn't have it masked out.
    
    This now uses the code from the above mentioned clean up.  Most
    signals go to the group delivery signal code, however, those
    specifying THREAD_ID (an extension to the POSIX standard) are sent to
    the specified thread.  That thread MUST be in the same thread group as
    the thread that creates the timer.
    cffa97e1
posix-timers.c 34.6 KB