use clock_types::mach_timespec_t;
use kern_return::kern_return_t;
use mach_types::{semaphore_t, task_t};
use sync_policy::sync_policy_t;
extern "C" {
pub fn semaphore_create(
task: task_t,
semaphore: *mut semaphore_t,
policy: sync_policy_t,
value: libc::c_int,
) -> kern_return_t;
pub fn semaphore_signal(semaphore: *mut semaphore_t) -> kern_return_t;
pub fn semaphore_wait(semaphore: *mut semaphore_t) -> kern_return_t;
pub fn semaphore_timedwait(
semaphore: *mut semaphore_t,
timeout: mach_timespec_t,
) -> kern_return_t;
pub fn semaphore_destroy(task: task_t, semaphore: *mut semaphore_t) -> kern_return_t;
}