Skip to main content

apple_cf/ffi/
dispatch_extras.rs

1#![allow(missing_docs)]
2
3use core::ffi::c_void;
4
5extern "C" {
6    pub fn acf_dispatch_async_f(
7        queue: *mut c_void,
8        context: *mut c_void,
9        work: extern "C" fn(*mut c_void),
10    );
11    pub fn acf_dispatch_async_and_wait_f(
12        queue: *mut c_void,
13        context: *mut c_void,
14        work: extern "C" fn(*mut c_void),
15    );
16    pub fn acf_dispatch_apply_f(
17        iterations: usize,
18        queue: *mut c_void,
19        context: *mut c_void,
20        work: extern "C" fn(usize, *mut c_void),
21    );
22
23    pub fn acf_dispatch_group_create() -> *mut c_void;
24    pub fn acf_dispatch_group_enter(group: *mut c_void);
25    pub fn acf_dispatch_group_leave(group: *mut c_void);
26    pub fn acf_dispatch_group_wait(group: *mut c_void, timeout_ms: i64) -> bool;
27
28    pub fn acf_dispatch_semaphore_create(value: i64) -> *mut c_void;
29    pub fn acf_dispatch_semaphore_signal(semaphore: *mut c_void) -> i64;
30    pub fn acf_dispatch_semaphore_wait(semaphore: *mut c_void, timeout_ms: i64) -> bool;
31
32    pub fn acf_dispatch_source_timer_create(interval_ms: u64, leeway_ms: u64) -> *mut c_void;
33    pub fn acf_dispatch_source_timer_resume(source: *mut c_void);
34    pub fn acf_dispatch_source_timer_cancel(source: *mut c_void);
35    pub fn acf_dispatch_source_timer_fire_count(source: *mut c_void) -> u64;
36}