add closefrom() call

Bert JW Regeer xistence at 0x58.com
Sat Jul 7 07:58:23 UTC 2007


On Jul 6, 2007, at 9:57 AM, Julian Elischer wrote:

> Robert Watson wrote:
>> On Fri, 6 Jul 2007, Julian Elischer wrote:
>>> Ed Schouten wrote:
>>>> * LI Xin <delphij at delphij.net> wrote:
>>>>> Here is my implementation for FreeBSD.  Some difference between  
>>>>> my and DragonFly's implementation:
>>>>>
>>>>>  - closefrom(-1) would be no-op on DragonFly, my version would  
>>>>> close all open files (From my understanding of OpenSolaris's  
>>>>> userland implementation, this is Solaris's behavior).
>>>>>  - my version closefrom(very_big_fd) would result in EBADF.  I  
>>>>> am not very sure whether this is correct, but it does not hurt  
>>>>> for applications that thinks closefrom() would return void.
>>>>
>>>> Wouldn't it be better to just implement it through fcntl() and  
>>>> implement closefrom() in libc?
>>>
>>> that's a possibility but I personally thing the huge difference  
>>> in efficiency makes it worth putting it in the kernel. Quite a  
>>> few programs I know of could really help their startup time with  
>>> this as the first thing they do is "close the first 2000 file  
>>> descriptors.
>> The Solaris implementation appears to implement two strategies:
>> (1) If procfs is mounted, list the fd directory to get a list of  
>> open fds,
>>     then close those by number.
>> (2) If procfs is not mounted, query the number of open fds using  
>> the resource
>>     limit interface, then sequentially close until the right  
>> number close.
>> Hence my question as to whether there's actually a big benefit or  
>> not -- do we think closefrom() is a performance-critical function?
>
>
> It's one of those things where it's so simple to do it that it  
> hardly seems worth arguing about the colour, or even whether colour  
> is spelled color or colour.
>
>> Robert N M Watson
>> Computer Laboratory
>> University of Cambridge
>


So guys, where can I pick up my bike-shed?

Bert JW Regeer



More information about the freebsd-hackers mailing list