Implement an upcall mechanism to support userland LWKT. This mechanism will
authorMatthew Dillon <dillon@dragonflybsd.org>
Fri, 21 Nov 2003 05:29:08 +0000 (05:29 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Fri, 21 Nov 2003 05:29:08 +0000 (05:29 +0000)
commita722be4938df1e51a53f4d0187de2f179b7e46b5
treec335191a6c4bf3b4a08a16d66f34c9f893515062
parenta812423fa23368eb6d65ccff3b31fb1eac1ab88a
Implement an upcall mechanism to support userland LWKT.  This mechanism will
allow multiple processes sharing the same VM space (aka clone/threading)
to send each other what are basically IPIs.

Two new system calls have been added, upc_register() and upc_control().
Documentation is forthcoming.  The upcalls are nicely abstracted and a
program can register as many as it wants up to the kernel limit (which
is 32 at the moment).

The upcalls will be used for passing asynch data from kernel to userland,
such as asynch syscall message replies, for thread preemption timing,
software interrupts, IPIs between virtual cpus (e.g. between the processes
that are sharing the single VM space).
28 files changed:
sys/conf/files
sys/cpu/i386/include/cpu.h
sys/i386/i386/genassym.c
sys/i386/i386/machdep.c
sys/i386/i386/trap.c
sys/i386/include/cpu.h
sys/i386/isa/ipl.s
sys/kern/init_sysent.c
sys/kern/kern_exit.c
sys/kern/kern_upcall.c [new file with mode: 0644]
sys/kern/syscalls.c
sys/kern/syscalls.master
sys/platform/pc32/i386/genassym.c
sys/platform/pc32/i386/machdep.c
sys/platform/pc32/i386/trap.c
sys/platform/pc32/isa/ipl.s
sys/platform/vkernel/i386/genassym.c
sys/sys/globaldata.h
sys/sys/proc.h
sys/sys/signalvar.h
sys/sys/syscall-hide.h
sys/sys/syscall.h
sys/sys/syscall.mk
sys/sys/sysproto.h
sys/sys/sysunion.h
sys/sys/upcall.h [new file with mode: 0644]
sys/vm/vm_map.c
sys/vm/vm_map.h