#![allow(non_camel_case_types, dead_code)]
use libc::{c_char, c_int, c_uint, c_ulong, c_void, uintptr_t};
#[repr(C)]
pub(crate) struct filedesc {
pub fd_files: *mut fdescenttbl,
pub fd_map: *mut c_ulong,
pub fd_freefile: c_int,
pub fd_refcnt: c_int,
pub fd_holdcnt: c_int,
fd_sx: sx,
fd_kqlist: kqlist,
pub fd_holdleaderscount: c_int,
pub fd_holdleaderswakeup: c_int,
}
#[repr(C)]
pub(crate) struct fdescenttbl {
pub fdt_nfiles: c_int,
fdt_ofiles: [*mut c_void; 0],
}
#[repr(C)]
pub(crate) struct sx {
lock_object: lock_object,
sx_lock: uintptr_t,
}
#[repr(C)]
pub(crate) struct lock_object {
lo_name: *const c_char,
lo_flags: c_uint,
lo_data: c_uint,
lo_witness: *mut c_void,
}
#[repr(C)]
pub(crate) struct kqlist {
tqh_first: *mut c_void,
tqh_last: *mut *mut c_void,
}
pub(crate) const DEVSTAT_READ: usize = 0x01;
pub(crate) const DEVSTAT_WRITE: usize = 0x02;
extern "C" {
}
#[link(name = "geom")]
extern "C" {
pub(crate) fn geom_stats_open() -> c_int;
pub(crate) fn geom_stats_snapshot_get() -> *mut c_void;
pub(crate) fn geom_stats_snapshot_next(arg: *mut c_void) -> *mut libc::devstat;
pub(crate) fn geom_stats_snapshot_reset(arg: *mut c_void);
pub(crate) fn geom_stats_snapshot_free(arg: *mut c_void);
}