Re: [PATCH 1/3] posix timers: Allocate timer id per process
From: Pavel Emelyanov <hidden>
Date: 2013-02-15 05:14:05
Also in:
lkml
On 02/15/2013 12:13 AM, Sasha Levin wrote:
On Thu, Feb 14, 2013 at 11:19 AM, Pavel Emelyanov [off-list ref] wrote:quoted
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?
Simply because this patch was just picked from the previous discussions as is :) I will tune it to use hashtable.h in the next iteration.
Thanks, Sasha .