use std::vec::Vec;
use axdevice_base::InterruptTriggerMode;
use axvmconfig::GuestConfig;
use crate::AxVmResult;
pub type RuntimeFdtPatch = fn(&[u8], &crate::AxVMRef, &GuestConfig) -> AxVmResult<Vec<u8>>;
pub type ProvidedFdtPatch = fn(&[u8], Option<&[u8]>, &GuestConfig) -> AxVmResult<Vec<u8>>;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DecodedInterrupt {
pub source: u32,
pub trigger: InterruptTriggerMode,
}
#[derive(Clone, Copy)]
pub struct GuestFdtPolicy {
pub patch_runtime: RuntimeFdtPatch,
pub patch_provided: ProvidedFdtPatch,
pub decode_interrupt: fn(&[u32]) -> Option<DecodedInterrupt>,
pub resolve_cpu_index: fn(usize) -> Option<usize>,
pub host_cpu_count: fn() -> usize,
}