on 19/12/2010 11:11 [email protected] said the following: > Andriy Gapon <[email protected]> wrote: >> on 16/12/2010 11:34 [email protected] said the following: >>> Andriy Gapon <[email protected]> wrote: >>>> BTW, are you sure that you correctly placed initialization of >>>> msgbufsize ? >>> >>> I am not at all sure of that ... >>> >>> Apart from the name, msgbufsize is set up in exactly the same >>> way and place -- in init_param1() -- as maxswzone and maxbcache. >>> Perhaps that is not early enough ... >> >> I don't see any connection between msgbufsize and maxswzone, >> so I also don't know if that place is early enough. > > The only "connection" is that maxswzone and maxbcache seemed to > be loader tunables that cannot be changed (via sysctl) while the > system is running -- the same usage paradigm I have in mind for > msgbufsize.
In other words they are all tunables. We have dozens of them. > I've since found the description of i386 startup in the Architecture > Handbook, and based on that -- and the code in locore.s and machdep.c > -- it certainly _seems_ as if init_param1() should be early enough: > > Practically the first thing that locore.s does after establishing > virtual addressing is to call init386(), and init386() calls > init_param1() long before it either accesses msgbufsize directly > or calls getmemsize() (which uses msgbufsize to allocate space for > the kernel message buffer). Documentation and code are known to get out of sync sometimes. Not saying that this is the case here though... >> Just try to initialize the variable where it's defined and use >> TUNABLE_LONG. > > Is there any documentation on how to use the TUNABLE_* macros, or > on when to use, say, TUNABLE_LONG vs TUNABLE_LONG_FETCH? I found > nothing with their definitions in sys/kernel.h, nor in any of the > base-system manpages, nor in /usr/share/doc/... Another question for which I don't have an answer. So far in my experience TUNABLE_XXX has always sufficed for me, I've never had a reason to use TUNABLE_XXX_FETCH. Technical difference is that TUNABLE_XXX_FETCH is a function (function-like macro) that explicitly fetches tunable's value from kernel environment; while TUNABLE_XXX is a wrapper around SYSINIT that registers the tunable for automatic processing during rather early stage of boot (SI_SUB_TUNABLES). -- Andriy Gapon _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "[email protected]"
