Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Feb 2002 12:13:45 -0800
From:      "Crist J. Clark" <cristjc@earthlink.net>
To:        "M. Warner Losh" <imp@village.org>
Cc:        mike@FreeBSD.ORG, freebsd-arch@FreeBSD.ORG
Subject:   Re: Setting sysctl(8)'s in rc.conf
Message-ID:  <20020205121345.B368@gohan.cjclark.org>
In-Reply-To: <20020205.085412.88169750.imp@village.org>; from imp@village.org on Tue, Feb 05, 2002 at 08:54:12AM -0700
References:  <20020204145021.B3722@gohan.cjclark.org> <20020205015412.H6496@espresso.q9media.com> <20020205.085412.88169750.imp@village.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Feb 05, 2002 at 08:54:12AM -0700, M. Warner Losh wrote:
> We also need to fix setting sysctl variables late in the boot process,
> maybe after modules have been loaded early in the process.  I've
> punted on doing this right becuase of the bikeshed around the name for
> /etc/sysctl.conf's companion that would be done late in the process...

Perhaps a better approach would be to put them all in
/etc/sysctl.conf, but change /etc/sysctl.conf's format to support
grouping different variables to be loaded at different times
(maintaining back-compatibility of course).

But deciding on a good way to do that might just be a bikeshed of
another color. Here is just what comes to me as I write this. Each
grouping in /etc/sysctl.conf is separated by a keyword followed by a
token. Say,

  =Group Preload

Where '=Group' is a keyword (start it with a non-alphanumeric so it
is not likely to ever look like a real sysctl variable) and 'Preload'
will be our token. Modify rc.sysctl to take an argument (you see it
coming) which will be a token for a grouping. All of the sysctl
variables from the specified group are loaded until we hit the next
keyword-token line. Then one can just drop rc.sysctl calls into
rc-scripts anywhere. After we kldload nfs (or whatever) we do,

  rc.sysctl nfs

And the nfs sysctls, separated from the others by a '=Group nfs' in
sysctl.conf, are loaded.

Here's what rc.sysctl might look like to do this,

if [ -f /etc/sysctl.conf ]; then
	if [ "$1" ]; then
		while read keyword token comments; do
			if [ "${keyword}" = '=Group' -a "${token}" = "$1" ]
			then
				break
			fi
		done
	fi

	while read var comments
	do
		case ${var} in
		\#*|'')
			;;
		'=Group')
			exit 0
			;;
		*)
			sysctl ${var}
			;;
		esac
	done
fi < /etc/sysctl.conf

-- 
Crist J. Clark                     |     cjclark@alum.mit.edu
                                   |     cjclark@jhu.edu
http://people.freebsd.org/~cjc/    |     cjc@freebsd.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020205121345.B368>