Snort! I just said as much (ioctl vs syscall) on the afs list. I didn't
know any of the history of this. I just wrote:
I just talked to some people, who suggested that it was the loadable
syscalls that 'a group within sun' wasn't committed to. I recall the
certain linux folks also argue that loadable system calls are a bad
thing. I'm not sure why they argue that, but it perhaps merits some more
investigation into what their reasons are.
Syscalls are nothing more than an ancient form of shared library which
once had implicit locking. I think the same behavior can usually be
obtained by a driver with only ioctls. I suppose the advantage is that
a driver has a notion of state from open file descriptors, and you can
tell if it is in-use and what is using it. I suspose this makes things
easier when unloading and reloading. ioctls can also be unique so that
hitting the wrong driver is less damaging. On the downside, there are a
lot of potentially unnecessary open/close calls and file descriptors
which are held as nothing but status indicators. There is a lot less
overhead in a dynamically loaded syscall.
So, I suspect the question should be: Could the afs kernel module be
turned into a driver with an ioctl? There's a lot in there, and if
anything breaks the general premise that a system call can be cast as an
ioctl, this would probably be it...
On Wed, 11 Apr 2007, Michael Shapiro wrote:
> > Dean,
> > Besides the fact that 65 is part of a block of reserved syscall numbers,
> > it takes PSARC approval to make changes to it.
> > Your sponsor will have to be aware of that as well.
> > Thanks,
> > Tom
> There is no reason to use loadable system calls for most of this
> stuff at all: 99.9% of all of those things can use a pseudo-driver
> and an ioctl instead. AFS filed an RFE for this ages ago and I
> went through what they're doing (or at least, what they were doing
> ages ago) and it fits that category.
Av8 Internet Prepared to pay a premium for better service?
www.av8.net faster, more reliable, better service
617 344 9000