owned_wait_queue_bindings/
owned_wait_queue_bindings.rs1#![expect(non_camel_case_types)]
8#![expect(non_upper_case_globals)]
9#![no_std]
10pub use zx_types::zx_status_t;
11pub type Deadline = core::ffi::c_void;
12pub type Thread = core::ffi::c_void;
13pub type SchedulerState_BaseProfile = core::ffi::c_void;
14pub type SchedulerState_WaitQueueInheritedSchedulerState = core::ffi::c_void;
15
16#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
17#[repr(C, align(8))]
18pub struct __BindgenOpaqueArray8<T>(pub T);
19impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
20 fn default() -> Self {
21 Self([<T as Default>::default(); N])
22 }
23}
24#[repr(C)]
25#[repr(align(8))]
26#[derive(Debug, Copy, Clone)]
27pub struct SchedulerState_EffectiveProfile {
28 pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 32usize]>,
29}
30#[repr(i32)]
31#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
32pub enum ResourceOwnership {
33 Normal = 0,
34 Reader = 1,
35}
36#[repr(u8)]
37#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
38pub enum Interruptible {
39 No = 0,
40 Yes = 1,
41}
42#[repr(u8)]
43#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
44pub enum ForceInheritance {
45 No = 0,
46 Yes = 1,
47}
48#[repr(C)]
49#[repr(align(8))]
50#[derive(Debug, Copy, Clone)]
51pub struct WaitQueueBase {
52 pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 56usize]>,
53}
54pub type Thread_UnblockList = __BindgenOpaqueArray8<[u8; 8usize]>;
55#[repr(C)]
56#[derive(Debug)]
57pub struct OwnedWaitQueue {
58 pub _base: WaitQueueBase,
59 pub _base_1: __BindgenOpaqueArray8<[u8; 16usize]>,
60 pub owner_: *mut Thread,
61 pub inherited_scheduler_state_storage_: *mut SchedulerState_WaitQueueInheritedSchedulerState,
62}
63#[repr(C)]
64#[derive(Debug, Copy, Clone)]
65pub struct OwnedWaitQueue_BAAOLockingDetails {
66 pub new_owner: *mut Thread,
67 pub stop_point: *const ::core::ffi::c_void,
68}
69#[repr(C)]
70#[derive(Debug, Copy, Clone)]
71pub struct OwnedWaitQueue_WakeThreadsResult {
72 pub woken: u32,
73 pub still_waiting: u32,
74 pub owner: *mut Thread,
75}
76#[repr(i32)]
77#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
78pub enum OwnedWaitQueue_WakeOption {
79 None = 0,
80 AssignOwner = 1,
81}
82pub const OwnedWaitQueue_kOwnedMagic: u32 = 1870098033;
83unsafe extern "C" {
84 pub fn cpp_thread_unblock_list_init(list: *mut u8);
85}
86unsafe extern "C" {
87 pub fn cpp_thread_unblock_list_destroy(list: *mut Thread_UnblockList);
88}
89unsafe extern "C" {
90 pub fn cpp_owned_wait_queue_init(wait_queue: *mut u8);
91}
92unsafe extern "C" {
93 pub fn cpp_owned_wait_queue_disown_all_queues(t: *mut Thread);
94}
95unsafe extern "C" {
96 pub fn cpp_owned_wait_queue_get_effective_profile(
97 wait_queue: *const OwnedWaitQueue,
98 out_profile: *mut u8,
99 );
100}
101unsafe extern "C" {
102 pub fn cpp_owned_wait_queue_set_thread_base_profile_and_propagate(
103 thread: *mut Thread,
104 profile: *const SchedulerState_BaseProfile,
105 );
106}
107unsafe extern "C" {
108 pub fn cpp_owned_wait_queue_lock_pi_chain_thread(start: *mut Thread) -> Result;
109}
110unsafe extern "C" {
111 pub fn cpp_owned_wait_queue_lock_pi_chain_queue(start: *mut WaitQueueBase) -> Result;
112}
113unsafe extern "C" {
114 pub fn cpp_owned_wait_queue_assert_not_owned(wait_queue: *const OwnedWaitQueue);
115}
116unsafe extern "C" {
117 pub fn cpp_owned_wait_queue_assign_owner(
118 wait_queue: *mut OwnedWaitQueue,
119 new_owner: *mut Thread,
120 ) -> zx_status_t;
121}
122unsafe extern "C" {
123 pub fn cpp_owned_wait_queue_assign_owner_locked(
124 wait_queue: *mut OwnedWaitQueue,
125 new_owner: *mut Thread,
126 ) -> zx_status_t;
127}
128unsafe extern "C" {
129 pub fn cpp_owned_wait_queue_reset_owner_if_no_waiters(wait_queue: *mut OwnedWaitQueue);
130}
131unsafe extern "C" {
132 pub fn cpp_owned_wait_queue_assert_safe_for_pooling(wait_queue: *const OwnedWaitQueue);
133}
134unsafe extern "C" {
135 pub fn cpp_owned_wait_queue_block_and_assign_owner(
136 wait_queue: *mut OwnedWaitQueue,
137 deadline: *const Deadline,
138 new_owner: *mut Thread,
139 resource_ownership: ResourceOwnership,
140 interruptible: Interruptible,
141 ) -> zx_status_t;
142}
143unsafe extern "C" {
144 pub fn cpp_owned_wait_queue_block_and_assign_owner_locked(
145 wait_queue: *mut OwnedWaitQueue,
146 current_thread: *mut Thread,
147 deadline: *const Deadline,
148 details: *const OwnedWaitQueue_BAAOLockingDetails,
149 resource_ownership: ResourceOwnership,
150 interruptible: Interruptible,
151 force_inheritance: ForceInheritance,
152 ) -> zx_status_t;
153}
154unsafe extern "C" {
155 pub fn cpp_owned_wait_queue_cancel_baao_operation_locked(
156 wait_queue: *mut OwnedWaitQueue,
157 current_thread: *mut Thread,
158 details: *const OwnedWaitQueue_BAAOLockingDetails,
159 );
160}
161unsafe extern "C" {
162 pub fn cpp_owned_wait_queue_lock_for_baao_operation_or_backoff(
163 wait_queue: *mut OwnedWaitQueue,
164 current_thread: *mut Thread,
165 new_owner: *mut Thread,
166 details_out: *mut OwnedWaitQueue_BAAOLockingDetails,
167 ) -> bool;
168}
169unsafe extern "C" {
170 pub fn cpp_owned_wait_queue_try_lock_for_baao_operation_locked(
171 wait_queue: *mut OwnedWaitQueue,
172 current_thread: *mut Thread,
173 new_owner: *mut Thread,
174 details_out: *mut OwnedWaitQueue_BAAOLockingDetails,
175 ) -> bool;
176}
177unsafe extern "C" {
178 pub fn cpp_owned_wait_queue_wake_threads(
179 wait_queue: *mut OwnedWaitQueue,
180 wake_count: u32,
181 wake_hooks: *mut ::core::ffi::c_void,
182 out_result: *mut OwnedWaitQueue_WakeThreadsResult,
183 );
184}
185unsafe extern "C" {
186 pub fn cpp_owned_wait_queue_wake_thread_and_assign_owner(
187 wait_queue: *mut OwnedWaitQueue,
188 wake_hooks: *mut ::core::ffi::c_void,
189 out_result: *mut OwnedWaitQueue_WakeThreadsResult,
190 );
191}
192unsafe extern "C" {
193 pub fn cpp_owned_wait_queue_wake_threads_locked(
194 wait_queue: *mut OwnedWaitQueue,
195 threads: *mut Thread_UnblockList,
196 wake_hooks: *mut ::core::ffi::c_void,
197 option: OwnedWaitQueue_WakeOption,
198 force_inheritance: ForceInheritance,
199 out_result: *mut OwnedWaitQueue_WakeThreadsResult,
200 );
201}
202unsafe extern "C" {
203 pub fn cpp_owned_wait_queue_lock_for_wake_operation_or_backoff(
204 wait_queue: *mut OwnedWaitQueue,
205 max_wake: u32,
206 wake_hooks: *mut ::core::ffi::c_void,
207 unblock_list_out: *mut Thread_UnblockList,
208 ) -> bool;
209}
210unsafe extern "C" {
211 pub fn cpp_owned_wait_queue_lock_for_wake_operation_locked(
212 wait_queue: *mut OwnedWaitQueue,
213 max_wake: u32,
214 wake_hooks: *mut ::core::ffi::c_void,
215 unblock_list_out: *mut Thread_UnblockList,
216 ) -> bool;
217}
218unsafe extern "C" {
219 pub fn cpp_owned_wait_queue_wake_and_requeue(
220 wait_queue: *mut OwnedWaitQueue,
221 requeue_target: *mut OwnedWaitQueue,
222 new_requeue_owner: *mut Thread,
223 wake_count: u32,
224 requeue_count: u32,
225 wake_hooks: *mut ::core::ffi::c_void,
226 requeue_hooks: *mut ::core::ffi::c_void,
227 wake_option: OwnedWaitQueue_WakeOption,
228 out_result: *mut OwnedWaitQueue_WakeThreadsResult,
229 );
230}
231#[repr(i32)]
232#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
233pub enum Result {
234 Ok = 0,
235 Retry = 1,
236 Backoff = 2,
237 Cycle = 3,
238}