1#![allow(missing_docs)]
2
3use core::ffi::{c_char, c_void};
4
5use super::{os_activity_t, os_log_t};
6
7extern "C" {
8 pub fn apple_log_create(subsystem: *const c_char, category: *const c_char) -> os_log_t;
9 pub fn apple_log_default() -> os_log_t;
10 pub fn apple_log_disabled() -> os_log_t;
11 pub fn apple_log_release(log: os_log_t);
12 pub fn apple_log_emit(log: os_log_t, level: i32, message: *const c_char);
13 pub fn apple_log_emit_privacy(
14 log: os_log_t,
15 level: i32,
16 message: *const c_char,
17 is_public: bool,
18 );
19 pub fn apple_log_emit_default(level: i32, message: *const c_char);
20 pub fn apple_log_emit_default_privacy(level: i32, message: *const c_char, is_public: bool);
21 pub fn apple_log_type_enabled(log: os_log_t, level: i32) -> bool;
22
23 pub fn apple_signpost_id_generate(log: os_log_t) -> u64;
24 pub fn apple_signpost_id_make_with_pointer(log: os_log_t, ptr: *const c_void) -> u64;
25 pub fn apple_signpost_enabled(log: os_log_t) -> bool;
26 pub fn apple_signpost_event_emit(
27 log: os_log_t,
28 spid: u64,
29 name: *const c_char,
30 message: *const c_char,
31 );
32 pub fn apple_signpost_interval_begin(log: os_log_t, spid: u64, name: *const c_char);
33 pub fn apple_signpost_animation_interval_begin(log: os_log_t, spid: u64, name: *const c_char);
34 pub fn apple_signpost_interval_end(log: os_log_t, spid: u64, name: *const c_char);
35
36 pub fn apple_activity_get_identifiers(parent_id: *mut u64) -> u64;
37 pub fn apple_activity_get_active_id() -> u64;
38 pub fn apple_activity_create(
39 description: *const c_char,
40 parent_activity: os_activity_t,
41 flags: u32,
42 ) -> os_activity_t;
43 pub fn apple_activity_start(description: *const c_char, flags: u32) -> os_activity_t;
44 pub fn apple_activity_current() -> os_activity_t;
45 pub fn apple_activity_none() -> os_activity_t;
46 pub fn apple_activity_null() -> os_activity_t;
47 pub fn apple_activity_release(activity: os_activity_t);
48 pub fn apple_activity_initiate_f(
49 description: *const c_char,
50 flags: u32,
51 context: *mut c_void,
52 function: Option<unsafe extern "C" fn(*mut c_void)>,
53 );
54 pub fn apple_activity_apply_f(
55 activity: os_activity_t,
56 context: *mut c_void,
57 function: Option<unsafe extern "C" fn(*mut c_void)>,
58 );
59 pub fn apple_activity_scope_enter_alloc(activity: os_activity_t) -> *mut c_void;
60 pub fn apple_activity_scope_leave_free(state: *mut c_void);
61 pub fn apple_activity_get_identifier(activity: os_activity_t, parent_id: *mut u64) -> u64;
62 pub fn apple_activity_end(activity: os_activity_t);
63 pub fn apple_activity_label_useraction(label: *const c_char);
64 pub fn apple_activity_set_breadcrumb(name: *const c_char);
65
66 pub fn apple_os_atomic_queue_create() -> *mut c_void;
67 pub fn apple_os_atomic_queue_destroy(queue: *mut c_void);
68 pub fn apple_os_atomic_queue_enqueue_value(queue: *mut c_void, value: usize);
69 pub fn apple_os_atomic_queue_dequeue_value(queue: *mut c_void, value_out: *mut usize) -> bool;
70 pub fn apple_os_atomic_fifo_queue_create() -> *mut c_void;
71 pub fn apple_os_atomic_fifo_queue_destroy(queue: *mut c_void);
72 pub fn apple_os_atomic_fifo_enqueue_value(queue: *mut c_void, value: usize);
73 pub fn apple_os_atomic_fifo_dequeue_value(queue: *mut c_void, value_out: *mut usize) -> bool;
74
75 pub fn apple_os_atomic_add32(amount: i32, value: *mut i32) -> i32;
76 pub fn apple_os_atomic_add32_barrier(amount: i32, value: *mut i32) -> i32;
77 pub fn apple_os_atomic_increment32(value: *mut i32) -> i32;
78 pub fn apple_os_atomic_increment32_barrier(value: *mut i32) -> i32;
79 pub fn apple_os_atomic_decrement32(value: *mut i32) -> i32;
80 pub fn apple_os_atomic_decrement32_barrier(value: *mut i32) -> i32;
81 pub fn apple_os_atomic_or32(mask: u32, value: *mut u32) -> i32;
82 pub fn apple_os_atomic_or32_barrier(mask: u32, value: *mut u32) -> i32;
83 pub fn apple_os_atomic_or32_orig(mask: u32, value: *mut u32) -> i32;
84 pub fn apple_os_atomic_or32_orig_barrier(mask: u32, value: *mut u32) -> i32;
85 pub fn apple_os_atomic_and32(mask: u32, value: *mut u32) -> i32;
86 pub fn apple_os_atomic_and32_barrier(mask: u32, value: *mut u32) -> i32;
87 pub fn apple_os_atomic_and32_orig(mask: u32, value: *mut u32) -> i32;
88 pub fn apple_os_atomic_and32_orig_barrier(mask: u32, value: *mut u32) -> i32;
89 pub fn apple_os_atomic_xor32(mask: u32, value: *mut u32) -> i32;
90 pub fn apple_os_atomic_xor32_barrier(mask: u32, value: *mut u32) -> i32;
91 pub fn apple_os_atomic_xor32_orig(mask: u32, value: *mut u32) -> i32;
92 pub fn apple_os_atomic_xor32_orig_barrier(mask: u32, value: *mut u32) -> i32;
93 pub fn apple_os_atomic_compare_and_swap32(
94 old_value: i32,
95 new_value: i32,
96 value: *mut i32,
97 ) -> bool;
98 pub fn apple_os_atomic_compare_and_swap32_barrier(
99 old_value: i32,
100 new_value: i32,
101 value: *mut i32,
102 ) -> bool;
103 pub fn apple_os_atomic_add64(amount: i64, value: *mut i64) -> i64;
104 pub fn apple_os_atomic_add64_barrier(amount: i64, value: *mut i64) -> i64;
105 pub fn apple_os_atomic_increment64(value: *mut i64) -> i64;
106 pub fn apple_os_atomic_increment64_barrier(value: *mut i64) -> i64;
107 pub fn apple_os_atomic_decrement64(value: *mut i64) -> i64;
108 pub fn apple_os_atomic_decrement64_barrier(value: *mut i64) -> i64;
109 pub fn apple_os_atomic_compare_and_swap64(
110 old_value: i64,
111 new_value: i64,
112 value: *mut i64,
113 ) -> bool;
114 pub fn apple_os_atomic_compare_and_swap64_barrier(
115 old_value: i64,
116 new_value: i64,
117 value: *mut i64,
118 ) -> bool;
119 pub fn apple_os_atomic_compare_and_swap_int(
120 old_value: i32,
121 new_value: i32,
122 value: *mut i32,
123 ) -> bool;
124 pub fn apple_os_atomic_compare_and_swap_int_barrier(
125 old_value: i32,
126 new_value: i32,
127 value: *mut i32,
128 ) -> bool;
129 pub fn apple_os_atomic_compare_and_swap_long(
130 old_value: i64,
131 new_value: i64,
132 value: *mut i64,
133 ) -> bool;
134 pub fn apple_os_atomic_compare_and_swap_long_barrier(
135 old_value: i64,
136 new_value: i64,
137 value: *mut i64,
138 ) -> bool;
139 pub fn apple_os_atomic_compare_and_swap_ptr(
140 old_value: *mut c_void,
141 new_value: *mut c_void,
142 value: *mut *mut c_void,
143 ) -> bool;
144 pub fn apple_os_atomic_compare_and_swap_ptr_barrier(
145 old_value: *mut c_void,
146 new_value: *mut c_void,
147 value: *mut *mut c_void,
148 ) -> bool;
149 pub fn apple_os_atomic_test_and_set(bit: u32, address: *mut c_void) -> bool;
150 pub fn apple_os_atomic_test_and_set_barrier(bit: u32, address: *mut c_void) -> bool;
151 pub fn apple_os_atomic_test_and_clear(bit: u32, address: *mut c_void) -> bool;
152 pub fn apple_os_atomic_test_and_clear_barrier(bit: u32, address: *mut c_void) -> bool;
153}