use core::ffi::c_void;
use crate::abi::SbxPtr;
#[cfg(feature = "x86_64")]
mod generated {
#![allow(non_camel_case_types, non_upper_case_globals, dead_code)]
include!("generated-x86_64.rs");
}
#[cfg(not(feature = "x86_64"))]
mod generated {
#![allow(non_camel_case_types, non_upper_case_globals, dead_code)]
include!("generated.rs");
}
pub use crate::arch::GuestAddr;
pub use generated::*;
pub type NovelBlockCb = unsafe extern "C" fn(*mut c_void, *mut c_void, *const GuestAddr);
pub mod cov_csv {
pub const HEADER: &str = "process,module,offset,raw_pc,cr3,icount";
pub const COL_PROCESS: usize = 0;
pub const COL_MODULE: usize = 1;
pub const COL_OFFSET: usize = 2;
pub const COL_RAW_PC: usize = 3;
pub const COL_CR3: usize = 4;
pub const COL_ICOUNT: usize = 5;
pub const COL_COUNT: usize = 6;
}
impl CoverageVtable {
pub const ABSENT: CoverageVtable = CoverageVtable { record_block: None };
}
impl CoverageRef {
pub fn record_block(&self, key: SbxPtr<GuestAddr>, hash: u64) -> Option<bool> {
let record = unsafe { (*self.vtable).record_block }?;
Some(unsafe { record(*self, key.as_raw_ptr(), hash) } != 0)
}
}