11.12Spooka	$NetBSD: README.dirs,v 1.12 2013/01/08 13:12:26 pooka Exp $
21.1Spooka
31.1Spooka
41.11SpookaThe following is a quick rundown of the current directory structure.
51.11SpookaFirst, components in the kernel namespace, i.e. compiled with -D_KERNEL
61.1Spooka
71.12Spookasys/rump/librump - rump kernel base and factions
81.9Spooka  /rumpkern	- kernel core, e.g. syscall, interrupt and lock support
91.9Spooka
101.9Spooka  /rumpdev	- device support, e.g. autoconf subsystem
111.9Spooka  /rumpnet	- networking support and sockets layer
121.9Spooka  /rumpvfs	- file system support
131.1Spooka
141.4Spookasys/rump/include
151.12Spooka  /machine - used for architectures where the rump kernel ABI is not yet the
161.8Spooka	     same as the kernel module ABI.  will eventually disappear
171.8Spooka	     completely
181.12Spooka  /rump    - kernel headers installed to userspace
191.1Spooka
201.11Spookasys/rump/dev - device components, e.g. audio, raidframe, usb drivers
211.9Spooka
221.9Spookasys/rump/fs - file system components
231.11Spooka  /lib/lib${fs}  - kernel file system code
241.4Spooka
251.9Spookasys/rump/net - networking components
261.5Spooka  /lib/libnet	  - subroutines from sys/net, e.g. route and if_ethersubr
271.5Spooka  /lib/libnetinet - TCP/IP
281.5Spooka  /lib/libvirtif  - a virtual interface which uses host tap(4) to shovel
291.5Spooka		    packets.  This is used by netinet and if_ethersubr.
301.12Spooka  /lib/libshmif   - a virtual interface which uses a memory mapped file
311.12Spooka		    as an ethernet bus.  works completely unprivileged.
321.5Spooka  /lib/libsockin  - implements PF_INET using host kernel sockets.  This is
331.5Spooka		    mutually exclusive with net, netinet and virtif.
341.4Spooka
351.11Spooka
361.11Spooka
371.12SpookaThe rest are out-of-kernel components (i.e. no -D_KERNEL).
381.11Spooka
391.11Spookahypercall interface:
401.11Spookasrc/lib/librumpuser
411.12Spooka  The "rumpuser" hypercall interfaces are used by a rump kernel to
421.12Spooka  access host resources.
431.12Spooka
441.12Spookaremote client interface:
451.12Spookasrc/lib/librumpclient
461.12Spooka  The rumpclient library provides remote access to rump kernel servers.
471.12Spooka
481.12Spookasystem call hijacking:
491.12Spookasrc/lib/librumphijack
501.12Spooka  The rumphijack library allows intercepting system calls and redirecting
511.12Spooka  them to a rump kernel server instead of the host kernel.  In other
521.12Spooka  words, it allows existing binaries to request indicated services from
531.12Spooka  a rump kernel instead of from the host kernel.
541.11Spooka
551.4SpookaUsers:
561.4Spookasrc/lib
571.4Spooka  /libp2k  - puffs-to-vfs adaption layer, userspace namespace
581.4Spooka  /libukfs - user kernel file system, a library to access file system
591.4Spooka	     images (or devices) directly in userspace without going
601.11Spooka	     through a system call and puffs.  It provides a slightly
611.12Spooka	     higher interface than syscalls.
621.4Spooka
631.4Spookasrc/usr.sbin/puffs
641.4Spooka  rump_$fs - userspace file system daemons using the kernel fs code
651.11Spooka
661.11Spookasrc/share/examples/rump
671.12Spooka  Various examples detailing use of rump kernels in different scenarios.
681.11Spooka  These are provided source-only.
69