Skip to main content

percpu_bindings/
percpu_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.percpu-bindings.bindgen.
6
7#![expect(non_camel_case_types)]
8#![no_std]
9pub use zx_types::{zx_duration_mono_t, zx_instant_mono_t};
10pub type ulong = ::core::ffi::c_ulong;
11
12#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
13#[repr(C, align(8))]
14pub struct __BindgenOpaqueArray8<T>(pub T);
15impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
16    fn default() -> Self {
17        Self([<T as Default>::default(); N])
18    }
19}
20#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
21#[repr(C, align(64))]
22pub struct __BindgenOpaqueArray64<T>(pub T);
23impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray64<[T; N]> {
24    fn default() -> Self {
25        Self([<T as Default>::default(); N])
26    }
27}
28#[repr(C)]
29#[derive(Debug, Copy, Clone)]
30pub struct std_atomic<_Tp> {
31    pub _phantom_0: ::core::marker::PhantomData<::core::cell::UnsafeCell<_Tp>>,
32    pub _address: u8,
33}
34pub type std_atomic___base = u8;
35#[repr(C)]
36#[repr(align(8))]
37#[derive(Debug, Copy, Clone)]
38pub struct ChainLockTransaction {
39    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 40usize]>,
40}
41#[repr(C)]
42#[repr(align(8))]
43#[derive(Debug, Copy, Clone)]
44pub struct lockdep_ThreadLockState {
45    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 16usize]>,
46}
47#[repr(C)]
48#[repr(align(1))]
49#[derive(Debug, Copy, Clone)]
50pub struct PlatformCpuResumeState {
51    pub _bindgen_opaque_blob: u8,
52}
53#[repr(C)]
54#[repr(align(8))]
55#[derive(Debug, Copy, Clone)]
56pub struct Timer {
57    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 72usize]>,
58}
59#[repr(C)]
60#[repr(align(8))]
61#[derive(Debug, Copy, Clone)]
62pub struct TimerQueue {
63    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 32usize]>,
64}
65#[repr(C)]
66#[repr(align(8))]
67#[derive(Debug, Copy, Clone)]
68pub struct StallAccumulator {
69    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 56usize]>,
70}
71#[repr(C)]
72#[repr(align(8))]
73#[derive(Debug, Copy, Clone)]
74pub struct CpuSearchSet {
75    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 528usize]>,
76}
77#[repr(C)]
78#[repr(align(8))]
79#[derive(Debug, Copy, Clone)]
80pub struct DpcRunner {
81    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 200usize]>,
82}
83#[repr(C)]
84#[repr(align(64))]
85#[derive(Debug, Copy, Clone)]
86pub struct IdlePowerThread {
87    pub _bindgen_opaque_blob: __BindgenOpaqueArray64<[u8; 2368usize]>,
88}
89#[repr(C)]
90#[repr(align(8))]
91#[derive(Debug, Copy, Clone)]
92pub struct Scheduler {
93    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 704usize]>,
94}
95#[repr(C)]
96pub struct guest_stats {
97    pub vm_entries: ulong,
98    pub vm_exits: ulong,
99    pub interrupts: ulong,
100    pub interrupt_windows: ulong,
101    pub cpuid_instructions: ulong,
102    pub hlt_instructions: ulong,
103    pub control_register_accesses: ulong,
104    pub io_instructions: ulong,
105    pub rdmsr_instructions: ulong,
106    pub wrmsr_instructions: ulong,
107    pub ept_violations: ulong,
108    pub xsetbv_instructions: ulong,
109    pub pause_instructions: ulong,
110    pub vmcall_instructions: ulong,
111}
112#[repr(C)]
113pub struct cpu_stats {
114    pub last_updated_instant: zx_instant_mono_t,
115    pub normalized_busy_time: zx_duration_mono_t,
116    pub idle_time: zx_duration_mono_t,
117    pub reschedules: ulong,
118    pub context_switches: ulong,
119    pub preempts: ulong,
120    pub yields: ulong,
121    pub interrupts: ulong,
122    pub timer_ints: ulong,
123    pub timers: ulong,
124    pub perf_ints: ulong,
125    pub syscalls: ulong,
126    pub page_faults: ulong,
127    pub reschedule_ipis: ulong,
128    pub generic_ipis: ulong,
129    pub active_energy_consumption_nj: ulong,
130    pub idle_energy_consumption_nj: ulong,
131}
132#[repr(C)]
133#[repr(align(8))]
134#[derive(Debug, Copy, Clone)]
135pub struct vm_page_counts {
136    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 96usize]>,
137}
138pub type vm_page_counts_t = vm_page_counts;
139#[repr(C)]
140#[repr(align(64))]
141pub struct percpu {
142    pub timer_queue: TimerQueue,
143    pub search_set: CpuSearchSet,
144    pub scheduler: Scheduler,
145    pub active_cl_transaction: *mut ChainLockTransaction,
146    pub chain_lock_conflict_id: __BindgenOpaqueArray8<[u8; 8usize]>,
147    pub gstats: guest_stats,
148    pub stats: cpu_stats,
149    pub __bindgen_padding_0: [u8; 8usize],
150    pub idle_power_thread: IdlePowerThread,
151    pub counters: *mut i64,
152    pub dpc_runner: DpcRunner,
153    pub vm_page_counts: vm_page_counts_t,
154    pub lockup_detector_timer: Timer,
155    pub sampling_timer: Timer,
156    pub memory_stall_accumulator: StallAccumulator,
157    pub resume_state: PlatformCpuResumeState,
158    pub __bindgen_padding_1: [u8; 7usize],
159}