baryl 0.0.4

Public SDK for Baryl, a full-system emulation and introspection engine
Documentation
/* automatically generated by rust-bindgen 0.72.1 */

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()
        }
    }
}