Skip to main content

owned_wait_queue_bindings/
owned_wait_queue_bindings.rs

1// Copyright 2026 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This file is automatically generated by //zircon/kernel/kernel:_kernel_bindgen_crate.owned-wait-queue-bindings.bindgen.
6
7#![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#[repr(align(8))]
65#[derive(Debug, Copy, Clone)]
66pub struct OwnedWaitQueue_IWakeRequeueHook {
67    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 8usize]>,
68}
69#[repr(C)]
70#[derive(Debug, Copy, Clone)]
71pub struct OwnedWaitQueue_BAAOLockingDetails {
72    pub new_owner: *mut Thread,
73    pub stop_point: *const ::core::ffi::c_void,
74}
75#[repr(C)]
76#[derive(Debug, Copy, Clone)]
77pub struct OwnedWaitQueue_WakeThreadsResult {
78    pub woken: u32,
79    pub still_waiting: u32,
80    pub owner: *mut Thread,
81}
82#[repr(i32)]
83#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
84pub enum OwnedWaitQueue_WakeOption {
85    None = 0,
86    AssignOwner = 1,
87}
88pub const OwnedWaitQueue_kOwnedMagic: u32 = 1870098033;
89unsafe extern "C" {
90    pub fn cpp_thread_unblock_list_init(list: *mut u8);
91}
92unsafe extern "C" {
93    pub fn cpp_thread_unblock_list_destroy(list: *mut Thread_UnblockList);
94}
95unsafe extern "C" {
96    pub fn cpp_owned_wait_queue_wake_requeue_hook_allow(
97        hook: *mut OwnedWaitQueue_IWakeRequeueHook,
98        t: *const Thread,
99    ) -> bool;
100}
101unsafe extern "C" {
102    pub fn cpp_owned_wait_queue_wake_requeue_hook_on_wake_or_requeue(
103        hook: *mut OwnedWaitQueue_IWakeRequeueHook,
104        t: *mut Thread,
105    );
106}