• Pavel Emelyanov's avatar
    posix timers: Allocate timer id per process (v2) · 5ed67f05
    Pavel Emelyanov authored
    Currently kernel generates IDs for posix timers in a global manner --
    there's a kernel-wide IDR tree from which IDs are created. This makes
    it impossible to recreate a timer with a desired ID (in particular
    this is done by the CRIU checkpoint-restore project) -- since these
    IDs are global it may happen, that at the time we recreate a timer, the
    ID we want for it is already busy by some other timer.
    
    In order to address this, replace the IDR tree with a global hash
    table for timers and makes timer IDs unique per signal_struct (to
    which timers are linked anyway). With this, two timers belonging to
    different processes may have equal IDs and we can recreate either of
    them with the ID we want.
    Signed-off-by: default avatarPavel Emelyanov <xemul@parallels.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Matthew Helsley <matt.helsley@gmail.com>
    Link: http://lkml.kernel.org/r/513D9FF5.9010004@parallels.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    5ed67f05
sched.h 80.2 KB