Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Aug 1995 04:56:01 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, wollman@lcs.mit.edu
Cc:        CVS-commiters@freefall.FreeBSD.org, bde@freefall.FreeBSD.org, cvs-sys@freefall.FreeBSD.org
Subject:   Re: cvs commit: src/sys/vm vm_map.h vm_map.c
Message-ID:  <199508271856.EAA26062@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> 1) for syscalls.  The conversion from the application's args is
>[...]
>>       bar_args *'.  Perhaps the right method is to pass a `void *'
>>       or `int *' and convert it in each function, like you have to
>>       do for qsort().

>This is precisely the approach I took when doing this rationalization
>in 1.x.  I would have preferred to continue it (and fix the current
>syscalls to match the old model), but other people wanted to do it the
>new (broken) 4.4-Lite way, and I let them have their way.

I'm now automatically generating prototypes from the data
syscalls.master.  I cast the initializers in init_sysent.c to hide
the warnings.  I had to add some new optional fields to handle
non-orthogonal names arg struct tags such as `args' instead of
getfoo_args for getfoo(), and non- int return types for exit() and
umask().  I included the prototypes in <sys/systm.h>.  They'll have
to be moved, because this increases the kernel build time by 10%!
The arg struct declarations should be automatically generated too.
syscalls.master will have to look more like vnode_if.src for that.
I could generate a nicer visible interface, even one with args on
the stack (it's not clear whether the overhead for copying the args
again would be > 0).

Bruce



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