Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Nov 1999 21:25:59 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Mark Murray <mark@grondar.za>
Cc:        Peter Wemm <peter@netplex.com.au>, Garrett Wollman <wollman@khavrinen.lcs.mit.edu>, Kazutaka YOKOTA <yokota@FreeBSD.org>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/syscons scmouse.c src/sys/i386/conf options.i386 src/sys/alpha/conf options.alpha 
Message-ID:  <Pine.BSF.4.10.9911152043350.24876-100000@alphplex.bde.org>
In-Reply-To: <199911150828.KAA32612@gratis.grondar.za>

next in thread | previous in thread | raw e-mail | index | archive | help
> > > I would think a sysctl option would be better still as that's easily
> > > changed at runtime..
> > 
> > This should be an ioctl.
> 
> Yukk! "ioctls are the garbage cans of system calls" - Kirk McKusick

On the same scale, sysctls are the sewers of system calls :-).

> > sysctl(8) and sysctlbyname(3) are not suitable for device control since 
> > the interface that makes them easy to use for one-off things makes them
> > hard to use for arrays of things.
> 
> In order to use an ioctl, you need to write nasty looking code, and in

Similarly for sysctls, except the code is so much nastier that we have a
special program to support them in userland and special macros to hide
the details in the kernel.

> cases like this, that ends up being horrors like rndcontrol(8). One
> of the nice things about UNIX is its extremely general-purpose tools,
> and these one-off ioctl-drivers break that.

What's horrible about it?

    $ rndcontrol
    rndcontrol: interrupts in use: 11
    $ rndcontrol -s 14
    rndcontrol: setting irq 14
    rndcontrol: interrupts in use: 11 14

is preferable to:

    $ sysctl dev.random.irqs
    0x2000
    $ sysctl -w $(($((1 << 14)) | $(sysctl -n dev.random.irqs)))
    0x6000

except for its misspelling of "rand" as "rnd".

Sysctls are more natural for devices like /dev/random that only have
one minor, but one of the nice things about unix is that all devices
are controlled in the same way :-).

Bruce



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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.9911152043350.24876-100000>