#[macro_use]
extern crate log;
#[macro_use]
extern crate alloc;
use ax_std as _;
mod banner;
mod config;
mod manager;
#[cfg(target_arch = "riscv64")]
mod platform_irq;
mod shell;
#[cfg(any(feature = "backtrace", feature = "test-panic-no-backtrace"))]
fn init_panic_hook() {
std::panic::set_hook(Box::new(|info| {
eprintln!("{info}");
eprintln!("{}", axbacktrace::Backtrace::capture().kind("panic"));
}));
}
fn main() {
#[cfg(any(feature = "backtrace", feature = "test-panic-no-backtrace"))]
init_panic_hook();
#[cfg(feature = "test-backtrace-panic")]
panic!("axvisor backtrace smoke test: deliberate panic to verify backtrace output");
#[cfg(feature = "test-panic-no-backtrace")]
panic!("axvisor no-backtrace smoke test: panic without backtrace");
banner::print_logo();
info!("Starting virtualization...");
let manager = manager::AxvmManager::new()
.unwrap_or_else(|error| panic!("failed to initialize AxVM manager: {error:#}"));
manager.init_default_vms();
manager.start_default_vms();
info!("[OK] Default guest initialized");
shell::console_init();
}