README.compileopts revision 1.6
11.6Sjustin $NetBSD: README.compileopts,v 1.6 2014/07/11 20:26:31 justin Exp $ 21.1Spooka 31.1SpookaThis file describes compile-time options for rump kernels. Additionally, 41.1SpookaNetBSD build options will have an effect. See src/share/mk/bsd.README 51.1Spookafor a desciption of NetBSD build options. 61.1Spooka 71.2SpookaNote: after changing an option, do a clean build. 81.2Spooka 91.5SpookaGlobal options: 101.5Spooka 111.1Spooka 121.1Spooka RUMP_DIAGNOSTIC 131.1Spooka 141.1Spookavalues: yes|no 151.1Spookadefval: yes 161.1Spookaeffect: Iff "yes", build with -DDIAGNOSTIC. 171.1Spooka 181.1Spooka 191.1Spooka RUMP_DEBUG 201.1Spooka 211.1Spookavalues: defined / not defined 221.1Spookaeffect: Iff defined, build with -DDEBUG. 231.1Spooka 241.1Spooka 251.1Spooka RUMP_LOCKDEBUG 261.1Spooka 271.1Spookavalues: defined / not defined 281.1Spookaeffect: Iff defined, build with -DLOCKDEBUG. 291.1Spooka 301.1Spooka 311.1Spooka RUMP_KTRACE 321.1Spooka 331.1Spookavalues: yes|no 341.1Spookadefval: yes 351.1Spookaeffect: Iff "yes", build with -DKTRACE. 361.1Spooka 371.1Spooka 381.1Spooka RUMP_LOCKS_UP 391.1Spooka 401.1Spookavalues: yes|no 411.1Spookadefval: no 421.1Spookaeffect: If "yes", build rump kernel with uniprocess-optimized locking. 431.1Spooka An implication of this is that RUMP_NCPU==1 is required at 441.1Spooka runtime. If "no", build with multiprocessor-capable locking. 451.1Spooka 461.1Spooka 471.1Spooka RUMP_UNREAL_ALLOCATORS 481.1Spooka 491.1Spookavalues: yes|no 501.1Spookadefval: no 511.1Spookaeffect: If "yes", build version of kmem_alloc, pool and pool_cache 521.1Spooka that directly relegate allocation to a hypercall. If "no", 531.1Spooka build the regular NetBSD memory allocators which use 541.1Spooka page-sized memory allocation hypercalls. 551.1Spooka 561.1Spooka 571.1Spooka RUMP_VIRTIF 581.1Spooka 591.1Spookavalues: yes|no 601.1Spookadefval: yes 611.1Spookaeffect: Iff "yes", build the virt(4) network interface. Turning this 621.1Spooka off may be necessary on systems that lack the necessary headers, 631.1Spooka e.g. musl libc based Linux. 641.1Spooka 651.1Spooka 661.3Spooka RUMP_CURLWP 671.3Spooka 681.3Spookavalues: hypercall/__thread/register or <undefined> 691.3Spookadefval: <undefined> 701.3Spookaeffect: Control how curlwp is obtained in a rump kernel. This is 711.3Spooka a very frequently accessed thread-local variable, and optimizing 721.3Spooka access has a significant performance impact. Note that all 731.3Spooka options are not available on hosts/machine architectures. 741.3Spooka <undefined> - use default implementation (currently "hypercall") 751.3Spooka hypercall - use a hypercall to fetch the value 761.3Spooka __thread - use the __thread feature to fetch value via TLS 771.3Spooka register - use a dedicated register (implies -ffixed) 781.3Spooka 791.3Spooka 801.1Spooka================================================================================ 811.1Spooka 821.6SjustinRumpuser options: 831.6Sjustin 841.6Sjustin RUMPUSER_THREADS 851.6Sjustin 861.6Sjustinvalues: pthread/none/fiber or <undefined> 871.6Sjustindefval: <undefined> 881.6Sjustineffect: Define the way threading is implemented in the rumpuser hypercall 891.6Sjustin implmentation. 901.6Sjustin <undefined> - use default implementation (currently "pthread") 911.6Sjustin pthread - use pthreads to implement threading 921.6Sjustin none - do not support kernel threads at all 931.6Sjustin fiber - user a fiber interface, cooperatively scheduled contexts 941.6Sjustin 951.6Sjustin 961.6Sjustin================================================================================ 971.6Sjustin 981.5SpookaPer-component options: 991.5Spooka 1001.5Spooka RUMP_SYM_NORENAME 1011.5Spooka 1021.5Spookavalues: regexp matching symbol names 1031.5Spookadefval: <undefined> 1041.5Spookaeffect: Causes matching symbols from the component to not be renamed 1051.5Spooka into the rump kernel symbol namespace (rumpns_). This option 1061.5Spooka can only be used in embedded environments where there is full 1071.5Spooka control over the platform's namespace. Conversely, this option 1081.5Spooka cannot be used in kernel components which are not meant to be 1091.5Spooka tied to a specific platform. Note: the value is processed by 1101.5Spooka make and must be appropriately escaped. example: 1111.5Spooka RUMP_SYM_NORENAME=HYPERVISOR_|block$$ 1121.5Spooka will not rename "^HYPERVISOR_" or "^block$" 1131.5Spooka 1141.5Spooka 1151.5Spooka================================================================================ 1161.5Spooka 1171.1Spooka 1181.1SpookaThe rest of the options described in this file are not intended to be 1191.1Spookaset by users, but by the package building rump kernels. 1201.1Spooka 1211.1Spooka 1221.1Spooka RUMP_KERNEL_IS_LIBC 1231.1Spooka 1241.1Spookavalues: defined / not defined 1251.1Spookaeffect: Iff defined, export normal system call symbols from libc. 1261.1Spooka For example, without this option rump_sys_open() is exported. 1271.1Spooka With this option, both open() and rump_sys_open() are exported. 1281.1Spooka This option is meant for building systems where a rump kernel 1291.1Spooka is the only operating system like component. 1301.1Spooka 1311.1Spooka 1321.1Spooka RUMP_LDSCRIPT 1331.1Spooka 1341.4Spookavalues: no/GNU/sun/ctor 1351.1Spookadefval: GNU 1361.1Spookaeffect: Select the linker script to be used for linking rump kernel shared 1371.1Spooka library components. 1381.4Spooka no - do not use a linker script 1391.4Spooka GNU - use a linker script for GNU ld 2.18 and later 1401.4Spooka sun - use a linker script for the Solaris linker 1411.4Spooka ctor - do not use a linker script, make the code 1421.4Spooka generate __attribute__((constructor)) 143