Home | History | Annotate | only in /src/sys/rump
Up to higher level directory
NameDateSize
dev/Today
fs/Today
include/09-Nov-2022
kern/09-Nov-2022
ldscript.rump21-Mar-2020949
ldscript_sun.rump15-Mar-20132.4K
librump/Today
linksyms_sun.c15-Mar-20132.6K
listsrcdirs25-Apr-20204.7K
Makefile09-Nov-2014161
Makefile.rump20-May-20248.6K
makerumpsyscalls.sh26-Jan-20162.2K
net/Today
README.compileopts05-Jul-20233.9K
README.dirs08-Jan-20132.5K
rump.sysmap20-May-202415.7K
share/09-Nov-2022
sunldgen.sh15-Mar-20131.7K
TODO08-Sep-20151,023

README.compileopts

      1 	$NetBSD: README.compileopts,v 1.17 2023/07/05 16:40:34 lukem Exp $
      2 
      3 This file describes compile-time options for rump kernels.
      4 
      5 Additionally, NetBSD build options will have an effect; see mk.conf(5)
      6 and src/share/mk/bsd.README for a description of NetBSD build options.
      7 
      8 Note: after changing an option, do a clean build.
      9 
     10 Global options:
     11 
     12 
     13     RUMP_DIAGNOSTIC
     14 
     15 values:	yes|no
     16 defval:	yes
     17 effect:	Iff "yes", build with -DDIAGNOSTIC.
     18 
     19 
     20     RUMP_DEBUG
     21 
     22 values:	<defined> / <undefined>
     23 defval:	<undefined>
     24 effect:	Iff defined, build with -DDEBUG.
     25 
     26 
     27     RUMP_LOCKDEBUG
     28 
     29 values:	<defined> / <undefined>
     30 defval:	<undefined>
     31 effect:	Iff defined, build with -DLOCKDEBUG.
     32 
     33 
     34     RUMP_VNODE_LOCKDEBUG
     35 
     36 values:	<defined> / <undefined>
     37 defval:	<undefined>
     38 effect:	Iff defined, build with -DVNODE_LOCKDEBUG.
     39 
     40 
     41     RUMP_KTRACE
     42 
     43 values:	yes|no
     44 defval:	yes
     45 effect:	Iff "yes", build with -DKTRACE.
     46 
     47 
     48     RUMP_LOCKS_UP
     49 
     50 values: yes|no
     51 defval:	no
     52 effect: If "yes", build rump kernel with uniprocess-optimized locking.
     53 	An implication of this is that RUMP_NCPU==1 is required at
     54 	runtime.  If "no", build with multiprocessor-capable locking.
     55 
     56 
     57     RUMP_VIRTIF
     58 
     59 values:	yes|no
     60 defval:	yes
     61 effect:	Iff "yes", build the virt(4) network interface.  Turning this
     62 	off may be necessary on systems that lack the necessary headers,
     63 	e.g. musl libc based Linux.
     64 
     65 
     66     RUMP_CURLWP
     67 
     68 values: hypercall/__thread/register or <undefined>
     69 defval: <undefined>
     70 effect: Control how curlwp is obtained in a rump kernel.  This is
     71 	a very frequently accessed thread-local variable, and optimizing
     72 	access has a significant performance impact.  Note that all
     73 	options are not available on hosts/machine architectures.
     74 	<undefined> - use default implementation (currently "hypercall")
     75 	hypercall   - use a hypercall to fetch the value
     76 	__thread    - use the __thread feature to fetch value via TLS
     77 	register    - use a dedicated register (implies -ffixed)
     78 
     79 
     80     RUMP_NBCOMPAT
     81 
     82 values: comma-separated list of releases; e.g. "60,70";
     83 	or "all" or "default" or "none".  Currently default == all (but
     84 	might not be so in the future)
     85 defval:	all
     86 effect:	Builds NetBSD COMPAT_nn code for each of the elements in the list.
     87 	This option is useful only when building rump kernels for
     88 	NetBSD userspace, and an empty value may be supplied elsewhere.
     89 
     90 
     91 ================================================================================
     92 
     93 Per-component options:
     94 
     95     RUMP_SYM_NORENAME
     96 
     97 values: regexp matching symbol names
     98 defval: <undefined>
     99 effect: Causes matching symbols from the component to not be renamed
    100 	into the rump kernel symbol namespace (rumpns_).  This option
    101 	can only be used in embedded environments where there is full
    102 	control over the platform's namespace.	Conversely, this option
    103 	cannot be used in kernel components which are not meant to be
    104 	tied to a specific platform.  Note: the value is processed by
    105 	make and must be appropriately escaped.  example:
    106 	RUMP_SYM_NORENAME=HYPERVISOR_|block$$
    107 	will not rename "^HYPERVISOR_" or "^block$"
    108 
    109 
    110 ================================================================================
    111 
    112 
    113 The rest of the options described in this file are not intended to be
    114 set by users, but by the package building rump kernels.
    115 
    116 
    117     RUMP_KERNEL_IS_LIBC
    118 
    119 values:	defined / not defined
    120 effect: Iff defined, export normal system call symbols from libc.
    121 	For example, without this option rump_sys_open() is exported.
    122 	With this option, both open() and rump_sys_open() are exported.
    123 	This option is meant for building systems where a rump kernel
    124 	is the only operating system like component.
    125 
    126 
    127     RUMP_LDSCRIPT
    128 
    129 values: no/GNU/sun/ctor
    130 defval: GNU
    131 effect: Select the linker script to be used for linking rump kernel shared
    132 	library components.
    133 	no	- do not use a linker script
    134 	GNU	- use a linker script for GNU ld 2.18 and later
    135 	sun	- use a linker script for the Solaris linker
    136 	ctor	- do not use a linker script, make the code
    137 		  generate __attribute__((constructor))
    138 

