|Deletions are marked like this.||Additions are marked like this.|
|Line 38:||Line 38:|
|* [[/Step8|Step 8: admit real-time tasks]]|
How to Create a Custom Scheduler Plugin in LITMUS^RT
A brief guide to creating a new scheduling plugin in LITMUSRT (based on version 2012.2.)
- A testing environment (i.e., KVM/Qemu or Bochs). This tutorial assumes KVM.
- Strong C programming skills.
- Ideally, some exposure to OS kernel development.
Work in a checked-out git repository. Do not use the tarball from the web page. This will make keeping track of your edits and incorporating upstream changes much easier.
Test incrementally to catch errors early. Compile test after each edit. Test-boot as often as possible. The earlier you catch an error, the easier it is to debug.
Commit early, commit often. Make many small commits a you go along. You can clean them up later using git rebase.
Do not commit to the master branch. This will make incorporating upstream changes much easier.
Follow the kernel coding standard defined in Documentation/CodingStyle, even when writing “throw away” code.
The tutorial is structured in a series of steps, which are intended to be completed sequentially. When working through these, you should reproduce the instructions on your own local machine. If something seems unclear, please feel free to ask on the mailinglist for clarification.
In the first seven steps, the tutorial re-creates a partitioned EDF (P-EDF) scheduler. In contrast to the PSN-EDF plugin shipping with LITMUSRT, the demo implementation does not support locking and non-preemptive sections to keep it simple.