Re: [RFC PATCH] posix timers: allocate timer id per task

From: Stanislav Kinsbursky
Date: Tue Oct 16 2012 - 04:00:06 EST

15.10.2012 21:04, Peter Zijlstra ÐÐÑÐÑ:
On Mon, 2012-10-15 at 20:17 +0400, Stanislav Kinsbursky wrote:
This patch is required CRIU project (
To migrate processes with posix timers we have to make sure, that we can
restore posix timer with proper id.
Currently, this is not true, because timer ids are allocated globally.
So, this is precursor patch and it's purpose is make posix timer id to be
allocated per task.

Patch replaces global idr with global hash table for posix timers and
makes timer ids unique not globally, but per task. Next free timer id is type
of integer and stored on signal struct (posix_timer_id). If free timer id
reaches negative value on timer creation, it will be dropped to zero and
-EAGAIN will be returned to user.
Hash table is size of page (4KB).
Key is constructed as follows:
key = hash_ptr(current->signal) ^ hash_32(posix_timer_id);

but but but.. isn't this what namespaces were invented for to solve? Why
not use the regular namespace infrastructure?

The reason is that CRIU have to support single processes within existent namespaces.

Best regards,
Stanislav Kinsbursky
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at