Re: [patch v2] epoll use a single inode ...

Eric Dumazet
2007-03-06T06:22:47Z

Davide Libenzi a écrit :
> On Mon, 5 Mar 2007, H. Peter Anvin wrote:
>
>> Davide Libenzi wrote:
>>> Right now is using:
>>>
>>> this.len = sprintf(name, "[%u.%d]", current->pid, fd);
>>>
>>> That should be unique and not have the wraparound problem. Ack?
>>>
>> NAK, very much NAK.
>>
>> File descriptors aren't file structures, they're *pointers* to file
>> structures.
>>
>> It's perfectly possible -- downright common -- for a file descriptor to be
>> inherited by another process, and then the pid is recycled -- collision.
>
> Ugh! Right! 64 bit counter it is ... :)

For epoll, I suspect this is harmless : Programs dont allocate epolls fd every
milli second, but at startup only.

For pipes/sockets, using a 64 bits would be problematic, because sprintf()
uses a divide for each digit. And a divide is slow. Ten divides are *very* slow.