I'm wondering what the relationship of these constants are:
linux/limits.h:
#define NR_OPEN 256
#define OPEN_MAX 256 /* # open files a process may have */
linux/fs.h:
#undef NR_OPEN
#define NR_OPEN 256
#define NR_FILE 1024 /* this can well be larger on a larger system */
probably a bad idea having NR_OPEN defined in 2 places....
the real problem I'm having is ENFILE errors. Can someone clarify the
ENFILE/EMFILE distinction? I'm guessing ENFILE means the kernel's
file table is full, while EMFILE means a process has violated its
limit.
So, my questions:
- what do I change to increase the size of the kernel's open file table?
- what do I change to increase the per-process open file limit?
- based on the above (getting ENFILE), which one do I _want_ to
change, kernel or per-process?
and:
- does anyone maintain a list of 'auxilliary' kernel config
parameters, such as the above, process table limits, etc? it could
be pretty useful to stick something like that into the Documentation/
directory...
thanks,
todd.