[Mono-osx] An open letter to the OS X Mono group.

Louis R. Marascio louis at fitnr.com
Sat Apr 7 13:13:30 EDT 2007

Louis R. Marascio <louis at fitnr.com> wrote:
>Andreas Frber <andreas.faerber at web.de> wrote:
>>The remaining problem then is: How do we handle wildcards? Currently  
>>we have a 1:1 mapping of FileSystemWatchers to file descriptors. But  
>>what if a user wants to monitor a directory with hundreds of files?  
>>The commented out part of my test implementation shows that we are  
>>limited to 255 open file descriptors in whole. According to my  
>>reading this is what Linux software like inotify and the like handle  
>>- but nothing comparable seems to be available for OS X except some  
>>hacky ways of accessing the undocumented internals of Tiger's  
>>Spotlight engine. And Finder's FSNotify seems to be an even worse way  
>>of detecting changes. So kevent seems to be our best bet for now -  
>>it's just the question of how to use it.
> ... deleted ...
>As it stands now it doesn't work, so even if we make it work up to 255
>monitored files that's an improvement. Ideally, Apple would make the
>EVFILT_FS kevent filter available as a public API as this is clearly
>Apple's scalable FS monitoring method.

Gurgle... sending emails too early in the morning. Even if EVFILT_FS
were opened it requires super user priviledges, so it really is a
non-starter in it's current form. Regardless, kevent should work fine
with some tweaking.

The limit can of course be increased as users require to more reasonable
numbers using ulimit, etc. I would suggest something along these lines:

  * If a FSW is asked to monitor for Created and Deleted events, then
    there is no need to monitor individual files within a directory.

  * If a FSW is asked to monitor a specific file or a directory with a
    wildcard then we will need to open each file that matches the filter
    and watch it.

  * If someone is unhappy with the 255 open file descriptor limit, they
    will need to modify their ulimits accordingly. It appears that 10.4
    has a hard limit of 512 by default. This can be modified relatively
    easily to some arbitrarily high value given some OS X config file

I think this would work, am I missing anything?


Louis R. Marascio - www.fitnr.com
... fixed in the next release ...

More information about the Mono-osx mailing list