README.dirs

      1 	$NetBSD: README.dirs,v 1.12 2013/01/08 13:12:26 pooka Exp $
      2 
      3 
      4 The following is a quick rundown of the current directory structure.
      5 First, components in the kernel namespace, i.e. compiled with -D_KERNEL
      6 
      7 sys/rump/librump - rump kernel base and factions
      8   /rumpkern	- kernel core, e.g. syscall, interrupt and lock support
      9 
     10   /rumpdev	- device support, e.g. autoconf subsystem
     11   /rumpnet	- networking support and sockets layer
     12   /rumpvfs	- file system support
     13 
     14 sys/rump/include
     15   /machine - used for architectures where the rump kernel ABI is not yet the
     16 	     same as the kernel module ABI.  will eventually disappear
     17 	     completely
     18   /rump    - kernel headers installed to userspace
     19 
     20 sys/rump/dev - device components, e.g. audio, raidframe, usb drivers
     21 
     22 sys/rump/fs - file system components
     23   /lib/lib${fs}  - kernel file system code
     24 
     25 sys/rump/net - networking components
     26   /lib/libnet	  - subroutines from sys/net, e.g. route and if_ethersubr
     27   /lib/libnetinet - TCP/IP
     28   /lib/libvirtif  - a virtual interface which uses host tap(4) to shovel
     29 		    packets.  This is used by netinet and if_ethersubr.
     30   /lib/libshmif   - a virtual interface which uses a memory mapped file
     31 		    as an ethernet bus.  works completely unprivileged.
     32   /lib/libsockin  - implements PF_INET using host kernel sockets.  This is
     33 		    mutually exclusive with net, netinet and virtif.
     34 
     35 
     36 
     37 The rest are out-of-kernel components (i.e. no -D_KERNEL).
     38 
     39 hypercall interface:
     40 src/lib/librumpuser
     41   The "rumpuser" hypercall interfaces are used by a rump kernel to
     42   access host resources.
     43 
     44 remote client interface:
     45 src/lib/librumpclient
     46   The rumpclient library provides remote access to rump kernel servers.
     47 
     48 system call hijacking:
     49 src/lib/librumphijack
     50   The rumphijack library allows intercepting system calls and redirecting
     51   them to a rump kernel server instead of the host kernel.  In other
     52   words, it allows existing binaries to request indicated services from
     53   a rump kernel instead of from the host kernel.
     54 
     55 Users:
     56 src/lib
     57   /libp2k  - puffs-to-vfs adaption layer, userspace namespace
     58   /libukfs - user kernel file system, a library to access file system
     59 	     images (or devices) directly in userspace without going
     60 	     through a system call and puffs.  It provides a slightly
     61 	     higher interface than syscalls.
     62 
     63 src/usr.sbin/puffs
     64   rump_$fs - userspace file system daemons using the kernel fs code
     65 
     66 src/share/examples/rump
     67   Various examples detailing use of rump kernels in different scenarios.
     68   These are provided source-only.
     69