use crate::arch::ArchCallbacks;
use crate::control::Control;
use crate::coverage::CoverageCallbacks;
use crate::fuzz::FuzzCallbacks;
use crate::net::NetCallbacks;
pub const BARYL_COMPONENT_ABI_VERSION: u32 = 15;
pub const BARYL_COMPONENT_MIN_ABI_VERSION: u32 = 15;
pub type ControlFn =
::core::option::Option<unsafe extern "C" fn(obj: *mut ::core::ffi::c_void, t: *mut Control)>;
pub type VmcallFn = ::core::option::Option<
unsafe extern "C" fn(obj: *mut ::core::ffi::c_void, t: *mut Control, body: u64),
>;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct CoreCallbacks {
pub on_init: ControlFn,
pub on_startup: ControlFn,
pub on_first_vm_entry: ControlFn,
pub on_first_ring_three: ControlFn,
pub on_checkpoint_save: ControlFn,
pub on_checkpoint_load: ControlFn,
pub on_exit: ControlFn,
pub on_vmcall: VmcallFn,
pub after_vm_reset: ControlFn,
pub before_vm_reset: ControlFn,
pub on_icount_expiration: ControlFn,
}
#[repr(C)]
pub struct ComponentDescriptor {
pub abi_version: u32,
pub nrequires: u32,
pub name: *const ::core::ffi::c_char,
pub requires_: *const u32,
pub new_: ::core::option::Option<
unsafe extern "C" fn(
argc: ::core::ffi::c_int,
argv: *const *const ::core::ffi::c_char,
) -> *mut ::core::ffi::c_void,
>,
pub free: ::core::option::Option<unsafe extern "C" fn(obj: *mut ::core::ffi::c_void)>,
pub init_: ::core::option::Option<
unsafe extern "C" fn(
obj: *mut ::core::ffi::c_void,
state_dir: *const ::core::ffi::c_char,
log_level: i32,
),
>,
pub core: CoreCallbacks,
pub coverage: CoverageCallbacks,
pub arch: ArchCallbacks,
pub net: NetCallbacks,
pub fuzz: FuzzCallbacks,
}
impl Default for ComponentDescriptor {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}