MAXFILES in subr_param.c

Dag-Erling Smørgrav des at
Wed Dec 10 03:21:26 PST 2008

Ivan Voras <ivoras at> writes:
> I'm looking at kern/subr_param.c:
>  72 #ifndef MAXFILES
>  73 #define MAXFILES (maxproc * 2)
>  74 #endif
> Shouldn't this be at least maxproc*3, for stdin,out,err for every proc?

Even maxproc * 3 won't be enough, unless none of your processes actually
do anything.  It's just an arbitrary value, based on the assumption that
you will never have maxproc concurrent processes anyway.

> Also, it looks like MAXFILES is used only once, and in a bit funny way:
> 238         maxfiles = MAXFILES;
> 239         TUNABLE_INT_FETCH("kern.maxfiles", &maxfiles);
> 240         maxprocperuid = (maxproc * 9) / 10;
> 241         maxfilesperproc = (maxfiles * 9) / 10;

What's funny about it?

> Historical reasons?

To a certain degree, yes; MAXFILES used to be a static limit which you
could only change in your kernel config.  It is now a loader tunable
(though you can still change the default in your kernel config), so the
MAXFILES macro was replaced with a maxfiles variable wherever it is
used, and the former is now only used to initialize the latter.

Dag-Erling Smørgrav - des at

More information about the freebsd-hackers mailing list