fruity__bbqsrc/dispatch/
sys.rs1use super::{
4 DispatchObject, DispatchQosClass, DispatchQueue, DispatchSource, DispatchSourceType,
5 DispatchTime,
6};
7use std::os::raw::{c_char, c_int, c_long, c_ulong, c_void};
8
9#[cfg_attr(target_vendor = "apple", link(name = "System", kind = "dylib"))]
11#[cfg_attr(not(target_vendor = "apple"), link(name = "dispatch", kind = "dylib"))]
12#[allow(missing_docs)]
13extern "C" {
14 pub static _dispatch_main_q: DispatchQueue;
15
16 pub fn dispatch_retain(obj: *const DispatchObject);
17 pub fn dispatch_release(obj: *const DispatchObject);
18
19 pub fn dispatch_activate(obj: *const DispatchObject);
20 pub fn dispatch_resume(obj: *const DispatchObject);
21 pub fn dispatch_suspend(obj: *const DispatchObject);
22
23 pub fn dispatch_get_context(obj: *const DispatchObject) -> *mut c_void;
24 pub fn dispatch_set_context(obj: *const DispatchObject, context: *mut c_void);
25
26 pub fn dispatch_set_target_queue(obj: *const DispatchObject, queue: *const DispatchQueue);
27 pub fn dispatch_get_global_queue(identifier: c_long, flags: c_ulong) -> *const DispatchQueue;
28 pub fn dispatch_queue_get_label(queue: *const DispatchQueue) -> *const c_char;
29 pub fn dispatch_queue_get_qos_class(
30 queue: *const DispatchQueue,
31 relative_priority_ptr: *mut c_int,
32 ) -> DispatchQosClass;
33
34 pub fn dispatch_async_f(
35 queue: *const DispatchQueue,
36 ctx: *mut c_void,
37 work: unsafe extern "C" fn(ctx: *mut c_void),
38 );
39 pub fn dispatch_sync_f(
40 queue: *const DispatchQueue,
41 ctx: *mut c_void,
42 work: unsafe extern "C" fn(ctx: *mut c_void),
43 );
44 pub fn dispatch_apply_f(
45 iterations: usize,
46 queue: *const DispatchQueue,
47 ctx: *mut c_void,
48 work: unsafe extern "C" fn(ctx: *mut c_void, iteration: usize),
49 );
50
51 pub fn dispatch_time(when: DispatchTime, delta: i64) -> DispatchTime;
52
53 #[doc(alias = "DISPATCH_SOURCE_TYPE_ADD")]
54 pub static _dispatch_source_type_data_add: DispatchSourceType;
55
56 #[doc(alias = "DISPATCH_SOURCE_TYPE_OR")]
57 pub static _dispatch_source_type_data_or: DispatchSourceType;
58
59 #[doc(alias = "DISPATCH_SOURCE_TYPE_REPLACE")]
60 pub static _dispatch_source_type_data_replace: DispatchSourceType;
61
62 #[doc(alias = "DISPATCH_SOURCE_TYPE_MACH_SEND")]
63 pub static _dispatch_source_type_mach_send: DispatchSourceType;
64
65 #[doc(alias = "DISPATCH_SOURCE_TYPE_MACH_RECV")]
66 pub static _dispatch_source_type_mach_recv: DispatchSourceType;
67
68 #[doc(alias = "DISPATCH_SOURCE_TYPE_MEMORYPRESSURE")]
69 pub static _dispatch_source_type_memorypressure: DispatchSourceType;
70
71 #[doc(alias = "DISPATCH_SOURCE_TYPE_PROC")]
72 pub static _dispatch_source_type_proc: DispatchSourceType;
73
74 #[doc(alias = "DISPATCH_SOURCE_TYPE_READ")]
75 pub static _dispatch_source_type_read: DispatchSourceType;
76
77 #[doc(alias = "DISPATCH_SOURCE_TYPE_SIGNAL")]
78 pub static _dispatch_source_type_signal: DispatchSourceType;
79
80 #[doc(alias = "DISPATCH_SOURCE_TYPE_TIMER")]
81 pub static _dispatch_source_type_timer: DispatchSourceType;
82
83 #[doc(alias = "DISPATCH_SOURCE_TYPE_VNODE")]
84 pub static _dispatch_source_type_vnode: DispatchSourceType;
85
86 #[doc(alias = "DISPATCH_SOURCE_TYPE_WRITE")]
87 pub static _dispatch_source_type_write: DispatchSourceType;
88
89 pub fn dispatch_source_create(
90 type_: *const DispatchSourceType,
91 handle: usize,
92 mask: usize,
93 queue: *const DispatchQueue,
94 ) -> *const DispatchSource;
95
96 pub fn dispatch_source_cancel(source: *const DispatchSource);
97 pub fn dispatch_source_testcancel(source: *const DispatchSource) -> isize;
98
99 pub fn dispatch_source_get_data(source: *const DispatchSource) -> usize;
100 pub fn dispatch_source_get_mask(source: *const DispatchSource) -> usize;
101 pub fn dispatch_source_get_handle(source: *const DispatchSource) -> usize;
102 pub fn dispatch_source_merge_data(source: *const DispatchSource, value: usize);
103
104 pub fn dispatch_source_set_timer(
105 source: *const DispatchSource,
106 start: DispatchTime,
107 interval: u64,
108 leeway: u64,
109 );
110
111 pub fn dispatch_source_set_registration_handler_f(
113 source: *const DispatchSource,
114 handler: Option<unsafe extern "C" fn(ctx: *mut c_void)>,
115 );
116 pub fn dispatch_source_set_event_handler_f(
117 source: *const DispatchSource,
118 handler: unsafe extern "C" fn(ctx: *mut c_void),
119 );
120 pub fn dispatch_source_set_cancel_handler_f(
121 source: *const DispatchSource,
122 handler: Option<unsafe extern "C" fn(ctx: *mut c_void)>,
123 );
124}