vmbase

aarch64 上で crosvm 上で動作する VM 向けに、vmbase ライブラリは、リンカスクリプトとビルドルール用の便利なデフォルトに加えて、エントリポイント、UART コンソールロギングなどを提供します。

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

#![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 のエントリポイントはコンソールの初期化を処理し、メイン関数が終了した場合は VM をシャットダウンするために PSCI_SYSTEM_OFF を発行します。