freebsd-dev/sys/kern
Garrett Wollman 1e4ad9ce28 This is a proposal-in-code for a substantial modification of the way
the high kernel calls into a protocol stack to perform requests on the
user's behalf.  We replace the pr_usrreq() entry in struct protosw with a
pointer to a structure containing pointers to functions which implement
the various reuqests; each function is declared with the correct type and
number of arguments.  (This is unlike the current scheme in which a quarter
of the requests take arguments of type other than (struct mbuf *) and the
difference is papered over with casts.)  There are a few benefits to this
new scheme:

1) Arguments are passed with their correct types, and null-pointer dummies
   are no longer necessary.

2) There should be slightly better caching effects from eliminating
   the prximity to extraneous code and th switch in pr_usrreq().

3) It becomes much easier to change the types of the arguments to something
   other than `struct mbuf *' (e.g.,pushing the work of sosend() into
   the protocol as advocated by Van Jacobson).

There is one principal drawback: existing protocol stacks need to
be modified.  This is alleviated by compatibility code in
uipc_socket2.c and uipc_domain.c which emulates the new interface
in terms of the old and vice versa.

This idea is not original to me.  I  read about what Jacobson did
in one of his papers and have tried to implement  the first steps
towards something like that here.  Much work remains to be done.
1996-07-09 19:12:53 +00:00
..
imgact_aout.c First pass at cleaning up macros relating to pages, clusters and all that. 1996-05-02 10:43:17 +00:00
imgact_elf.c Clean-up the new VM map procfs code, and also add support for executable 1996-06-18 05:16:00 +00:00
imgact_gzip.c First pass at cleaning up macros relating to pages, clusters and all that. 1996-05-02 10:43:17 +00:00
imgact_shell.c Killed sections 3 and 4 of my copyright as I don't agree with it (I believe 1996-04-08 01:22:00 +00:00
inflate.c
init_main.c The Great PC98 Merge. 1996-06-14 11:02:28 +00:00
init_sysent.c
init_sysvec.c Clean-up the new VM map procfs code, and also add support for executable 1996-06-18 05:16:00 +00:00
kern_acct.c
kern_clock.c Unstaticize psratio and staticize profprocs. psratio needs to be exported 1996-06-23 17:40:47 +00:00
kern_conf.c
kern_descrip.c Add a couple of #ifdef DEVFS/#endif clauses to slence the following 1996-06-17 16:54:03 +00:00
kern_devconf.c Externalize the declaration of dc_list. This is required in order to 1996-06-12 15:10:30 +00:00
kern_exec.c Use kmem_alloc_wait/kmem_free_wakeup() to avoid allocation failures 1996-06-03 04:12:18 +00:00
kern_exit.c Clean up -Wunused warnings. 1996-06-12 05:11:41 +00:00
kern_fork.c Clean up -Wunused warnings. 1996-06-12 05:11:41 +00:00
kern_ktrace.c
kern_lkm.c Change the *evil* allocation of memory from kmem_map to the kernel_map. 1996-05-24 01:39:50 +00:00
kern_lockf.c
kern_malloc.c Minor performance improvement to kern_malloc.c that increases the 1996-05-18 22:33:13 +00:00
kern_mib.c Move the "mib" variables out to their own file. 1996-04-07 13:03:06 +00:00
kern_ntptime.c
kern_physio.c Fix a problem that caused system crashes after physio. This problem 1996-06-26 05:52:15 +00:00
kern_proc.c Quiet a couple of -Wunused warnings. 1996-07-09 16:51:18 +00:00
kern_prot.c Fix a panic caused by (proc)->p_session being dereferenced for a process 1996-05-30 01:21:50 +00:00
kern_random.c Reduced nesting of #includes in random.h and adjusted isa/random_machdep.c 1996-06-17 16:47:43 +00:00
kern_resource.c Fixed accumulation of run time for processes that don't accumulate 1996-06-08 11:48:28 +00:00
kern_sig.c Log not exited signal only, but the fact that core dumped (or not) too 1996-07-09 18:12:37 +00:00
kern_subr.c
kern_synch.c Don't generate code for the unused function sleep(). 1996-04-07 13:35:58 +00:00
kern_sysctl.c Implemented 'kern_sysctl', which differs from 'userland_sysctl' in that 1996-06-10 16:23:42 +00:00
kern_tc.c Unstaticize psratio and staticize profprocs. psratio needs to be exported 1996-06-23 17:40:47 +00:00
kern_time.c Updated some comments in settimeofday(). 1996-06-08 11:55:32 +00:00
kern_timeout.c Unstaticize psratio and staticize profprocs. psratio needs to be exported 1996-06-23 17:40:47 +00:00
kern_xxx.c
Make.tags.inc
Makefile Remove bogus architectures to allow make tags to work. 1996-03-31 18:53:43 +00:00
makesyscalls.sh
md5c.c
subr_autoconf.c
subr_clist.c Killed sections 3 and 4 of my copyright as I don't agree with it (I believe 1996-04-08 01:22:00 +00:00
subr_disklabel.c Clean up various compiler warnings. Most (if not all) were benign 1996-05-08 04:29:08 +00:00
subr_diskmbr.c Removed now-unused #includes of <machine/cpu.h>. They were for bootverbose 1996-04-07 17:32:42 +00:00
subr_diskslice.c Moved initialization of defaults for the label for the whole disk from 1996-06-17 14:43:54 +00:00
subr_dkbad.c
subr_log.c Quiet a couple of -Wunused warnings. 1996-07-09 16:51:18 +00:00
subr_param.c Add an option "EXTRA_VNODES" to cause an extra number of vnode structures 1996-05-31 00:20:34 +00:00
subr_prf.c Correct a comment. There is no fn `kprintf' 1996-05-09 18:58:06 +00:00
subr_prof.c
subr_rlist.c
subr_trap.c trap.c: 1996-06-25 20:02:16 +00:00
subr_xxx.c
sys_generic.c
sys_pipe.c Get rid of PIPE_NBIO, cleaning up the code a bit. 1996-07-04 04:36:56 +00:00
sys_process.c Remove the now-unnecessary and incorrect wiring of the "other" processes 1996-06-02 06:24:27 +00:00
sys_socket.c
syscalls.c
syscalls.master
sysv_ipc.c
sysv_msg.c
sysv_sem.c Clean up -Wunused warnings. 1996-06-12 05:11:41 +00:00
sysv_shm.c uninitialized auto variable shmseg is used in ... 1996-05-05 13:53:48 +00:00
tty_compat.c
tty_conf.c
tty_cons.c Removed unused #include. 1996-05-01 03:32:46 +00:00
tty_pty.c Clean up -Wunused warnings. 1996-06-12 05:11:41 +00:00
tty_snoop.c Switched from using devfs_add_devsw() to devfs_add_devswf() 1996-03-28 14:31:42 +00:00
tty_subr.c Killed sections 3 and 4 of my copyright as I don't agree with it (I believe 1996-04-08 01:22:00 +00:00
tty_tb.c
tty_tty.c Switched from using devfs_add_devsw() to devfs_add_devswf() 1996-03-28 14:31:42 +00:00
tty.c Clean up -Wunused warnings. 1996-06-12 05:11:41 +00:00
uipc_domain.c This is a proposal-in-code for a substantial modification of the way 1996-07-09 19:12:53 +00:00
uipc_mbuf.c Ups, I removed NMB_INIT too. 1996-05-12 07:48:47 +00:00
uipc_proto.c Clean up various compiler warnings. Most (if not all) were benign 1996-05-08 04:29:08 +00:00
uipc_sockbuf.c This is a proposal-in-code for a substantial modification of the way 1996-07-09 19:12:53 +00:00
uipc_socket2.c This is a proposal-in-code for a substantial modification of the way 1996-07-09 19:12:53 +00:00
uipc_socket.c Make it possible to return more than one piece of control information 1996-05-09 20:15:26 +00:00
uipc_syscalls.c Make it possible to return more than one piece of control information 1996-05-09 20:15:26 +00:00
uipc_usrreq.c
vfs_bio.c Fixed a major bug that caused various pmap related panics, hangs, and reboots. 1996-06-30 05:17:08 +00:00
vfs_cache.c
vfs_cluster.c Fix an error when B_MALLOC buffers are returned from the cluster read 1996-06-03 04:40:35 +00:00
vfs_conf.c
vfs_export.c Add an option "EXTRA_VNODES" to cause an extra number of vnode structures 1996-05-31 00:20:34 +00:00
vfs_extattr.c Dont allow directories to be link()ed or unlink()ed, even for root 1996-05-24 16:19:23 +00:00
vfs_init.c
vfs_lookup.c
vfs_mount.c
vfs_subr.c Add an option "EXTRA_VNODES" to cause an extra number of vnode structures 1996-05-31 00:20:34 +00:00
vfs_syscalls.c Dont allow directories to be link()ed or unlink()ed, even for root 1996-05-24 16:19:23 +00:00
vfs_vnops.c
vnode_if.pl
vnode_if.sh
vnode_if.src