NetBSD/sys/rump
pooka 795967533e Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax).  For example, in the rumpuser-xen xenbus driver:
 RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)
2014-06-20 11:57:56 +00:00
..
dev mvphy is not configured, so don't try to build it 2014-05-26 19:55:53 +00:00
fs Move lfs_getpages and lfs_putpages to their own file. 2014-05-16 09:34:03 +00:00
include Revert last change. This is not the right place for rumpuser_sync_icache(). 2014-06-18 19:50:32 +00:00
kern Regen for utimes(2). 2014-05-29 10:42:23 +00:00
librump Fix error return for rump_vfs_makeonedevnode() 2014-06-20 11:27:25 +00:00
net - Implement pktqueue interface for lockless IP input queue. 2014-06-05 23:48:16 +00:00
ldscript_sun.rump Generate support for sun ld. 2013-03-15 12:13:07 +00:00
ldscript.rump domains are attached by module(-like) constructors, so no need to 2014-04-23 17:05:18 +00:00
linksyms_sun.c Generate support for sun ld. 2013-03-15 12:13:07 +00:00
listsrcdirs Add cat, rpcgen and stat to TOOLS_BUILDRUMP. They're useful for 2014-06-15 14:36:57 +00:00
Makefile
Makefile.rump Some rump kernel components for interfacing with the environment need 2014-06-20 11:57:56 +00:00
makerumpsyscalls.sh unsprinkle const to fix clang build. mmm, travis ci 2014-04-27 16:28:21 +00:00
README.compileopts Add a RUMP_USE_CTOR compile-time switch. If defined, use 2014-04-23 23:25:45 +00:00
README.dirs
rump.sysmap Eliminate weak symbols from rump kernel syscall handlers, part 5: 2014-04-27 15:11:22 +00:00
sunldgen.sh Support generating support for Sun ld. 2013-03-15 12:12:16 +00:00
TODO yearly update 2014-01-15 15:10:31 +00:00

	$NetBSD: README.dirs,v 1.12 2013/01/08 13:12:26 pooka Exp $


The following is a quick rundown of the current directory structure.
First, components in the kernel namespace, i.e. compiled with -D_KERNEL

sys/rump/librump - rump kernel base and factions
  /rumpkern	- kernel core, e.g. syscall, interrupt and lock support

  /rumpdev	- device support, e.g. autoconf subsystem
  /rumpnet	- networking support and sockets layer
  /rumpvfs	- file system support

sys/rump/include
  /machine - used for architectures where the rump kernel ABI is not yet the
	     same as the kernel module ABI.  will eventually disappear
	     completely
  /rump    - kernel headers installed to userspace

sys/rump/dev - device components, e.g. audio, raidframe, usb drivers

sys/rump/fs - file system components
  /lib/lib${fs}  - kernel file system code

sys/rump/net - networking components
  /lib/libnet	  - subroutines from sys/net, e.g. route and if_ethersubr
  /lib/libnetinet - TCP/IP
  /lib/libvirtif  - a virtual interface which uses host tap(4) to shovel
		    packets.  This is used by netinet and if_ethersubr.
  /lib/libshmif   - a virtual interface which uses a memory mapped file
		    as an ethernet bus.  works completely unprivileged.
  /lib/libsockin  - implements PF_INET using host kernel sockets.  This is
		    mutually exclusive with net, netinet and virtif.



The rest are out-of-kernel components (i.e. no -D_KERNEL).

hypercall interface:
src/lib/librumpuser
  The "rumpuser" hypercall interfaces are used by a rump kernel to
  access host resources.

remote client interface:
src/lib/librumpclient
  The rumpclient library provides remote access to rump kernel servers.

system call hijacking:
src/lib/librumphijack
  The rumphijack library allows intercepting system calls and redirecting
  them to a rump kernel server instead of the host kernel.  In other
  words, it allows existing binaries to request indicated services from
  a rump kernel instead of from the host kernel.

Users:
src/lib
  /libp2k  - puffs-to-vfs adaption layer, userspace namespace
  /libukfs - user kernel file system, a library to access file system
	     images (or devices) directly in userspace without going
	     through a system call and puffs.  It provides a slightly
	     higher interface than syscalls.

src/usr.sbin/puffs
  rump_$fs - userspace file system daemons using the kernel fs code

src/share/examples/rump
  Various examples detailing use of rump kernels in different scenarios.
  These are provided source-only.