axvm 0.5.25

Virtual Machine resource management crate for ArceOS's hypervisor variant.
//! Static target policies consumed by common guest FDT operations.

use alloc::vec::Vec;

use axvmconfig::AxVMCrateConfig;

use crate::AxVmResult;

pub type RuntimeFdtPatch = fn(&[u8], &crate::AxVMRef, &AxVMCrateConfig) -> AxVmResult<Vec<u8>>;
pub type ProvidedFdtPatch = fn(&[u8], Option<&[u8]>, &AxVMCrateConfig) -> AxVmResult<Vec<u8>>;

/// Architecture operations required by common guest FDT processing.
#[derive(Clone, Copy)]
pub struct GuestFdtPolicy {
    pub patch_runtime: RuntimeFdtPatch,
    pub patch_provided: ProvidedFdtPatch,
    pub decode_interrupt: fn(&[u32]) -> Option<u32>,
    pub resolve_cpu_index: fn(usize) -> Option<usize>,
    pub host_cpu_count: fn() -> usize,
}