kernel - Refactor in-kernel system call API to remove bcopy()
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 25 Jul 2020 04:25:07 +0000 (21:25 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 25 Jul 2020 19:11:58 +0000 (12:11 -0700)
commit80d831e1ad5c5886e45827bf13837cf84baba296
tree2d21edacd3d30d72db2bf2c84ce4b86e6440f668
parent1530d07cbe7bf4af065ba7069c55ecbc467728e6
kernel - Refactor in-kernel system call API to remove bcopy()

* Change the in-kernel system call prototype to take the
  system call arguments as a separate pointer, and make the
  contents read-only.

  int     sy_call_t (void *);
  int     sy_call_t (struct sysmsg *sysmsg, const void *);

* System calls with 6 arguments or less no longer need to copy
  the arguments from the trapframe to a holding structure.  Instead,
  we simply point into the trapframe.

  The L1 cache footprint will be a bit smaller, but in simple tests
  the results are not noticably faster... maybe 1ns or so
  (roughly 1%).
74 files changed:
sys/dev/raid/vinum/vinum.c
sys/emulation/ndis/subr_ndis.c
sys/kern/imgact_resident.c
sys/kern/imgact_shell.c
sys/kern/init_main.c
sys/kern/init_sysent.c
sys/kern/kern_acct.c
sys/kern/kern_acl.c
sys/kern/kern_checkpoint.c
sys/kern/kern_descrip.c
sys/kern/kern_environment.c
sys/kern/kern_event.c
sys/kern/kern_exec.c
sys/kern/kern_exit.c
sys/kern/kern_fork.c
sys/kern/kern_fp.c
sys/kern/kern_jail.c
sys/kern/kern_ktrace.c
sys/kern/kern_linker.c
sys/kern/kern_module.c
sys/kern/kern_nrandom.c
sys/kern/kern_ntptime.c
sys/kern/kern_p1003_1b.c
sys/kern/kern_prot.c
sys/kern/kern_resource.c
sys/kern/kern_shutdown.c
sys/kern/kern_sig.c
sys/kern/kern_syscalls.c
sys/kern/kern_sysctl.c
sys/kern/kern_threads.c
sys/kern/kern_time.c
sys/kern/kern_umtx.c
sys/kern/kern_usched.c
sys/kern/kern_uuid.c
sys/kern/kern_varsym.c
sys/kern/kern_wdog.c
sys/kern/makesyscalls.sh
sys/kern/subr_prof.c
sys/kern/sys_generic.c
sys/kern/sys_mqueue.c
sys/kern/sys_pipe.c
sys/kern/sys_process.c
sys/kern/sys_vmm.c
sys/kern/syscalls.master
sys/kern/sysv_msg.c
sys/kern/sysv_sem.c
sys/kern/sysv_shm.c
sys/kern/uipc_syscalls.c
sys/kern/vfs_aio.c
sys/kern/vfs_cache.c
sys/kern/vfs_quota.c
sys/kern/vfs_syscalls.c
sys/net/accf_data/accf_data.c
sys/net/accf_http/accf_http.c
sys/platform/pc64/x86_64/machdep.c
sys/platform/pc64/x86_64/sysarch.c
sys/platform/pc64/x86_64/tls.c
sys/platform/pc64/x86_64/trap.c
sys/platform/vkernel64/platform/sysarch.c
sys/platform/vkernel64/x86_64/cpu_regs.c
sys/platform/vkernel64/x86_64/tls.c
sys/platform/vkernel64/x86_64/trap.c
sys/sys/ktrace.h
sys/sys/sysent.h
sys/sys/sysmsg.h
sys/sys/sysproto.h
sys/sys/sysunion.h
sys/vfs/mfs/mfs_vfsops.c
sys/vfs/nfs/nfs_subs.c
sys/vfs/nfs/nfs_syscalls.c
sys/vm/vm_mmap.c
sys/vm/vm_swap.c
sys/vm/vm_unix.c
sys/vm/vm_vmspace.c