baryl 0.0.2

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

pub const BARYL_FUZZ_ABI_VERSION: u32 = 2;
pub const BARYL_FUZZ_MIN_ABI_VERSION: u32 = 2;
pub const BARYL_RESET_END: u32 = 0;
pub const BARYL_RESET_TIMEOUT: u32 = 1;
pub const BARYL_RESET_CRASH: u32 = 2;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct FuzzRef {
    pub ctx: *mut ::core::ffi::c_void,
    pub vtable: *const FuzzVtable,
}
impl Default for FuzzRef {
    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()
        }
    }
}
pub type CaseStartFn = ::core::option::Option<
    unsafe extern "C" fn(obj: *mut ::core::ffi::c_void, ctl: *mut ::core::ffi::c_void),
>;
pub type MutateFn = ::core::option::Option<
    unsafe extern "C" fn(
        obj: *mut ::core::ffi::c_void,
        ctl: *mut ::core::ffi::c_void,
        buf: *mut u8,
        len: *mut u64,
        cap: u64,
    ),
>;
pub type InjectFn = ::core::option::Option<
    unsafe extern "C" fn(
        obj: *mut ::core::ffi::c_void,
        ctl: *mut ::core::ffi::c_void,
        buf: *const u8,
        len: u64,
    ),
>;
pub type CovHashFn = ::core::option::Option<
    unsafe extern "C" fn(obj: *mut ::core::ffi::c_void, ctl: *mut ::core::ffi::c_void) -> u64,
>;
pub type CaseEndFn = ::core::option::Option<
    unsafe extern "C" fn(obj: *mut ::core::ffi::c_void, ctl: *mut ::core::ffi::c_void, reason: u32),
>;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct FuzzCallbacks {
    pub on_case_start: CaseStartFn,
    pub on_mutate: MutateFn,
    pub on_inject: InjectFn,
    pub on_gen_cov_hash: CovHashFn,
    pub on_testcase_ended: CaseEndFn,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct FuzzVtable {
    pub rand: ::core::option::Option<unsafe extern "C" fn(f: FuzzRef) -> u64>,
    pub case_id: ::core::option::Option<unsafe extern "C" fn(f: FuzzRef) -> u64>,
    pub set_icount_budget: ::core::option::Option<unsafe extern "C" fn(f: FuzzRef, insns: u64)>,
    pub set_case_limit: ::core::option::Option<unsafe extern "C" fn(f: FuzzRef, cases: u64)>,
    pub set_next_input:
        ::core::option::Option<unsafe extern "C" fn(f: FuzzRef, buf: *const u8, len: u64)>,
    pub corpus_size: ::core::option::Option<unsafe extern "C" fn(f: FuzzRef) -> u64>,
}