This page serves to collect frequently asked questions and corresponding answers. Please ask questions that are not answered here on the [[Mailinglist|mailing list]] (and augment this list afterwards). == FAQ == ''I would like to write a real-time application that uses the LITMUS^RT^ API. Where should I start?'' Have a look at the task `bin/base_task.c` in the [[Repositories|liblitmus]] repository. It's a documented task skeleton that shows how to implement a periodic or sporadic real-time task. ---- ''Can I use `pthreads` with LITMUS^RT^?'' Yes. An example for a multithreaded real-time application is provided in `bin/base_mt_task.c` in the [[Repositories|liblitmus]] repository. ---- ''I tried booting with one of the provided kernel configurations on my hardware, but the kernel kernel hangs during boot with the following message: "kernel panic not syncing vfs unable to mount root fs on unknown-block (0,0)". What's wrong?'' This is a generic Linux problem, not a LITMUS^RT^ problem. The configuration is missing support for your root device and/or your root file system. To boot LITMUS^RT^ on your machine, you first need to have working configuration for an unmodified Linux kernel. Once you have mainline Linux working your machine, LITMUS^RT^ should boot without problems as well. ---- ''When testing with `kvm` using `-nographic`, the system appears to hang where normally a "login:" prompt would appear. However, I can log in via `ssh`. How can I enable local logins?'' Your Linux distribution is not spawning a shell for the console. On distributions using `/etc/inittab`, you need to edit the `inittab` file to spawn a login process for console. Some distributions (such as Ubuntu and RedHat), do not use `inittab`. Instead, you must create a file named `ttyS0` in `/etc/events.d`. Here is an example `/etc/events.d/ttyS0` that works in Ubuntu 8.04: {{{ start on runlevel 1 start on runlevel 2 start on runlevel 3 start on runlevel 4 start on runlevel 5 stop on runlevel 0 stop on runlevel 6 respawn exec /sbin/getty -L 19200 ttyS0 vt102 }}} Note that RedHat systems may use `/sbin/agetty` instead of `/sbin/getty`. ---- ''I am trying to boot a virtual test system in `kvm`, but I get the following error message (repeatedly).'' {{{ hda: possibly failed opcode: 0x39 hda: task_pio_intr: status=0x41 { DriveReady Error } hda: task_pio_intr: error=0x04 { DriveStatusError } }}} ''What is causing this?'' This error message can occur if `kvm` cannot write to the image file that is backing `hda`. Check the file permissions. ---- ''I attempted to run liblitmus/rtspin, and got the following error'' {{{ could not setup rt task params: Function not implemented }}} This error is caused when your liblitmus build is out of sync with your LITMUS^RT^ kernel build. Recompile LITMUS^RT^ followed by liblitmus to fix the problem. ---- ''I've followed the build instructions on the wiki, but the compilation fails. Why am I getting errors such as the following about `request_exit_np_atomic()`?'' {{{ litmus/sched_plugin.c:85:4: error: implicit declaration of function ‘request_exit_np_atomic’ [-Werror=implicit-function-declaration] }}} This error is due to a typo in LITMUS^RT 2012.1 in `include/litmus/litmus.h`. This has been fixed in commit 6a00f206debf8a5c8899055726ad127dbeeed098. As a workaround, enable `CONFIG_NP_SECTION` in the kernel configuration. ---- ''What is the purpose of the `linked` and `scheduled` pointers in `struct pfair_state` and `struct cpuentry_t` in `sched_pfair.c` and `sched_gsn_edf.c`, respectively?'' The `linked` pointer represents what "should" be scheduled, while the `scheduled` is the real-time task that "is" scheduled. The difference arises because it takes some time to switch away from the stack of the currently scheduled process when a preemption occurs. ---- ''I've recorded kernel overheads as described in the [[Tracing|tracing tutorial]]. How should I account for these overheads during schedulability analysis?'' This is described in detail in Chapter 3 of [[http://www.cs.unc.edu/~bbb/diss/|Björn Brandenburg's dissertation]]. ---- ''I have activated the GSN-EDF scheduler and then launched the `base_task`: `./rt_launch 10 100 ./base_task`. Why am I getting the error `sporadic_global(EXEC_COST, PERIOD) failed: Device or resource busy`?'' The tool `rt_launch` exists to launch arbitrary, non-real-time binaries as real-time tasks under LITMUS^RT. Tasks that link directly against `liblitmus` (such as base_task) transition to real-time mode themselves and thus do not need to be launched with `rt_launch`. The specific error is due to the fact that `base_task` attempted to set its period and execution cost while it was already a real-time task (since `rt_launch` transitions to real-time mode before forking and exec'ing the specified binary). Parameter changes at runtime are currently not supported in the stock LITMUS^RT version. ---- ''Using QEMU/kvm, the kernel panics during boot with the following message: '' {{{ ACPI: Core revision 20110413 ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 ..MP-BIOS bug: 8254 timer not connected to IO-APIC ...trying to set up timer (IRQ0) through the 8259A ... ..... (found apic 0 pin 2) ... ....... failed. ...trying to set up timer as Virtual Wire IRQ... ..... failed. ...trying to set up timer as ExtINT IRQ... ..... failed :(. Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with apic=debug and send a report. Then try booting with the 'noapic' option. }}} This is a known mainline Linux problem. The code that checks whether timers are accurate enough may fail to find an acceptable timer in virtualization environments. To suppress this, boot with the `no_timer_check` option. ---- ''I'm trying to use Feather-Trace and/or `sched_trace`, but I'm getting an error like `could not open feathertrace device (/dev/litmus/sched_trace13): No such file or directory`. How do I enable Feather-Trace? '' You need to enable Feather-Trace in the kernel configuration (e.g., using `make menuconfig`). It's off by default. To see the Feather-Trace option, you need to first disable the `CONFIG_RELOCATABLE` option, which conflicts with Feather-Trace. (See also: [[http://stackoverflow.com/questions/22993077/litmus-rt-scheduling-traces]])