Internships/ProjectIdeas/JailhouseNewConfigFormat
New configuration format for Jailhouse
Summary: Define a new Jailhouse configuration source file format and implement a compiler for it
So far, the configuration files for the Jailhouse hypervisor are defined in C by filling structures and array and then translated into their binary representation via standard gcc. In order to simplify the error-prone definition process while keeping the binary output format unchanged, a new source form shall be developed. That could be YAML-based, but alternatives can be discussed as well.
The requirements on the format are
- human readability (no XML...)
- easily modifiable by humans (e.g. by using symbolic labels for references, instead of array indexes)
- unambitious transformation into binary format
- optional: support for including or referencing common fragments (e.g. device resources initially used by root cell, then transferred to a non-root cell)
- optional: support for grouping of associated resources (e.g. a PCI device with its capabilities and memory regions)
In order to use the format in place of the existing C descriptions, a compiler shall be written (can be in Python, C or a mixture) to generate the binary representation of the configuration files and hooked into the Jailhouse build process. There will surely be a transitional phase before the new format is matured and old format can be discontinued. This phase will likely last longer than this project.
Links:
Details:
- Skill level: advanced
- Language: Python, C
- Mentors: Jan Kiszka <jan.kiszka@web.de>, Valentine Sinitsyn <valentine.sinitsyn@gmail.com>