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