Up to [DragonFly] / src / sys / sys
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
1:1 Userland threading stage 4.6/4: Factor out a new function `lwp_fork()' from fork1(). Rearrange various fork helpers to operate exclusively on procs or lwps. Collect some MI code from MD sources into lwp_fork(). Reviewed-by: Thomas E. Spanjaard <firstname.lastname@example.org>
1:1 Userland threading stage 2.11/4: Move signals into lwps, take p_lwp out of proc. Originally-Submitted-by: David Xu <email@example.com> Reviewed-by: Thomas E. Spanjaard <firstname.lastname@example.org>
I'm growing tired of having to add #include lines for header files that the include file(s) I really want depend on. Go through nearly all major system include files and add appropriately #ifndef'd #include lines to include all dependant header files. Kernel source files now only need to #include the header files they directly depend on. So, for example, if I wanted to add a SYSCTL to a kernel source file, I would only have to #include <sys/sysctl.h> to bring in the support for it, rather then four or five header files in addition to <sys/sysctl.h>.
Add missing function prototype.
Change CAPS over to use XIO instead of the vmspace_copy() junk it was using before. This almost doubles CAPS IPC messaging performance. Also correct a number of memory leaks due to incorrect reference counting.
Correct typo in comment.
Additional CAPS IPC work. Add additional system calls to allow a CAPS server to set a generation number and a CAPS client to query it, which can be used for any purpose but which is intended to allow a server to tell its clients to invalidate their caches. Add missing fork-handling code. CAPS links are only good on a thread-by-thread basis. When a process forks/rforks/clones any active CAPS links will be created as dummy entries in the forked process, causing CAPS syscalls to return ENOTCONN. This allows code based on CAPS to detect when it has been forked so it can re-connect to the service. Make a slight change to the API. caps_sys_put() now returns an immediate ENOTCONN if it forked. Note that userland CAPS code must still deal with the case where a message has been sent and the connection is lost before the reply is returned. The kernel automatically replies unreplied messages with 0-length data in these cases. Add additional flags to the API, including one that allows a client to block when connecting to a non-existant service.
Remove parameter names. Submitted by Chris Pressey <email@example.com>
move the caps_type enum so it is accessible through both user and kernel compiles.
CAPS IPC library stage 1/3: The core CAPS IPC code, providing system calls to create and connect to named rendezvous points. The CAPS interface implements a many-to-1 (client:server) capability and is totally self contained. The messaging is designed to support single and multi-threading, synchronous or asynchronous (as of this commit: polling and synchronous only). Message data is 100% opaque and so while the intention is to integrate it into a userland LWKT messaging subsystem, the actual system calls do not depend on any LWKT structures. Since these system calls are experiemental and may contain root holes, they must be enabled via the sysctl kern.caps_enabled.
Add a new library, libcaps, which is intended to encompass DragonFly-specific core threading and IPC mechanisms. As of this commit the library is very incomplete. It works just well enough to run the IPC test program unthreaded. For the moment it is implemented via unix domain sockets. The IPC mechanism is eventually expected to be moved directly into the kernel and use an upcall for replies.