Rust rt-app proof of concept
Implements the current rt-app 'mem' workload to show how an rt-app event would be added to the new (v2) Rust version. This proof of concept also adds an implementation of the current rt-app calibration functionality.
There are two frontends: "v2" and "compat". The purpose of a frontend is to take a configuration (CLI + JSON) and convert it to an internal representation of the execution plan that rt-app will follow when running the events. The execution plan is further converted to an [almost identical] program which consists of executable "instructions".
The two frontends are completely separated, such that each has their own:
- high level (JSON/YAML) configuration style
- converting pass from high level configuration to internal execution plan (low level config)
- CLI (and logic for parsing, managing default values etc.)
This will allow the "v2" frontend to be developed freely, while still offering backwards compatibility with current rt-app configs and scripts via the "compat" code path.
Users can select between the "v2" and "compat" frontends via the subcommands 'run' and 'run-compat', respectively.
If none is supplied, the subcommand defaults to:
- 'run-compat' if the binary is executed under the 'rt-app' name (e.g. by using a symlink)
- 'run' otherwise.
The calibration step is now triggered using a subcommand - the results are printed out and written to a JSON file, from which they can be simply copied to a "calibration" section in the config file. Subsequent runs using the v2 frontend will parse this data into the config data structures. In the future, we could add an option to the subcommand for automating this step and appending the section to a destination file. Versioning for the calibration method has also been added to the metadata, such that we can make changes to the way we calibrate without introducing breaking changes.
The README.md file contains instructions for building and running the project.
Signed-off-by: Petre Tudor petre-ionut.tudor@arm.com