use mach2::port::mach_port_t;
use mach2::vm_types::{mach_vm_address_t, mach_vm_size_t};
use std::ffi::c_void;
pub type KernReturnT = i32;
pub type ExceptionMaskT = u32;
pub type ExceptionBehaviorT = i32;
pub type ThreadStateFlavor = i32;
unsafe extern "C" {
pub fn task_set_exception_ports(
task: mach_port_t,
exception_mask: ExceptionMaskT,
new_port: mach_port_t,
behavior: ExceptionBehaviorT,
new_flavor: ThreadStateFlavor,
) -> KernReturnT;
pub fn task_get_exception_ports(
task: mach_port_t,
exception_mask: ExceptionMaskT,
masks: *mut ExceptionMaskT,
masks_cnt: *mut u32,
old_handlers: *mut mach_port_t,
old_behaviors: *mut ExceptionBehaviorT,
old_flavors: *mut ThreadStateFlavor,
) -> KernReturnT;
pub fn task_set_state(
task: mach_port_t,
flavor: ThreadStateFlavor,
state: *const c_void,
count: u32,
) -> KernReturnT;
pub fn mach_vm_remap(
target_task: mach_port_t,
target_address: *mut mach_vm_address_t,
size: mach_vm_size_t,
mask: u64,
flags: i32,
src_task: mach_port_t,
src_address: mach_vm_address_t,
copy: i32,
cur_protection: *mut i32,
max_protection: *mut i32,
inheritance: u32,
) -> i32;
}