Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Oct 1995 12:50:02 -0700
From:      Bruce Evans <bde>
To:        CVS-commiters, cvs-sys
Subject:   cvs commit: src/sys/kern sysv_msg.c sysv_sem.c sysv_shm.c
Message-ID:  <199510211950.MAA10580@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
bde         95/10/21 12:50:01

  Modified:    sys/kern  sysv_msg.c sysv_sem.c sysv_shm.c
  Log:
  Start including <sys/sysproto.h> 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.



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