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