Home | History | Annotate | Line # | Download | only in rump
README.compileopts revision 1.7
      1 	$NetBSD: README.compileopts,v 1.7 2015/04/23 14:39:03 pooka Exp $
      2 
      3 This file describes compile-time options for rump kernels.  Additionally,
      4 NetBSD build options will have an effect.  See src/share/mk/bsd.README
      5 for a desciption of NetBSD build options.
      6 
      7 Note: after changing an option, do a clean build.
      8 
      9 Global options:
     10 
     11 
     12     RUMP_DIAGNOSTIC
     13 
     14 values:	yes|no
     15 defval:	yes
     16 effect:	Iff "yes", build with -DDIAGNOSTIC.
     17 
     18 
     19     RUMP_DEBUG
     20 
     21 values:	defined / not defined
     22 effect:	Iff defined, build with -DDEBUG.
     23 
     24 
     25     RUMP_LOCKDEBUG
     26 
     27 values:	defined / not defined
     28 effect:	Iff defined, build with -DLOCKDEBUG.
     29 
     30 
     31     RUMP_KTRACE
     32 
     33 values:	yes|no
     34 defval:	yes
     35 effect:	Iff "yes", build with -DKTRACE.
     36 
     37 
     38     RUMP_LOCKS_UP
     39 
     40 values: yes|no
     41 defval:	no
     42 effect: If "yes", build rump kernel with uniprocess-optimized locking.
     43 	An implication of this is that RUMP_NCPU==1 is required at
     44 	runtime.  If "no", build with multiprocessor-capable locking.
     45 
     46 
     47     RUMP_UNREAL_ALLOCATORS
     48 
     49 values: yes|no
     50 defval:	no
     51 effect: If "yes", build version of kmem_alloc, pool and pool_cache
     52 	that directly relegate allocation to a hypercall.  If "no",
     53 	build the regular NetBSD memory allocators which use
     54 	page-sized memory allocation hypercalls.
     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_COMPAT
     81 
     82 values: either a comma-separated list of releases (e.g. 50,60), or "all"
     83 defval:	two previous NetBSD releases; check Makefile.rump
     84 effect:	Builds COMPAT_nn code for each of the elements in the list.
     85 	This is only useful when building rump kernels for NetBSD
     86 	userspace.
     87 
     88 
     89 ================================================================================
     90 
     91 Rumpuser options:
     92 
     93     RUMPUSER_THREADS
     94 
     95 values: pthread/none/fiber or <undefined>
     96 defval: <undefined>
     97 effect: Define the way threading is implemented in the rumpuser hypercall
     98 	implmentation.
     99 	<undefined> - use default implementation (currently "pthread")
    100 	pthread     - use pthreads to implement threading
    101 	none        - do not support kernel threads at all
    102 	fiber       - user a fiber interface, cooperatively scheduled contexts
    103 
    104 
    105 ================================================================================
    106 
    107 Per-component options:
    108 
    109     RUMP_SYM_NORENAME
    110 
    111 values: regexp matching symbol names
    112 defval: <undefined>
    113 effect: Causes matching symbols from the component to not be renamed
    114 	into the rump kernel symbol namespace (rumpns_).  This option
    115 	can only be used in embedded environments where there is full
    116 	control over the platform's namespace.	Conversely, this option
    117 	cannot be used in kernel components which are not meant to be
    118 	tied to a specific platform.  Note: the value is processed by
    119 	make and must be appropriately escaped.  example:
    120 	RUMP_SYM_NORENAME=HYPERVISOR_|block$$
    121 	will not rename "^HYPERVISOR_" or "^block$"
    122 
    123 
    124 ================================================================================
    125 
    126 
    127 The rest of the options described in this file are not intended to be
    128 set by users, but by the package building rump kernels.
    129 
    130 
    131     RUMP_KERNEL_IS_LIBC
    132 
    133 values:	defined / not defined
    134 effect: Iff defined, export normal system call symbols from libc.
    135 	For example, without this option rump_sys_open() is exported.
    136 	With this option, both open() and rump_sys_open() are exported.
    137 	This option is meant for building systems where a rump kernel
    138 	is the only operating system like component.
    139 
    140 
    141     RUMP_LDSCRIPT
    142 
    143 values: no/GNU/sun/ctor
    144 defval: GNU
    145 effect: Select the linker script to be used for linking rump kernel shared
    146 	library components.
    147 	no	- do not use a linker script
    148 	GNU	- use a linker script for GNU ld 2.18 and later
    149 	sun	- use a linker script for the Solaris linker
    150 	ctor	- do not use a linker script, make the code
    151 		  generate __attribute__((constructor))
    152