From owner-freebsd-commit Sat Oct 21 12:50:12 1995 Return-Path: owner-commit Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA10612 for freebsd-commit-outgoing; Sat, 21 Oct 1995 12:50:12 -0700 Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA10600 for cvs-all-outgoing; Sat, 21 Oct 1995 12:50:09 -0700 Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA10590 for cvs-sys-outgoing; Sat, 21 Oct 1995 12:50:07 -0700 Received: (from bde@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA10580 ; Sat, 21 Oct 1995 12:50:02 -0700 Date: Sat, 21 Oct 1995 12:50:02 -0700 From: Bruce Evans Message-Id: <199510211950.MAA10580@freefall.freebsd.org> To: CVS-commiters, cvs-sys Subject: cvs commit: src/sys/kern sysv_msg.c sysv_sem.c sysv_shm.c Sender: owner-commit@FreeBSD.org Precedence: bulk bde 95/10/21 12:50:01 Modified: sys/kern sysv_msg.c sysv_sem.c sysv_shm.c Log: Start including to get the correct args structs and prototypes for all syscalls. The args structs are still declared in comments as in VOP implementation functions. I don't like the duplication for this, but several more layers of changes are required to get it right. First we need to catch up with 4.4lite2, which uses macros to handle struct padding. Then we need to catch up with NetBSD, which passes the args correctly (as void *). Then we need to handle varargs functions and struct padding better. I think all the details can be hidden in machine-generated functions so that the args structs and verbose macros to reference them don't have to appear in the core sources. Add prototypes. Add bogus casts to hide the evil type puns exposed by the previous steps. &uap[1] was used to get at the args after the first. This worked because only the first arg in *uap was declared. This broke when the machine- genenerated args struct declared all the args (actually it declares extra args in some cases and depends on the user stack having some accessible junk after the last arg, not to mention the user args being on the stack. It isn't possible to declare a correct args struct for a varargs syscall). The msgsys(), semsys() and shmsys() syscall interfaces are BAD because they multiplex several syscalls that have different types of args. There was no reason to duplicate this sysv braindamage but now we're stuck with it. NetBSD has reimplemented the syscalls properly as separate syscalls #220-231. Declare static functions as static in both their prototype and their implementation (the latter is optional, and this misfeature was used). Remove gratuitous #includes. Continue cleaning up new init stuff.