README.compileopts revision 1.9 1 1.9 pooka $NetBSD: README.compileopts,v 1.9 2015/04/24 06:29:56 pooka 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.5 pooka Global options:
10 1.5 pooka
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.8 pooka RUMP_NBCOMPAT
81 1.7 pooka
82 1.9 pooka values: comma-separated list of releases, e.g. 60,70
83 1.9 pooka defval: all
84 1.8 pooka effect: Builds NetBSD COMPAT_nn code for each of the elements in the list.
85 1.8 pooka This option is useful only when building rump kernels for
86 1.8 pooka NetBSD userspace, and an empty value may be supplied elsewhere.
87 1.7 pooka
88 1.7 pooka
89 1.1 pooka ================================================================================
90 1.1 pooka
91 1.6 justin Rumpuser options:
92 1.6 justin
93 1.6 justin RUMPUSER_THREADS
94 1.6 justin
95 1.6 justin values: pthread/none/fiber or <undefined>
96 1.6 justin defval: <undefined>
97 1.6 justin effect: Define the way threading is implemented in the rumpuser hypercall
98 1.6 justin implmentation.
99 1.6 justin <undefined> - use default implementation (currently "pthread")
100 1.6 justin pthread - use pthreads to implement threading
101 1.6 justin none - do not support kernel threads at all
102 1.6 justin fiber - user a fiber interface, cooperatively scheduled contexts
103 1.6 justin
104 1.6 justin
105 1.6 justin ================================================================================
106 1.6 justin
107 1.5 pooka Per-component options:
108 1.5 pooka
109 1.5 pooka RUMP_SYM_NORENAME
110 1.5 pooka
111 1.5 pooka values: regexp matching symbol names
112 1.5 pooka defval: <undefined>
113 1.5 pooka effect: Causes matching symbols from the component to not be renamed
114 1.5 pooka into the rump kernel symbol namespace (rumpns_). This option
115 1.5 pooka can only be used in embedded environments where there is full
116 1.5 pooka control over the platform's namespace. Conversely, this option
117 1.5 pooka cannot be used in kernel components which are not meant to be
118 1.5 pooka tied to a specific platform. Note: the value is processed by
119 1.5 pooka make and must be appropriately escaped. example:
120 1.5 pooka RUMP_SYM_NORENAME=HYPERVISOR_|block$$
121 1.5 pooka will not rename "^HYPERVISOR_" or "^block$"
122 1.5 pooka
123 1.5 pooka
124 1.5 pooka ================================================================================
125 1.5 pooka
126 1.1 pooka
127 1.1 pooka The rest of the options described in this file are not intended to be
128 1.1 pooka set by users, but by the package building rump kernels.
129 1.1 pooka
130 1.1 pooka
131 1.1 pooka RUMP_KERNEL_IS_LIBC
132 1.1 pooka
133 1.1 pooka values: defined / not defined
134 1.1 pooka effect: Iff defined, export normal system call symbols from libc.
135 1.1 pooka For example, without this option rump_sys_open() is exported.
136 1.1 pooka With this option, both open() and rump_sys_open() are exported.
137 1.1 pooka This option is meant for building systems where a rump kernel
138 1.1 pooka is the only operating system like component.
139 1.1 pooka
140 1.1 pooka
141 1.1 pooka RUMP_LDSCRIPT
142 1.1 pooka
143 1.4 pooka values: no/GNU/sun/ctor
144 1.1 pooka defval: GNU
145 1.1 pooka effect: Select the linker script to be used for linking rump kernel shared
146 1.1 pooka library components.
147 1.4 pooka no - do not use a linker script
148 1.4 pooka GNU - use a linker script for GNU ld 2.18 and later
149 1.4 pooka sun - use a linker script for the Solaris linker
150 1.4 pooka ctor - do not use a linker script, make the code
151 1.4 pooka generate __attribute__((constructor))
152