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をシャットダウンします。