I selected a variadic method of argument passing because I didn't want to have
to copy the argument block several times in the course of passing from the
syscall stub through the multiplexor to the actual handler.
Of course, it might be better if the kernel itself sorted out the individual
subcalls and passed them to the filesystem individually or dealt with them
itself.
The four calls implemented by Linux are:
(*) int setpag(void)
Set Process Authentication Group number. This could easily be moved into
the kernel proper, with the PAG being stored in or depending from the
task structure somehow.
This would then obviate the need for OpenAFS to mangle the setgroups and
getgroups syscalls.
(*) int pioctl(const char *path, int cmd, void *arg, int followsymlink)
Al Viro's favourite:-) Do ioctl() on a file refered to by pathname. Can't
be emulated by open/ioctl/close because:
(a) it can operate directly on symbolic links.
(b) some of its functions don't require a file and don't fail if one
can't be opened.
(*) int afs_call(...)
Local client control
(*) int afs_icl(...)
Local client status and logging control.
There are six more which linux doesn't actually support, even though the
multiplexor does:
(*) icreate
(*) iopen
(*) idec
(*) iinc
(*) iread
(*) iwrite
Deal with file by inode number.
David
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Wed Apr 30 2003 - 22:00:35 EST