Skip to main content

apple_log/ffi/
mod.rs

1//! Bridge and optional raw FFI declarations.
2
3#![allow(missing_docs, non_camel_case_types)]
4
5use core::ffi::{c_char, c_void};
6
7pub type os_log_t = *mut c_void;
8pub type os_activity_t = *mut c_void;
9
10pub mod level {
11    pub const DEFAULT: u8 = 0;
12    pub const INFO: u8 = 1;
13    pub const DEBUG: u8 = 2;
14    pub const ERROR: u8 = 16;
15    pub const FAULT: u8 = 17;
16}
17
18pub mod category {
19    pub const POINTS_OF_INTEREST: &str = "PointsOfInterest";
20    pub const DYNAMIC_TRACING: &str = "DynamicTracing";
21    pub const DYNAMIC_STACK_TRACING: &str = "DynamicStackTracing";
22}
23
24pub mod signpost_id {
25    pub const NULL: u64 = 0;
26    pub const INVALID: u64 = u64::MAX;
27    pub const EXCLUSIVE: u64 = 0xEEEE_B0B5_B2B2_EEEE;
28}
29
30extern "C" {
31    pub(crate) fn apple_log_string_free(string: *mut c_char);
32    pub(crate) fn apple_log_bytes_free(bytes: *mut c_void);
33
34    pub(crate) fn apple_log_os_log_create(
35        subsystem: *const c_char,
36        category: *const c_char,
37        error_out: *mut *mut c_char,
38    ) -> *mut c_void;
39    pub(crate) fn apple_log_os_log_default() -> *mut c_void;
40    pub(crate) fn apple_log_os_log_disabled() -> *mut c_void;
41    pub(crate) fn apple_log_os_log_release(log: *mut c_void);
42    pub(crate) fn apple_log_os_log_is_enabled(log: *mut c_void, level: u8) -> bool;
43    pub(crate) fn apple_log_os_log_signposts_enabled(log: *mut c_void) -> bool;
44    pub(crate) fn apple_log_os_log_copy_subsystem(log: *mut c_void) -> *mut c_char;
45    pub(crate) fn apple_log_os_log_copy_category(log: *mut c_void) -> *mut c_char;
46
47    pub(crate) fn apple_log_logger_create(
48        subsystem: *const c_char,
49        category: *const c_char,
50        error_out: *mut *mut c_char,
51    ) -> *mut c_void;
52    pub(crate) fn apple_log_logger_default() -> *mut c_void;
53    pub(crate) fn apple_log_logger_disabled() -> *mut c_void;
54    pub(crate) fn apple_log_logger_from_os_log(
55        log: *mut c_void,
56        error_out: *mut *mut c_char,
57    ) -> *mut c_void;
58    pub(crate) fn apple_log_logger_release(logger: *mut c_void);
59    pub(crate) fn apple_log_logger_log(
60        logger: *mut c_void,
61        severity: i32,
62        privacy: i32,
63        message: *const c_char,
64    );
65    pub(crate) fn apple_log_logger_is_enabled(logger: *mut c_void, level: u8) -> bool;
66    pub(crate) fn apple_log_logger_signpost_id(logger: *mut c_void) -> u64;
67    pub(crate) fn apple_log_logger_signpost_id_from_pointer(
68        logger: *mut c_void,
69        pointer: *const c_void,
70    ) -> u64;
71    pub(crate) fn apple_log_logger_signposts_enabled(logger: *mut c_void) -> bool;
72    pub(crate) fn apple_log_logger_signpost_event(
73        logger: *mut c_void,
74        signpost_id: u64,
75        name: *const c_char,
76        message: *const c_char,
77    );
78    pub(crate) fn apple_log_logger_signpost_interval_begin(
79        logger: *mut c_void,
80        signpost_id: u64,
81        name: *const c_char,
82    );
83    pub(crate) fn apple_log_logger_signpost_animation_interval_begin(
84        logger: *mut c_void,
85        signpost_id: u64,
86        name: *const c_char,
87    );
88    pub(crate) fn apple_log_logger_signpost_interval_end(
89        logger: *mut c_void,
90        signpost_id: u64,
91        name: *const c_char,
92    );
93
94    pub(crate) fn apple_log_os_signpost_id_generate(log: *mut c_void) -> u64;
95    pub(crate) fn apple_log_os_signpost_id_make_with_pointer(
96        log: *mut c_void,
97        pointer: *const c_void,
98    ) -> u64;
99
100    pub(crate) fn apple_log_os_signposter_create(
101        subsystem: *const c_char,
102        category: *const c_char,
103        error_out: *mut *mut c_char,
104    ) -> *mut c_void;
105    pub(crate) fn apple_log_os_signposter_default() -> *mut c_void;
106    pub(crate) fn apple_log_os_signposter_disabled() -> *mut c_void;
107    pub(crate) fn apple_log_os_signposter_from_os_log(
108        log: *mut c_void,
109        error_out: *mut *mut c_char,
110    ) -> *mut c_void;
111    pub(crate) fn apple_log_os_signposter_from_logger(
112        logger: *mut c_void,
113        error_out: *mut *mut c_char,
114    ) -> *mut c_void;
115    pub(crate) fn apple_log_os_signposter_release(signposter: *mut c_void);
116    pub(crate) fn apple_log_os_signposter_is_enabled(signposter: *mut c_void) -> bool;
117    pub(crate) fn apple_log_os_signposter_make_signpost_id(signposter: *mut c_void) -> u64;
118    pub(crate) fn apple_log_os_signposter_make_signpost_id_from_pointer(
119        signposter: *mut c_void,
120        pointer: *const c_void,
121    ) -> u64;
122    pub(crate) fn apple_log_os_signposter_emit_event(
123        signposter: *mut c_void,
124        signpost_id: u64,
125        name: *const c_char,
126        message: *const c_char,
127    );
128    pub(crate) fn apple_log_os_signposter_begin_interval(
129        signposter: *mut c_void,
130        signpost_id: u64,
131        name: *const c_char,
132        message: *const c_char,
133    );
134    pub(crate) fn apple_log_os_signposter_begin_animation_interval(
135        signposter: *mut c_void,
136        signpost_id: u64,
137        name: *const c_char,
138        message: *const c_char,
139    );
140    pub(crate) fn apple_log_os_signposter_end_interval(
141        signposter: *mut c_void,
142        signpost_id: u64,
143        name: *const c_char,
144        message: *const c_char,
145    );
146
147    pub(crate) fn apple_log_os_activity_create(
148        description: *const c_char,
149        parent: *mut c_void,
150        flags: u32,
151        error_out: *mut *mut c_char,
152    ) -> *mut c_void;
153    pub(crate) fn apple_log_os_activity_start(
154        description: *const c_char,
155        flags: u32,
156        error_out: *mut *mut c_char,
157    ) -> *mut c_void;
158    pub(crate) fn apple_log_os_activity_current() -> *mut c_void;
159    pub(crate) fn apple_log_os_activity_none() -> *mut c_void;
160    pub(crate) fn apple_log_os_activity_null() -> *mut c_void;
161    pub(crate) fn apple_log_os_activity_release(activity: *mut c_void);
162    pub(crate) fn apple_log_os_activity_get_identifier(
163        activity: *mut c_void,
164        parent_out: *mut u64,
165    ) -> u64;
166    pub(crate) fn apple_log_os_activity_initiate(
167        description: *const c_char,
168        flags: u32,
169        context: *mut c_void,
170        function: Option<unsafe extern "C" fn(*mut c_void)>,
171    );
172    pub(crate) fn apple_log_os_activity_initiate_f(
173        description: *const c_char,
174        flags: u32,
175        context: *mut c_void,
176        function: Option<unsafe extern "C" fn(*mut c_void)>,
177    );
178    pub(crate) fn apple_log_os_activity_apply(
179        activity: *mut c_void,
180        context: *mut c_void,
181        function: Option<unsafe extern "C" fn(*mut c_void)>,
182    );
183    pub(crate) fn apple_log_os_activity_scope_enter(activity: *mut c_void) -> *mut c_void;
184    pub(crate) fn apple_log_os_activity_scope_leave(state: *mut c_void);
185    pub(crate) fn apple_log_os_activity_label_useraction(label: *const c_char);
186    pub(crate) fn apple_log_os_activity_set_breadcrumb(name: *const c_char);
187    pub(crate) fn apple_log_os_activity_end(activity: *mut c_void);
188    pub(crate) fn apple_log_os_activity_get_active_identifiers(parent_out: *mut u64) -> u64;
189
190    pub(crate) fn apple_log_os_atomic_i32_new(value: i32) -> *mut c_void;
191    pub(crate) fn apple_log_os_atomic_i32_release(atomic: *mut c_void);
192    pub(crate) fn apple_log_os_atomic_i32_load(atomic: *mut c_void) -> i32;
193    pub(crate) fn apple_log_os_atomic_i32_store(atomic: *mut c_void, value: i32);
194    pub(crate) fn apple_log_os_atomic_i32_add(atomic: *mut c_void, amount: i32) -> i32;
195    pub(crate) fn apple_log_os_atomic_i32_add_barrier(atomic: *mut c_void, amount: i32) -> i32;
196    pub(crate) fn apple_log_os_atomic_i32_increment(atomic: *mut c_void) -> i32;
197    pub(crate) fn apple_log_os_atomic_i32_increment_barrier(atomic: *mut c_void) -> i32;
198    pub(crate) fn apple_log_os_atomic_i32_decrement(atomic: *mut c_void) -> i32;
199    pub(crate) fn apple_log_os_atomic_i32_decrement_barrier(atomic: *mut c_void) -> i32;
200    pub(crate) fn apple_log_os_atomic_i32_or(atomic: *mut c_void, mask: u32) -> i32;
201    pub(crate) fn apple_log_os_atomic_i32_or_barrier(atomic: *mut c_void, mask: u32) -> i32;
202    pub(crate) fn apple_log_os_atomic_i32_or_orig(atomic: *mut c_void, mask: u32) -> i32;
203    pub(crate) fn apple_log_os_atomic_i32_or_orig_barrier(atomic: *mut c_void, mask: u32) -> i32;
204    pub(crate) fn apple_log_os_atomic_i32_and(atomic: *mut c_void, mask: u32) -> i32;
205    pub(crate) fn apple_log_os_atomic_i32_and_barrier(atomic: *mut c_void, mask: u32) -> i32;
206    pub(crate) fn apple_log_os_atomic_i32_and_orig(atomic: *mut c_void, mask: u32) -> i32;
207    pub(crate) fn apple_log_os_atomic_i32_and_orig_barrier(atomic: *mut c_void, mask: u32) -> i32;
208    pub(crate) fn apple_log_os_atomic_i32_xor(atomic: *mut c_void, mask: u32) -> i32;
209    pub(crate) fn apple_log_os_atomic_i32_xor_barrier(atomic: *mut c_void, mask: u32) -> i32;
210    pub(crate) fn apple_log_os_atomic_i32_xor_orig(atomic: *mut c_void, mask: u32) -> i32;
211    pub(crate) fn apple_log_os_atomic_i32_xor_orig_barrier(atomic: *mut c_void, mask: u32) -> i32;
212    pub(crate) fn apple_log_os_atomic_i32_compare_and_swap(
213        atomic: *mut c_void,
214        old_value: i32,
215        new_value: i32,
216    ) -> bool;
217    pub(crate) fn apple_log_os_atomic_i32_compare_and_swap_barrier(
218        atomic: *mut c_void,
219        old_value: i32,
220        new_value: i32,
221    ) -> bool;
222
223    pub(crate) fn apple_log_os_atomic_i64_new(value: i64) -> *mut c_void;
224    pub(crate) fn apple_log_os_atomic_i64_release(atomic: *mut c_void);
225    pub(crate) fn apple_log_os_atomic_i64_load(atomic: *mut c_void) -> i64;
226    pub(crate) fn apple_log_os_atomic_i64_store(atomic: *mut c_void, value: i64);
227    pub(crate) fn apple_log_os_atomic_i64_add(atomic: *mut c_void, amount: i64) -> i64;
228    pub(crate) fn apple_log_os_atomic_i64_add_barrier(atomic: *mut c_void, amount: i64) -> i64;
229    pub(crate) fn apple_log_os_atomic_i64_increment(atomic: *mut c_void) -> i64;
230    pub(crate) fn apple_log_os_atomic_i64_increment_barrier(atomic: *mut c_void) -> i64;
231    pub(crate) fn apple_log_os_atomic_i64_decrement(atomic: *mut c_void) -> i64;
232    pub(crate) fn apple_log_os_atomic_i64_decrement_barrier(atomic: *mut c_void) -> i64;
233    pub(crate) fn apple_log_os_atomic_i64_compare_and_swap(
234        atomic: *mut c_void,
235        old_value: i64,
236        new_value: i64,
237    ) -> bool;
238    pub(crate) fn apple_log_os_atomic_i64_compare_and_swap_barrier(
239        atomic: *mut c_void,
240        old_value: i64,
241        new_value: i64,
242    ) -> bool;
243
244    pub(crate) fn apple_log_os_atomic_queue_new(error_out: *mut *mut c_char) -> *mut c_void;
245    pub(crate) fn apple_log_os_atomic_queue_release(queue: *mut c_void);
246    pub(crate) fn apple_log_os_atomic_queue_enqueue(queue: *mut c_void, value: usize);
247    pub(crate) fn apple_log_os_atomic_queue_dequeue(
248        queue: *mut c_void,
249        value_out: *mut usize,
250    ) -> bool;
251    pub(crate) fn apple_log_os_atomic_fifo_queue_new(error_out: *mut *mut c_char) -> *mut c_void;
252    pub(crate) fn apple_log_os_atomic_fifo_queue_release(queue: *mut c_void);
253    pub(crate) fn apple_log_os_atomic_fifo_queue_enqueue(queue: *mut c_void, value: usize);
254    pub(crate) fn apple_log_os_atomic_fifo_queue_dequeue(
255        queue: *mut c_void,
256        value_out: *mut usize,
257    ) -> bool;
258
259    pub(crate) fn apple_log_os_log_store_local(error_out: *mut *mut c_char) -> *mut c_void;
260    pub(crate) fn apple_log_os_log_store_create(
261        scope: i32,
262        error_out: *mut *mut c_char,
263    ) -> *mut c_void;
264    pub(crate) fn apple_log_os_log_store_from_url(
265        path: *const c_char,
266        error_out: *mut *mut c_char,
267    ) -> *mut c_void;
268    pub(crate) fn apple_log_os_log_store_release(store: *mut c_void);
269    pub(crate) fn apple_log_os_log_store_position_date(
270        store: *mut c_void,
271        seconds_since_1970: f64,
272    ) -> *mut c_void;
273    pub(crate) fn apple_log_os_log_store_position_since_end(
274        store: *mut c_void,
275        seconds: f64,
276    ) -> *mut c_void;
277    pub(crate) fn apple_log_os_log_store_position_since_latest_boot(
278        store: *mut c_void,
279        seconds: f64,
280    ) -> *mut c_void;
281    pub(crate) fn apple_log_os_log_position_release(position: *mut c_void);
282    pub(crate) fn apple_log_os_log_store_get_entries(
283        store: *mut c_void,
284        options: usize,
285        position: *mut c_void,
286        predicate: *const c_char,
287        error_out: *mut *mut c_char,
288    ) -> *mut c_void;
289    pub(crate) fn apple_log_os_log_entry_list_release(list: *mut c_void);
290    pub(crate) fn apple_log_os_log_entry_list_count(list: *mut c_void) -> isize;
291    pub(crate) fn apple_log_os_log_entry_list_get(list: *mut c_void, index: isize) -> *mut c_void;
292    pub(crate) fn apple_log_os_log_entry_release(entry: *mut c_void);
293    pub(crate) fn apple_log_os_log_entry_kind(entry: *mut c_void) -> i32;
294    pub(crate) fn apple_log_os_log_entry_copy_composed_message(entry: *mut c_void) -> *mut c_char;
295    pub(crate) fn apple_log_os_log_entry_get_date_seconds(entry: *mut c_void) -> f64;
296    pub(crate) fn apple_log_os_log_entry_get_store_category(entry: *mut c_void) -> i32;
297    pub(crate) fn apple_log_os_log_entry_get_activity_identifier(entry: *mut c_void) -> u64;
298    pub(crate) fn apple_log_os_log_entry_copy_process(entry: *mut c_void) -> *mut c_char;
299    pub(crate) fn apple_log_os_log_entry_get_process_identifier(entry: *mut c_void) -> i32;
300    pub(crate) fn apple_log_os_log_entry_copy_sender(entry: *mut c_void) -> *mut c_char;
301    pub(crate) fn apple_log_os_log_entry_get_thread_identifier(entry: *mut c_void) -> u64;
302    pub(crate) fn apple_log_os_log_entry_copy_category(entry: *mut c_void) -> *mut c_char;
303    pub(crate) fn apple_log_os_log_entry_copy_format_string(entry: *mut c_void) -> *mut c_char;
304    pub(crate) fn apple_log_os_log_entry_copy_subsystem(entry: *mut c_void) -> *mut c_char;
305    pub(crate) fn apple_log_os_log_entry_component_count(entry: *mut c_void) -> isize;
306    pub(crate) fn apple_log_os_log_entry_component_get(
307        entry: *mut c_void,
308        index: isize,
309    ) -> *mut c_void;
310    pub(crate) fn apple_log_os_log_message_component_release(component: *mut c_void);
311    pub(crate) fn apple_log_os_log_message_component_copy_format_substring(
312        component: *mut c_void,
313    ) -> *mut c_char;
314    pub(crate) fn apple_log_os_log_message_component_copy_placeholder(
315        component: *mut c_void,
316    ) -> *mut c_char;
317    pub(crate) fn apple_log_os_log_message_component_get_argument_category(
318        component: *mut c_void,
319    ) -> i32;
320    pub(crate) fn apple_log_os_log_message_component_get_double(component: *mut c_void) -> f64;
321    pub(crate) fn apple_log_os_log_message_component_get_int64(component: *mut c_void) -> i64;
322    pub(crate) fn apple_log_os_log_message_component_copy_string(
323        component: *mut c_void,
324    ) -> *mut c_char;
325    pub(crate) fn apple_log_os_log_message_component_get_uint64(component: *mut c_void) -> u64;
326    pub(crate) fn apple_log_os_log_message_component_copy_data(
327        component: *mut c_void,
328        length_out: *mut isize,
329    ) -> *mut c_void;
330    pub(crate) fn apple_log_os_log_entry_level(entry: *mut c_void) -> i32;
331    pub(crate) fn apple_log_os_log_entry_signpost_identifier(entry: *mut c_void) -> u64;
332    pub(crate) fn apple_log_os_log_entry_copy_signpost_name(entry: *mut c_void) -> *mut c_char;
333    pub(crate) fn apple_log_os_log_entry_signpost_type(entry: *mut c_void) -> i32;
334    pub(crate) fn apple_log_os_log_entry_is_boundary(entry: *mut c_void) -> bool;
335    pub(crate) fn apple_log_os_log_entry_parent_activity_identifier(entry: *mut c_void) -> u64;
336}
337
338#[cfg(feature = "raw-ffi")]
339pub mod raw;
340#[cfg(feature = "raw-ffi")]
341pub use raw::*;