vmbase
vmbaseというライブラリは、aarch64上のcrosvm下で実行されるVMに対して、エントリポイント、UARTコンソールロギングなどに加えて、リンカスクリプトと有用なデフォルトビルドルールを提供してくれます。
#![no_main] #![no_std] use vmbase::{main, println}; main!(main); pub fn main(arg0: u64, arg1: u64, arg2: u64, arg3: u64) { println!("Hello world"); }
main!
というマクロはメイン関数を指定するもので、指定された関数はvmbase
のエントリポイントから呼び出されることになります。vmbase
のエントリポイントはコンソールの初期化を行い、メイン関数がリターンした場合にはPSCI_SYSTEM_OFF を発行しVMをシャットダウンします。