This is a major cleanup of the LWKT message port code. The messaging code is getting closer to being directly useable by userland. With these changes message/port operations are now far better abstracted then they were before. * Stale fields have been removed from struct lwkt_msg. * lwkt_abortmsg() has been revamped to make it easier to support. * lwkt_waitmsg has been converted to a port function. * mp_*port() function fields have been renamed for better readability. * ms_cleanupmsg has been removed from struct lwkt_msg. * Union sysmsg is now struct sysmsg. * A copyout function has been added to struct sysmsg. * The system calls have been regenerated.
Syscall messaging 4: Further expand the kernel-version of the syscall message. The (in-kernel) syscall message is now arranged: struct blah_args { sysmsg usrmsg ... syscall arguments ... } Original system calls copyin() just the arguments and then initialize sysmsg and go. Syscall messages copyin() usrmsg+arguments and then initialize sysmsg as appropriate and go. Further detail work for EASYNC support. Implement td_msgport as a reply port and start working on an async capability for the nanosleep() system call. NOTE: Preliminary system call messaging can be tested using the suite of programs in /usr/src/test/sysmsg. NOTE: Work is still in progress and you can crash the system, so use of MSGF_ASYNC for messaging system calls is currently restricted to root. Also fixed a bug in the syscall module helper code in sys/sysent.h, which might have been causing the linux problems (or might not have). All system call headers had to be regenerated to deal with the structural changes.
kernel tree reorganization stage 1: Major cvs repository work (not logged as commits) plus a major reworking of the #include's to accomodate the relocations. * CVS repository files manually moved. Old directories left intact and empty (temporary). * Reorganize all filesystems into vfs/, most devices into dev/, sub-divide devices by function. * Begin to move device-specific architecture files to the device subdirs rather then throwing them all into, e.g. i386/include * Reorganize files related to system busses, placing the related code in a new bus/ directory. Also move cam to bus/cam though this may not have been the best idea in retrospect. * Reorganize emulation code and place it in a new emulation/ directory. * Remove the -I- compiler option in order to allow #include file localization, rename all config generated X.h files to use_X.h to clean up the conflicts. * Remove /usr/src/include (or /usr/include) dependancies during the kernel build, beyond what is normally needed to compile helper programs. * Make config create 'machine' softlinks for architecture specific directories outside of the standard <arch>/include. * Bump the config rev. WARNING! after this commit /usr/include and /usr/src/sys/compile/* should be regenerated from scratch.
syscall messaging 3: Expand the 'header' that goes in front of the syscall arguments in the kernel copy. The header was previously just an lwkt_msg. The header is now a 'union sysmsg'. 'union sysmsg' contains an lwkt_msg plus space for the additional meta data required to asynchronize various system calls. We haven't actually asynchronized anything yet and will not be able to until the reply port and abort processing infrastructure is in place. See sys/sysmsg.h for more information on the new header. Also cleanup syscall generation somewhat and add some ibcs2 stuff I missed.