OKL4 Build Options
This page provides a detailed listing of all command-line options available when building OKL4. For a general description of the build process, see BuildingAndSimulating.
General Build Options
Option |
Description |
Possible Values |
Default |
MACHINE |
The machine/architecture for which to build OKL4 |
A valid machine name in tools/machines.py |
None (required option) |
PROJECT |
The project to build |
The name of a sub-directory inside the projects directory |
None (required option) |
BUILD_DIR |
The sub-directory in which to build OKL4/OK Linux |
Any (an existing directory will be overwritten) |
build |
TOOLCHAIN |
The toolchain with which to build OKL4/OK Linux |
A valid toolchain in arch/{arch}/tools/toolchains.py |
default_toolchain attribute in your machines.py machine definition |
RUN |
The simulator (or hardware) to use to execute the image following a successful build |
A valid key from dict attribute run_methods in your machines.py machine definition |
default_method attribute in your machines.py machine definition |
Debugging Options
Option |
Description |
Possible Values |
Default |
VERBOSE_STR |
Controls the output of verbose build information from SCons |
True or False |
False |
VERBOSE_INIT |
Controls the output of verbose kernel initialisation information on boot |
True or False |
False |
ENABLE_DEBUG |
Enables or disables debugging for both the kernel and Iguana. This needs to be enabled for KDB, tracepoints, and tracebuffers to operate |
True or False |
True |
DEBUG_TRACE |
Sets Iguana debug output level |
0 to 5 (0 being no output, 5 being highest) |
0 |
KDB_COLOR_VT |
Enables KDB to output in color mode |
True or False |
True |
ASSERT_LEVEL |
The level at which assertions are evaluated. The ASSERT macro requires a level argument - if the level for an assert is less than or equal to ASSERT_LEVEL, the assertion will be evaluated |
Any integer value |
3 if ENABLE_DEBUG, 5 otherwise |
ENABLE_KMEM_TRACE |
Allows tracing of kernel memory allocations via KDB |
True or False |
ENABLE_DEBUG |
ENABLE_TRACEPOINTS |
Enables the KDB Tracepoints feature |
True or False |
ENABLE_DEBUG |
ENABLE_TRACEBUFFER |
Enables the KDB Tracebuffer feature |
True or False |
ENABLE_DEBUG |
TRACEBUFFER_PAGES |
The number of pages to use for storage of Tracebuffer data |
Any positive integer value |
64 |
ENABLE_KDB_CONS |
Enables KDB console support |
True or False |
ENABLE_DEBUG |
ENABLE_KDB_CLI |
Enables KDB command line support (interactive KDB) |
True or False |
ENABLE_DEBUG |
KDB_BREAKIN |
Enables breaking in to KDB using Ctrl-K or ESC |
True or False |
ENABLE_DEBUG && attribute kdb_breakin in machines.py definition |
ENTER_KDB |
Forces KDB to breakin upon startup, following kernel and root server initialisation |
True or False |
False |
ENABLE_THREAD_NAMES |
Enables the setting and printing of thread names |
True or False |
ENABLE_DEBUG |
ENABLE_MUTEX_NAMES |
Enables the setting and printing of mutex names |
True or False |
ENABLE_DEBUG |
ENABLE_SPACE_NAMES |
Enables the setting and printing of space names |
True or False |
False |
Profiling Options
Option |
Description |
Possible Values |
Default |
ENABLE_PROFILING |
Enables OKL4 Kernel Profiling via KDB |
True or False |
False |
IGUANA_STATS |
Allows Iguana to maintain various runtime statistics |
True or False |
False |
Testing Options
Option |
Description |
Possible Values |
Default |
TEST_LIBS |
Runs test suites provided with libraries |
all, or the name of a library in libs |
None |
TESTING.TIMEOUT |
Specifies a time limit, in seconds, for the running of a test suite |
Any numeric value |
30 |
TESTING.PRINT_LOG |
Controls the printing of stdout output when running a test suite |
True or False |
False |
OKL4 Kernel Options
Option |
Description |
Possible Values |
Default |
SCHEDULING_ALGORITHM |
The scheduling algorithm to use. strict specifies that the scheduler should strictly obey priorities, with high priority threads always being selected to run over lower priority threads. inheritance specifies that priority inheritance should be used for threads in the system. |
inheritance or strict |
inheritance |
MAX_SPACES |
The maximum number of address spaces supported |
Any positive integer value |
256 |
MAX_THREADS |
The maximum number of threads supported |
>= 16 && <= 32768 |
1024 |
XIP |
Enables OKL4 Kernel eXecution In Place |
True or False |
False |
CONTEXT_BITMASKS |
Enables the context bitmasks feature in the scheduler, which allows per-thread specification of the hardware execution units on which the thread may run |
True or False |
False |
MUTEX_TYPE |
Specifies the type of mutex primitive to expose via libmutex |
user, kernel, hybrid |
hybrid |
ENABLE_FASTPATHS |
Enables or disables the use of all fastpaths (both C and assembly) |
True or False |
True |
EXCEPTION_FASTPATH |
Enables or disables the use of assembly fastpaths for exceptions |
True or False |
True && asm_fastpath_supported |
IPC_FASTPATH |
Enables or disables the use of assembly fastpaths for IPC |
True or False |
True && asm_fastpath_supported |
IPC_C_FASTPATH |
Enables or disables the use of C fastpaths |
True or False |
!asm_fastpath_support && c_fastpath_supported |
ROOT_CAP_NO |
Maximum number of root cap entries |
>= 16 && <= 32768 |
4096 on IA32, 1024 otherwise |
DEFAULT_CACHE_ATTR_WB |
Defines whether to use write through or write back cache by default (ARM only) |
True or False |
True on ARM, unused otherwise |
DISABLE_L2_CACHE |
Disables the use of L2 Cache (ARM only) |
True or False |
False on ARM, unused otherwise |
Iguana Options
Option |
Description |
Possible Values |
Default |
EXAMPLE |
An example application to build on top of Iguana |
The name of a sub-directory inside iguana/example |
None |
EXAMPLE_ENV |
The SCons environment in which to build the Iguana example application |
iguana, which will build with the standard OKL4 libc, or posix, which will utilise a POSIX-enabled libc with a subset of PSE-51 support |
iguana |
INCLUDE_FILE |
Provides the ability to embed a file into the resulting image which can then be read via the OKL4 FS library |
The path to any file, relative to the OKL4 base directory |
None |
OKL4_FEATURE_PROFILE |
Enables the use of a bundled set of OKL4 features (the EXTRA profile enables extended address spaces, zones, protected memory sections and remote memcopy) |
NORMAL or EXTRA |
Attribute default_feature_profile in machines.py, usually EXTRA |
OK Linux Options
Option |
Description |
Possible Values |
Default |
OKLINUX_DIR |
The directory path containing OK Linux, relative to OKL4 base directory |
Any directory containing OK Linux |
linux |
LINUX_ROOTFS |
The directory path containing a customised root filesystem for OK Linux |
Any directory path |
None |
LINUX_ROOTFS_SIZE |
Suggested file system image size for the customised root filesystem, in blocks |
Any positive integer |
None |
LINUX_DEVFS |
The path to a customised device description file |
A file path |
None |
LINUX_APPS |
The name, or an array of names, of applications to build with OK Linux |
Must correspond to a directory name of an application in the OK Linux base directory |
None |
ENABLE_VDSO |
Use OK Linux VDSO page (sysenter) to perform Linux syscalls on ia32 |
True or False |
False |
LTP_SET |
If building LTP as a OK Linux app, allows the specification of the specific LTP test suite to use |
set1, set2, set3, pthreads, signals, or all |
all |