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 を発行します。