There are sets of examples in lcd-domains/test_mods. Each example consists of a kernel module responsible for creating and running the LCD(s) (the boot module), and the code that runs inside the LCDs themselves.

You can run an example via

        scripts/runex <example name>

For example

        scripts/runex liblcd_test

Note that this script will flush your kernel logs. Make sure you have installed the LCD microkernel first, and that it's up to date (if you modified/rebuilt it). You can quickly install the LCD microkernel via


Currently we have these examples:

  • load: the LCD just spins in a loop, and the boot module eventually kills it.
  • liblcd_test: the LCD runs some tests for the liblcd memory allocators and other things.
  • ipc1: the boot module and LCD exchange two messages (boot ==> LCD, LCD ==> boot) using a synchronous IPC channel.
  • ipc2: two isolated LCDs exchange one message using synchronous IPC (LCD 1 sends a message to LCD 2).
  • async: the LCD invokes a couple functions asynchronously.
  • async_rpc: two LCDs (a caller and callee) exchange a sequence of messages using libfipc and libasync.
  • create_klcd: this shows how to create a kLCD (non-isolated thread/code) from another kLCD (non-isolated).
  • glue_example: this contains a fake virtual file system module (VFS) and a fake minix filesystem module. This is to simulate our process of isolating unmodified code. The "unmodified" code is in the original/ directories, and uses the header in include/. The glue code (that will soon be auto generated) is in the glue/ directories. The fake minix registers itself with the fake vfs. The fake vfs then creates and destroys a single file, using the object-oriented interface registered by minix. Minix then unregisters itself. In the process, there's about 8 - 9 synchronous IPC messages exchanged.
  • pmfs: this is our larger example to isolate the PMFS file system. Still in progress.

Building my own example

Follow the examples above for guidance.

You should also take a look at this page about debugging and troubleshooting, and general hacking.