Thread (10 messages) flat view 10 messages, 4 authors, 2013-02-21

Re: [PATCH 1/3] posix timers: Allocate timer id per process

From: Sasha Levin <hidden>
Date: 2013-02-14 20:13:35
Also in: lkml

On Thu, Feb 14, 2013 at 11:19 AM, Pavel Emelyanov [off-list ref] wrote:
From: Stanislav Kinsbursky <redacted>

Patch replaces global idr with global hash table for posix timers and
makes timer ids unique not globally, but per process. 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 has 512 slots.
Key is constructed as follows:
key = hash_32(hash_32(current->signal) ^ posix_timer_id));

Note: with this patch, id, returned to user, is not the minimal free
amymore. It means, that id, returned to user space in loop, listed below, will
be increasing on each iteration till INT_MAX and then dropped to zero:

while(1) {
        id = timer_create(...);
        timer_delete(id);
}

Signed-off-by: Stanislav Kinsbursky <redacted>
Signed-off-by: Pavel Emelyanov <redacted>
Hi Pavel,

Why not use linux/hashtable.h?


Thanks,
Sasha
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help