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