Skip to main content

boot_options_bindings/
boot_options_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/lib/boot-options:_kernel_bindgen_crate.boot-options-bindings.bindgen.
6
7#![expect(non_camel_case_types)]
8#![expect(non_upper_case_globals)]
9#![no_std]
10use stdbind::Optional as stdbind_optional;
11
12pub type AutoOr<T> = stdbind::Optional<T>;
13
14unsafe extern "C" {
15    fn cpp_boot_options_get() -> *const BootOptions;
16    fn cpp_boot_options_set_many(opts: *mut BootOptions, ptr: *const u8, len: usize);
17    fn cpp_boot_options_show_key(opts: *const BootOptions, ptr: *const u8, len: usize) -> i32;
18    fn cpp_boot_options_show_all(opts: *const BootOptions);
19}
20
21impl BootOptions {
22    /// Returns a raw pointer to the global `BootOptions` instance.
23    pub fn as_ptr() -> *const Self {
24        // SAFETY: This pointer is set before the kernel proper boots.
25        unsafe { cpp_boot_options_get() }
26    }
27    /// Returns a shared reference to the global `BootOptions` instance.
28    pub fn get() -> &'static Self {
29        // SAFETY: This pointer is set before the kernel proper boots.
30        unsafe { Self::as_ptr().as_ref_unchecked() }
31    }
32    /// Parses and applies space-separated `<key>[=<value>]` boot options.
33    ///
34    /// # Safety
35    ///
36    /// `opts` must point to a valid, writable `BootOptions` instance.
37    pub unsafe fn set_many(opts: *mut Self, cmdline: &str) {
38        // SAFETY: Caller guarantees `opts` is valid and writable; `cmdline` is valid.
39        unsafe { cpp_boot_options_set_many(opts, cmdline.as_ptr(), cmdline.len()) };
40    }
41    /// Prints the current value and defaults for the boot option named `key`.
42    pub fn show_key(&self, key: &str) -> i32 {
43        // SAFETY: `self` and `key` are valid for the duration of the FFI call.
44        unsafe { cpp_boot_options_show_key(self, key.as_ptr(), key.len()) }
45    }
46    /// Prints all boot options and their current values.
47    pub fn show(&self) {
48        // SAFETY: `self` is a valid `BootOptions` reference.
49        unsafe { cpp_boot_options_show_all(self) };
50    }
51}
52
53#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
54#[repr(C)]
55pub struct __BindgenOpaqueArray<T>(pub T);
56impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray<[T; N]> {
57    fn default() -> Self {
58        Self([<T as Default>::default(); N])
59    }
60}
61#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
62#[repr(C, align(8))]
63pub struct __BindgenOpaqueArray8<T>(pub T);
64impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
65    fn default() -> Self {
66        Self([<T as Default>::default(); N])
67    }
68}
69#[repr(C)]
70#[derive(Debug, Copy, Clone)]
71pub struct std_optional {
72    pub _address: u8,
73}
74pub type std_optional___base = u8;
75pub type std_optional_value_type = u8;
76pub type std_optional___trivially_relocatable = u8;
77#[repr(C)]
78#[derive(Debug, Copy, Clone)]
79pub struct std_optional__CheckOptionalArgsConstructor {
80    pub _address: u8,
81}
82pub type std_optional__CheckOptionalArgsCtor = u8;
83#[repr(C)]
84#[derive(Debug, Copy, Clone)]
85pub struct std_optional__CheckOptionalLikeConstructor {
86    pub _address: u8,
87}
88pub type std_optional__CheckOptionalLikeConstructor___check_constructible_from_opt = u8;
89pub type std_optional__CheckOptionalLikeConstructor___check_assignable_from_opt = u8;
90pub type std_optional__CheckOptionalLikeCtor = u8;
91pub type std_optional__CheckOptionalLikeAssign = u8;
92#[repr(C)]
93#[derive(Debug, Copy, Clone)]
94pub struct std_char_traits {
95    pub _address: u8,
96}
97pub type std_array___trivially_relocatable = u8;
98pub type std_array___self = u8;
99pub type std_array_value_type = u8;
100pub type std_array_reference = u8;
101pub type std_array_const_reference = u8;
102pub type std_array_pointer = u8;
103pub type std_array_const_pointer = u8;
104pub type std_array_iterator = u8;
105pub type std_array_const_iterator = u8;
106pub type std_array_size_type = __BindgenOpaqueArray8<[u8; 8usize]>;
107pub type std_array_difference_type = __BindgenOpaqueArray8<[u8; 8usize]>;
108pub type std_array_reverse_iterator = u8;
109pub type std_array_const_reverse_iterator = u8;
110pub type std_string_view = __BindgenOpaqueArray8<[u8; 16usize]>;
111#[repr(C)]
112#[derive(Debug, Copy, Clone)]
113pub struct std_basic_string_view {
114    pub _address: u8,
115}
116pub type std_basic_string_view_traits_type = u8;
117pub type std_basic_string_view_value_type = u8;
118pub type std_basic_string_view_pointer = u8;
119pub type std_basic_string_view_const_pointer = u8;
120pub type std_basic_string_view_reference = u8;
121pub type std_basic_string_view_const_reference = u8;
122pub type std_basic_string_view_const_iterator = u8;
123pub type std_basic_string_view_iterator = u8;
124pub type std_basic_string_view_const_reverse_iterator = u8;
125pub type std_basic_string_view_reverse_iterator = u8;
126pub type std_basic_string_view_size_type = __BindgenOpaqueArray8<[u8; 8usize]>;
127pub type std_basic_string_view_difference_type = __BindgenOpaqueArray8<[u8; 8usize]>;
128#[repr(C)]
129#[derive(Debug, Copy, Clone)]
130pub struct std_basic_string_view___assume_valid {
131    pub _address: u8,
132}
133#[repr(C)]
134#[derive(Debug, Copy, Clone)]
135pub struct std_variant {
136    pub _address: u8,
137}
138pub type std_variant___first_type = u8;
139pub type std_variant___trivially_relocatable = u8;
140impl stdbind_optional_Tag {
141    pub const Some: stdbind_optional_Tag = stdbind_optional_Tag::None;
142}
143#[repr(i32)]
144#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
145pub enum stdbind_optional_Tag {
146    None = 0,
147}
148#[repr(C)]
149#[repr(align(1))]
150pub union stdbind_optional__bindgen_ty_1<T> {
151    pub _phantom_0: ::core::marker::PhantomData<::core::cell::UnsafeCell<T>>,
152    pub empty_: ::core::mem::ManuallyDrop<stdbind_optional__bindgen_ty_1__bindgen_ty_1>,
153    pub value_: ::core::mem::ManuallyDrop<T>,
154}
155#[repr(C)]
156#[derive(Debug, Copy, Clone)]
157pub struct stdbind_optional__bindgen_ty_1__bindgen_ty_1 {
158    pub _address: u8,
159}
160#[repr(C)]
161#[derive(Debug, Copy, Clone)]
162pub struct FILE {
163    pub write_: FILE_Callback,
164    pub ptr_: *mut ::core::ffi::c_void,
165}
166pub type FILE_Callback = ::core::option::Option<
167    unsafe extern "C" fn(
168        arg1: *mut ::core::ffi::c_void,
169        arg2: *const ::core::ffi::c_char,
170        arg3: usize,
171    ) -> ::core::ffi::c_int,
172>;
173#[allow(clippy::unnecessary_operation, clippy::identity_op)]
174const _: () = {
175    ["Size of FILE"][::core::mem::size_of::<FILE>() - 16usize];
176    ["Alignment of FILE"][::core::mem::align_of::<FILE>() - 8usize];
177    ["Offset of field: FILE::write_"][::core::mem::offset_of!(FILE, write_) - 0usize];
178    ["Offset of field: FILE::ptr_"][::core::mem::offset_of!(FILE, ptr_) - 8usize];
179};
180#[repr(C)]
181#[derive(Debug, Copy, Clone)]
182pub struct zbi_dcfg_simple_t {
183    pub mmio_phys: u64,
184    pub irq: u32,
185    pub flags: u32,
186}
187#[allow(clippy::unnecessary_operation, clippy::identity_op)]
188const _: () = {
189    ["Size of zbi_dcfg_simple_t"][::core::mem::size_of::<zbi_dcfg_simple_t>() - 16usize];
190    ["Alignment of zbi_dcfg_simple_t"][::core::mem::align_of::<zbi_dcfg_simple_t>() - 8usize];
191    ["Offset of field: zbi_dcfg_simple_t::mmio_phys"]
192        [::core::mem::offset_of!(zbi_dcfg_simple_t, mmio_phys) - 0usize];
193    ["Offset of field: zbi_dcfg_simple_t::irq"]
194        [::core::mem::offset_of!(zbi_dcfg_simple_t, irq) - 8usize];
195    ["Offset of field: zbi_dcfg_simple_t::flags"]
196        [::core::mem::offset_of!(zbi_dcfg_simple_t, flags) - 12usize];
197};
198#[repr(C)]
199#[derive(Debug, Copy, Clone)]
200pub struct zbi_dcfg_simple_pio_t {
201    pub base: u16,
202    pub reserved: u16,
203    pub irq: u32,
204}
205#[allow(clippy::unnecessary_operation, clippy::identity_op)]
206const _: () = {
207    ["Size of zbi_dcfg_simple_pio_t"][::core::mem::size_of::<zbi_dcfg_simple_pio_t>() - 8usize];
208    ["Alignment of zbi_dcfg_simple_pio_t"]
209        [::core::mem::align_of::<zbi_dcfg_simple_pio_t>() - 4usize];
210    ["Offset of field: zbi_dcfg_simple_pio_t::base"]
211        [::core::mem::offset_of!(zbi_dcfg_simple_pio_t, base) - 0usize];
212    ["Offset of field: zbi_dcfg_simple_pio_t::reserved"]
213        [::core::mem::offset_of!(zbi_dcfg_simple_pio_t, reserved) - 2usize];
214    ["Offset of field: zbi_dcfg_simple_pio_t::irq"]
215        [::core::mem::offset_of!(zbi_dcfg_simple_pio_t, irq) - 4usize];
216};
217#[repr(i32)]
218#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
219pub enum uart_IoRegisterType {
220    None = 0,
221    Mmio8 = 1,
222    Mmio32 = 2,
223    Pio = 3,
224}
225#[repr(C)]
226#[repr(align(8))]
227#[derive(Debug, Copy, Clone)]
228pub struct uart_dw8250_Driver {
229    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 48usize]>,
230}
231pub type uart_dw8250_Driver_Base = __BindgenOpaqueArray8<[u8; 16usize]>;
232#[allow(clippy::unnecessary_operation, clippy::identity_op)]
233const _: () = {
234    ["Size of uart_dw8250_Driver"][::core::mem::size_of::<uart_dw8250_Driver>() - 48usize];
235    ["Alignment of uart_dw8250_Driver"][::core::mem::align_of::<uart_dw8250_Driver>() - 8usize];
236};
237unsafe extern "C" {
238    #[link_name = "\u{1}_ZN4uart6dw82506Driver11kConfigNameE"]
239    pub static uart_dw8250_Driver_kConfigName: std_string_view;
240}
241unsafe extern "C" {
242    #[link_name = "\u{1}_ZN4uart6dw82506Driver19kDevicetreeBindingsE"]
243    pub static uart_dw8250_Driver_kDevicetreeBindings: __BindgenOpaqueArray8<[u8; 32usize]>;
244}
245pub type uart_ns8250_DriverImpl_Base = u8;
246pub type uart_ns8250_DriverImpl_FifoControlRegister = u8;
247pub type uart_ns8250_DriverImpl_InterruptEnableRegister = u8;
248#[repr(C)]
249#[repr(align(1))]
250#[derive(Debug, Copy, Clone)]
251pub struct uart_null_Driver {
252    pub _bindgen_opaque_blob: u8,
253}
254pub type uart_null_Driver_config_type = __BindgenOpaqueArray8<[u8; 8usize]>;
255#[allow(clippy::unnecessary_operation, clippy::identity_op)]
256const _: () = {
257    ["Size of uart_null_Driver"][::core::mem::size_of::<uart_null_Driver>() - 1usize];
258    ["Alignment of uart_null_Driver"][::core::mem::align_of::<uart_null_Driver>() - 1usize];
259};
260unsafe extern "C" {
261    #[link_name = "\u{1}_ZN4uart4null6Driver19kDevicetreeBindingsE"]
262    pub static uart_null_Driver_kDevicetreeBindings: __BindgenOpaqueArray8<[u8; 16usize]>;
263}
264unsafe extern "C" {
265    #[link_name = "\u{1}_ZN4uart4null6Driver11kConfigNameE"]
266    pub static uart_null_Driver_kConfigName: std_string_view;
267}
268unsafe extern "C" {
269    #[link_name = "\u{1}_ZN4uart4null6Driver7kIoTypeE"]
270    pub static uart_null_Driver_kIoType: uart_IoRegisterType;
271}
272pub const uart_null_Driver_kType: u32 = 0;
273pub const uart_null_Driver_kExtra: u32 = 0;
274#[repr(C)]
275#[repr(align(1))]
276#[derive(Debug, Copy, Clone)]
277pub struct uart_internal_DummyDriver {
278    pub _bindgen_opaque_blob: u8,
279}
280pub type uart_internal_DummyDriver_config_type = __BindgenOpaqueArray8<[u8; 8usize]>;
281#[allow(clippy::unnecessary_operation, clippy::identity_op)]
282const _: () = {
283    ["Size of uart_internal_DummyDriver"]
284        [::core::mem::size_of::<uart_internal_DummyDriver>() - 1usize];
285    ["Alignment of uart_internal_DummyDriver"]
286        [::core::mem::align_of::<uart_internal_DummyDriver>() - 1usize];
287};
288#[repr(C)]
289#[derive(Debug, Copy, Clone)]
290pub struct uart_all_Config {
291    pub _address: u8,
292}
293#[repr(C)]
294#[derive(Debug, Copy, Clone)]
295pub struct uart_all_Config_Variant {
296    pub _address: u8,
297}
298#[repr(u8)]
299#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
300pub enum IntelHwpPolicy {
301    BiosSpecified = 0,
302    Performance = 1,
303    Balanced = 2,
304    PowerSave = 3,
305    StablePerformance = 4,
306}
307pub type SmallString = [u8; 160];
308#[repr(C)]
309#[derive(Debug, Copy, Clone)]
310pub struct RedactedHex {
311    pub hex: SmallString,
312    pub len: usize,
313}
314#[allow(clippy::unnecessary_operation, clippy::identity_op)]
315const _: () = {
316    ["Size of RedactedHex"][::core::mem::size_of::<RedactedHex>() - 168usize];
317    ["Alignment of RedactedHex"][::core::mem::align_of::<RedactedHex>() - 8usize];
318    ["Offset of field: RedactedHex::hex"][::core::mem::offset_of!(RedactedHex, hex) - 0usize];
319    ["Offset of field: RedactedHex::len"][::core::mem::offset_of!(RedactedHex, len) - 160usize];
320};
321pub type AutoOr_Base<T> = stdbind_optional<T>;
322#[repr(u8)]
323#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
324pub enum OomBehavior {
325    Reboot = 0,
326    JobKill = 1,
327}
328#[repr(u8)]
329#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
330pub enum EntropyTestSource {
331    HwRng = 0,
332    JitterEntropy = 1,
333}
334#[repr(u8)]
335#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
336pub enum PageTableEvictionPolicy {
337    OnRequest = 0,
338    Never = 1,
339    Always = 2,
340}
341#[repr(u8)]
342#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
343pub enum SerialDebugSyscalls {
344    Disabled = 0,
345    Enabled = 1,
346    OutputOnly = 2,
347}
348#[repr(u8)]
349#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
350pub enum RootJobBehavior {
351    Halt = 0,
352    Reboot = 1,
353    Bootloader = 2,
354    Recovery = 3,
355    Shutdown = 4,
356}
357#[repr(u8)]
358#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
359pub enum WallclockType {
360    AutoDetect = 0,
361    Tsc = 1,
362    Pit = 2,
363    Hpet = 3,
364}
365#[repr(u8)]
366#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
367pub enum ScannerLruAction {
368    None = 0,
369    EvictOnly = 1,
370    CompressOnly = 2,
371    EvictAndCompress = 3,
372}
373#[repr(u8)]
374#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
375pub enum CompressionStrategy {
376    None = 0,
377    Lz4 = 1,
378}
379#[repr(u8)]
380#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
381pub enum CompressionStorageStrategy {
382    None = 0,
383    Slot = 1,
384}
385#[repr(C)]
386pub struct RamReservation {
387    pub paddr: stdbind_optional<u64>,
388    pub size: u64,
389}
390#[allow(clippy::unnecessary_operation, clippy::identity_op)]
391const _: () = {
392    ["Size of RamReservation"][::core::mem::size_of::<RamReservation>() - 24usize];
393    ["Alignment of RamReservation"][::core::mem::align_of::<RamReservation>() - 8usize];
394    ["Offset of field: RamReservation::paddr"]
395        [::core::mem::offset_of!(RamReservation, paddr) - 0usize];
396    ["Offset of field: RamReservation::size"]
397        [::core::mem::offset_of!(RamReservation, size) - 16usize];
398};
399#[repr(u8)]
400#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
401pub enum CheckFailAction {
402    Oops = 0,
403    Panic = 1,
404}
405#[repr(u8)]
406#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
407pub enum CheckerEnable {
408    True = 0,
409    False = 1,
410    Auto = 2,
411}
412#[repr(i32)]
413#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
414pub enum TestEnum {
415    Default = 0,
416    Value1 = 1,
417    Value2 = 2,
418}
419#[repr(C)]
420#[derive(Debug, Copy, Clone)]
421pub struct TestStruct {
422    pub present: bool,
423}
424#[allow(clippy::unnecessary_operation, clippy::identity_op)]
425const _: () = {
426    ["Size of TestStruct"][::core::mem::size_of::<TestStruct>() - 1usize];
427    ["Alignment of TestStruct"][::core::mem::align_of::<TestStruct>() - 1usize];
428    ["Offset of field: TestStruct::present"][::core::mem::offset_of!(TestStruct, present) - 0usize];
429};
430#[repr(C)]
431pub struct BootOptions {
432    pub aslr_disabled: bool,
433    pub aslr_entropy_bits: u8,
434    pub cprng_reseed_require_hw_rng: bool,
435    pub cprng_reseed_require_jitterentropy: bool,
436    pub cprng_seed_require_hw_rng: bool,
437    pub cprng_disable_jitterentropy: bool,
438    pub cprng_disable_hw_rng: bool,
439    pub cprng_seed_require_jitterentropy: bool,
440    pub cprng_seed_require_cmdline: bool,
441    pub entropy_mixin: RedactedHex,
442    pub jitterentropy_bs: u32,
443    pub jitterentropy_bc: u32,
444    pub jitterentropy_ml: u32,
445    pub jitterentropy_ll: u32,
446    pub jitterentropy_raw: bool,
447    pub jitterentropy_entropy_per_1000_bytes: u32,
448    pub lockup_detector_critical_section_threshold_ms: u64,
449    pub lockup_detector_critical_section_fatal_threshold_ms: u64,
450    pub lockup_detector_heartbeat_period_ms: u64,
451    pub lockup_detector_heartbeat_age_threshold_ms: u64,
452    pub lockup_detector_age_fatal_threshold_ms: u64,
453    pub lockup_detector_diagnostic_query_timeout_ms: u64,
454    pub oom_behavior: OomBehavior,
455    pub oom_timeout_ms: u32,
456    pub oom_enabled: bool,
457    pub oom_out_of_memory_threshold_mb: u64,
458    pub oom_critical_threshold_mb: u64,
459    pub oom_warning_threshold_mb: u64,
460    pub oom_debounce_mb: u64,
461    pub oom_evict_at_warning: bool,
462    pub oom_evict_continuous: bool,
463    pub oom_eviction_delay_ms: u64,
464    pub oom_evict_with_min_target: bool,
465    pub oom_eviction_delta_at_oom_mb: u64,
466    pub oom_hysteresis_seconds: u64,
467    pub oom_imminent_oom_delta_mb: u64,
468    pub oom_trigger_on_alloc_failure: bool,
469    pub phys_verbose: bool,
470    pub phys_backtrace_max: u32,
471    pub phys_print_stack_max: u32,
472    pub ppb_borrow_on_mru: bool,
473    pub ppb_loan: bool,
474    pub ppb_replace_on_unloan: bool,
475    pub render_dlog_to_crashlog: bool,
476    pub serial: __BindgenOpaqueArray8<[u8; 24usize]>,
477    pub always_use_next_vdso: bool,
478    pub vdso_ticks_get_force_syscall: bool,
479    pub vdso_clock_get_force_syscall: bool,
480    pub userpager_overtime_wait_seconds: u64,
481    pub userpager_overtime_timeout_seconds: u64,
482    pub userpager_overtime_printout_limit: u32,
483    pub enable_virtual_heap: bool,
484    pub heap_max_size_mb: u64,
485    pub heap_alloc_fill_threshold: u64,
486    pub bufferchain_reserve_pages: u64,
487    pub bypass_debuglog: bool,
488    pub debug_uart_poll: bool,
489    pub enable_debugging_syscalls: bool,
490    pub enable_serial_syscalls: SerialDebugSyscalls,
491    pub entropy_test_src: EntropyTestSource,
492    pub entropy_test_len: u64,
493    pub force_watchdog_disabled: bool,
494    pub halt_on_panic: bool,
495    pub ktrace_bufsize: u32,
496    pub ktrace_grpmask: u32,
497    pub memory_limit_dbg: bool,
498    pub memory_limit_mb: u64,
499    pub page_scanner_enable_eviction: bool,
500    pub page_scanner_page_table_eviction_policy: PageTableEvictionPolicy,
501    pub page_scanner_page_table_eviction_period_ms: u32,
502    pub page_scanner_min_aging_interval_ms: u32,
503    pub page_scanner_max_aging_interval_ms: u32,
504    pub page_scanner_accessed_scan_interval_ms: u32,
505    pub page_scanner_active_ratio_multiplier: u32,
506    pub page_scanner_start_at_boot: bool,
507    pub page_scanner_zero_page_scans_per_second: u64,
508    pub lru_action: ScannerLruAction,
509    pub random_debug_compress: bool,
510    pub compression_strategy: CompressionStrategy,
511    pub compression_storage_strategy: CompressionStorageStrategy,
512    pub compression_threshold: u32,
513    pub compression_lz4_acceleration: u32,
514    pub compression_at_memory_pressure: bool,
515    pub compression_reclaim_anonymous: bool,
516    pub compression_reclaim_zero_forks: bool,
517    pub pmm_checker_action: CheckFailAction,
518    pub pmm_checker_enabled: CheckerEnable,
519    pub pmm_checker_fill_size: AutoOr<u64>,
520    pub pmm_alloc_random_should_wait: bool,
521    pub stack_canary_percent_free: u64,
522    pub port_observer_reserve_pages: u64,
523    pub port_packet_reserve_pages: u64,
524    pub root_job_behavior: RootJobBehavior,
525    pub root_job_notice: SmallString,
526    pub shell: bool,
527    pub shell_script: SmallString,
528    pub smp_ht_enabled: bool,
529    pub test_ram_reserve: stdbind_optional<RamReservation>,
530    pub max_port_observers: u64,
531    pub select: SmallString,
532    pub userboot: SmallString,
533    pub power_boot_boost: bool,
534    pub power_rppm: bool,
535    pub scheduler_prefer_little_cpus: bool,
536    pub enable_new_wakeup_accounting: bool,
537    pub ubsan_action: CheckFailAction,
538    pub debug_boot_spin: bool,
539    pub experimental_expand_memory_stall: bool,
540    pub x86_disable_spec_mitigations: bool,
541    pub x86_hwp: bool,
542    pub x86_hwp_policy: IntelHwpPolicy,
543    pub x86_md_clear_on_user_return: bool,
544    pub x86_spec_store_bypass_disable: bool,
545    pub x86_turbo: bool,
546    pub x86_enable_pcid: bool,
547    pub x86_smp_max_cpus: u32,
548    pub x86_wallclock: WallclockType,
549    pub test_uint32: u32,
550    pub test_uint64: u64,
551    pub test_bool: bool,
552    pub test_smallstring: SmallString,
553    pub test_enum: TestEnum,
554    pub test_struct: TestStruct,
555    pub test_redacted_hex: RedactedHex,
556    pub test_auto_or_uint64: AutoOr<u64>,
557    pub smp_max_cpus: u32,
558}
559#[allow(clippy::unnecessary_operation, clippy::identity_op)]
560const _: () = {
561    ["Size of BootOptions"][::core::mem::size_of::<BootOptions>() - 1696usize];
562    ["Alignment of BootOptions"][::core::mem::align_of::<BootOptions>() - 8usize];
563    ["Offset of field: BootOptions::aslr_disabled"]
564        [::core::mem::offset_of!(BootOptions, aslr_disabled) - 0usize];
565    ["Offset of field: BootOptions::aslr_entropy_bits"]
566        [::core::mem::offset_of!(BootOptions, aslr_entropy_bits) - 1usize];
567    ["Offset of field: BootOptions::cprng_reseed_require_hw_rng"]
568        [::core::mem::offset_of!(BootOptions, cprng_reseed_require_hw_rng) - 2usize];
569    ["Offset of field: BootOptions::cprng_reseed_require_jitterentropy"]
570        [::core::mem::offset_of!(BootOptions, cprng_reseed_require_jitterentropy) - 3usize];
571    ["Offset of field: BootOptions::cprng_seed_require_hw_rng"]
572        [::core::mem::offset_of!(BootOptions, cprng_seed_require_hw_rng) - 4usize];
573    ["Offset of field: BootOptions::cprng_disable_jitterentropy"]
574        [::core::mem::offset_of!(BootOptions, cprng_disable_jitterentropy) - 5usize];
575    ["Offset of field: BootOptions::cprng_disable_hw_rng"]
576        [::core::mem::offset_of!(BootOptions, cprng_disable_hw_rng) - 6usize];
577    ["Offset of field: BootOptions::cprng_seed_require_jitterentropy"]
578        [::core::mem::offset_of!(BootOptions, cprng_seed_require_jitterentropy) - 7usize];
579    ["Offset of field: BootOptions::cprng_seed_require_cmdline"]
580        [::core::mem::offset_of!(BootOptions, cprng_seed_require_cmdline) - 8usize];
581    ["Offset of field: BootOptions::entropy_mixin"]
582        [::core::mem::offset_of!(BootOptions, entropy_mixin) - 16usize];
583    ["Offset of field: BootOptions::jitterentropy_bs"]
584        [::core::mem::offset_of!(BootOptions, jitterentropy_bs) - 184usize];
585    ["Offset of field: BootOptions::jitterentropy_bc"]
586        [::core::mem::offset_of!(BootOptions, jitterentropy_bc) - 188usize];
587    ["Offset of field: BootOptions::jitterentropy_ml"]
588        [::core::mem::offset_of!(BootOptions, jitterentropy_ml) - 192usize];
589    ["Offset of field: BootOptions::jitterentropy_ll"]
590        [::core::mem::offset_of!(BootOptions, jitterentropy_ll) - 196usize];
591    ["Offset of field: BootOptions::jitterentropy_raw"]
592        [::core::mem::offset_of!(BootOptions, jitterentropy_raw) - 200usize];
593    ["Offset of field: BootOptions::jitterentropy_entropy_per_1000_bytes"]
594        [::core::mem::offset_of!(BootOptions, jitterentropy_entropy_per_1000_bytes) - 204usize];
595    ["Offset of field: BootOptions::lockup_detector_critical_section_threshold_ms"][::core::mem::offset_of!(
596        BootOptions,
597        lockup_detector_critical_section_threshold_ms
598    ) - 208usize];
599    ["Offset of field: BootOptions::lockup_detector_critical_section_fatal_threshold_ms"][::core::mem::offset_of!(
600        BootOptions,
601        lockup_detector_critical_section_fatal_threshold_ms
602    )
603        - 216usize];
604    ["Offset of field: BootOptions::lockup_detector_heartbeat_period_ms"]
605        [::core::mem::offset_of!(BootOptions, lockup_detector_heartbeat_period_ms) - 224usize];
606    ["Offset of field: BootOptions::lockup_detector_heartbeat_age_threshold_ms"][::core::mem::offset_of!(
607        BootOptions,
608        lockup_detector_heartbeat_age_threshold_ms
609    ) - 232usize];
610    ["Offset of field: BootOptions::lockup_detector_age_fatal_threshold_ms"]
611        [::core::mem::offset_of!(BootOptions, lockup_detector_age_fatal_threshold_ms) - 240usize];
612    ["Offset of field: BootOptions::lockup_detector_diagnostic_query_timeout_ms"][::core::mem::offset_of!(
613        BootOptions,
614        lockup_detector_diagnostic_query_timeout_ms
615    ) - 248usize];
616    ["Offset of field: BootOptions::oom_behavior"]
617        [::core::mem::offset_of!(BootOptions, oom_behavior) - 256usize];
618    ["Offset of field: BootOptions::oom_timeout_ms"]
619        [::core::mem::offset_of!(BootOptions, oom_timeout_ms) - 260usize];
620    ["Offset of field: BootOptions::oom_enabled"]
621        [::core::mem::offset_of!(BootOptions, oom_enabled) - 264usize];
622    ["Offset of field: BootOptions::oom_out_of_memory_threshold_mb"]
623        [::core::mem::offset_of!(BootOptions, oom_out_of_memory_threshold_mb) - 272usize];
624    ["Offset of field: BootOptions::oom_critical_threshold_mb"]
625        [::core::mem::offset_of!(BootOptions, oom_critical_threshold_mb) - 280usize];
626    ["Offset of field: BootOptions::oom_warning_threshold_mb"]
627        [::core::mem::offset_of!(BootOptions, oom_warning_threshold_mb) - 288usize];
628    ["Offset of field: BootOptions::oom_debounce_mb"]
629        [::core::mem::offset_of!(BootOptions, oom_debounce_mb) - 296usize];
630    ["Offset of field: BootOptions::oom_evict_at_warning"]
631        [::core::mem::offset_of!(BootOptions, oom_evict_at_warning) - 304usize];
632    ["Offset of field: BootOptions::oom_evict_continuous"]
633        [::core::mem::offset_of!(BootOptions, oom_evict_continuous) - 305usize];
634    ["Offset of field: BootOptions::oom_eviction_delay_ms"]
635        [::core::mem::offset_of!(BootOptions, oom_eviction_delay_ms) - 312usize];
636    ["Offset of field: BootOptions::oom_evict_with_min_target"]
637        [::core::mem::offset_of!(BootOptions, oom_evict_with_min_target) - 320usize];
638    ["Offset of field: BootOptions::oom_eviction_delta_at_oom_mb"]
639        [::core::mem::offset_of!(BootOptions, oom_eviction_delta_at_oom_mb) - 328usize];
640    ["Offset of field: BootOptions::oom_hysteresis_seconds"]
641        [::core::mem::offset_of!(BootOptions, oom_hysteresis_seconds) - 336usize];
642    ["Offset of field: BootOptions::oom_imminent_oom_delta_mb"]
643        [::core::mem::offset_of!(BootOptions, oom_imminent_oom_delta_mb) - 344usize];
644    ["Offset of field: BootOptions::oom_trigger_on_alloc_failure"]
645        [::core::mem::offset_of!(BootOptions, oom_trigger_on_alloc_failure) - 352usize];
646    ["Offset of field: BootOptions::phys_verbose"]
647        [::core::mem::offset_of!(BootOptions, phys_verbose) - 353usize];
648    ["Offset of field: BootOptions::phys_backtrace_max"]
649        [::core::mem::offset_of!(BootOptions, phys_backtrace_max) - 356usize];
650    ["Offset of field: BootOptions::phys_print_stack_max"]
651        [::core::mem::offset_of!(BootOptions, phys_print_stack_max) - 360usize];
652    ["Offset of field: BootOptions::ppb_borrow_on_mru"]
653        [::core::mem::offset_of!(BootOptions, ppb_borrow_on_mru) - 364usize];
654    ["Offset of field: BootOptions::ppb_loan"]
655        [::core::mem::offset_of!(BootOptions, ppb_loan) - 365usize];
656    ["Offset of field: BootOptions::ppb_replace_on_unloan"]
657        [::core::mem::offset_of!(BootOptions, ppb_replace_on_unloan) - 366usize];
658    ["Offset of field: BootOptions::render_dlog_to_crashlog"]
659        [::core::mem::offset_of!(BootOptions, render_dlog_to_crashlog) - 367usize];
660    ["Offset of field: BootOptions::serial"]
661        [::core::mem::offset_of!(BootOptions, serial) - 368usize];
662    ["Offset of field: BootOptions::always_use_next_vdso"]
663        [::core::mem::offset_of!(BootOptions, always_use_next_vdso) - 392usize];
664    ["Offset of field: BootOptions::vdso_ticks_get_force_syscall"]
665        [::core::mem::offset_of!(BootOptions, vdso_ticks_get_force_syscall) - 393usize];
666    ["Offset of field: BootOptions::vdso_clock_get_force_syscall"]
667        [::core::mem::offset_of!(BootOptions, vdso_clock_get_force_syscall) - 394usize];
668    ["Offset of field: BootOptions::userpager_overtime_wait_seconds"]
669        [::core::mem::offset_of!(BootOptions, userpager_overtime_wait_seconds) - 400usize];
670    ["Offset of field: BootOptions::userpager_overtime_timeout_seconds"]
671        [::core::mem::offset_of!(BootOptions, userpager_overtime_timeout_seconds) - 408usize];
672    ["Offset of field: BootOptions::userpager_overtime_printout_limit"]
673        [::core::mem::offset_of!(BootOptions, userpager_overtime_printout_limit) - 416usize];
674    ["Offset of field: BootOptions::enable_virtual_heap"]
675        [::core::mem::offset_of!(BootOptions, enable_virtual_heap) - 420usize];
676    ["Offset of field: BootOptions::heap_max_size_mb"]
677        [::core::mem::offset_of!(BootOptions, heap_max_size_mb) - 424usize];
678    ["Offset of field: BootOptions::heap_alloc_fill_threshold"]
679        [::core::mem::offset_of!(BootOptions, heap_alloc_fill_threshold) - 432usize];
680    ["Offset of field: BootOptions::bufferchain_reserve_pages"]
681        [::core::mem::offset_of!(BootOptions, bufferchain_reserve_pages) - 440usize];
682    ["Offset of field: BootOptions::bypass_debuglog"]
683        [::core::mem::offset_of!(BootOptions, bypass_debuglog) - 448usize];
684    ["Offset of field: BootOptions::debug_uart_poll"]
685        [::core::mem::offset_of!(BootOptions, debug_uart_poll) - 449usize];
686    ["Offset of field: BootOptions::enable_debugging_syscalls"]
687        [::core::mem::offset_of!(BootOptions, enable_debugging_syscalls) - 450usize];
688    ["Offset of field: BootOptions::enable_serial_syscalls"]
689        [::core::mem::offset_of!(BootOptions, enable_serial_syscalls) - 451usize];
690    ["Offset of field: BootOptions::entropy_test_src"]
691        [::core::mem::offset_of!(BootOptions, entropy_test_src) - 452usize];
692    ["Offset of field: BootOptions::entropy_test_len"]
693        [::core::mem::offset_of!(BootOptions, entropy_test_len) - 456usize];
694    ["Offset of field: BootOptions::force_watchdog_disabled"]
695        [::core::mem::offset_of!(BootOptions, force_watchdog_disabled) - 464usize];
696    ["Offset of field: BootOptions::halt_on_panic"]
697        [::core::mem::offset_of!(BootOptions, halt_on_panic) - 465usize];
698    ["Offset of field: BootOptions::ktrace_bufsize"]
699        [::core::mem::offset_of!(BootOptions, ktrace_bufsize) - 468usize];
700    ["Offset of field: BootOptions::ktrace_grpmask"]
701        [::core::mem::offset_of!(BootOptions, ktrace_grpmask) - 472usize];
702    ["Offset of field: BootOptions::memory_limit_dbg"]
703        [::core::mem::offset_of!(BootOptions, memory_limit_dbg) - 476usize];
704    ["Offset of field: BootOptions::memory_limit_mb"]
705        [::core::mem::offset_of!(BootOptions, memory_limit_mb) - 480usize];
706    ["Offset of field: BootOptions::page_scanner_enable_eviction"]
707        [::core::mem::offset_of!(BootOptions, page_scanner_enable_eviction) - 488usize];
708    ["Offset of field: BootOptions::page_scanner_page_table_eviction_policy"]
709        [::core::mem::offset_of!(BootOptions, page_scanner_page_table_eviction_policy) - 489usize];
710    ["Offset of field: BootOptions::page_scanner_page_table_eviction_period_ms"][::core::mem::offset_of!(
711        BootOptions,
712        page_scanner_page_table_eviction_period_ms
713    ) - 492usize];
714    ["Offset of field: BootOptions::page_scanner_min_aging_interval_ms"]
715        [::core::mem::offset_of!(BootOptions, page_scanner_min_aging_interval_ms) - 496usize];
716    ["Offset of field: BootOptions::page_scanner_max_aging_interval_ms"]
717        [::core::mem::offset_of!(BootOptions, page_scanner_max_aging_interval_ms) - 500usize];
718    ["Offset of field: BootOptions::page_scanner_accessed_scan_interval_ms"]
719        [::core::mem::offset_of!(BootOptions, page_scanner_accessed_scan_interval_ms) - 504usize];
720    ["Offset of field: BootOptions::page_scanner_active_ratio_multiplier"]
721        [::core::mem::offset_of!(BootOptions, page_scanner_active_ratio_multiplier) - 508usize];
722    ["Offset of field: BootOptions::page_scanner_start_at_boot"]
723        [::core::mem::offset_of!(BootOptions, page_scanner_start_at_boot) - 512usize];
724    ["Offset of field: BootOptions::page_scanner_zero_page_scans_per_second"]
725        [::core::mem::offset_of!(BootOptions, page_scanner_zero_page_scans_per_second) - 520usize];
726    ["Offset of field: BootOptions::lru_action"]
727        [::core::mem::offset_of!(BootOptions, lru_action) - 528usize];
728    ["Offset of field: BootOptions::random_debug_compress"]
729        [::core::mem::offset_of!(BootOptions, random_debug_compress) - 529usize];
730    ["Offset of field: BootOptions::compression_strategy"]
731        [::core::mem::offset_of!(BootOptions, compression_strategy) - 530usize];
732    ["Offset of field: BootOptions::compression_storage_strategy"]
733        [::core::mem::offset_of!(BootOptions, compression_storage_strategy) - 531usize];
734    ["Offset of field: BootOptions::compression_threshold"]
735        [::core::mem::offset_of!(BootOptions, compression_threshold) - 532usize];
736    ["Offset of field: BootOptions::compression_lz4_acceleration"]
737        [::core::mem::offset_of!(BootOptions, compression_lz4_acceleration) - 536usize];
738    ["Offset of field: BootOptions::compression_at_memory_pressure"]
739        [::core::mem::offset_of!(BootOptions, compression_at_memory_pressure) - 540usize];
740    ["Offset of field: BootOptions::compression_reclaim_anonymous"]
741        [::core::mem::offset_of!(BootOptions, compression_reclaim_anonymous) - 541usize];
742    ["Offset of field: BootOptions::compression_reclaim_zero_forks"]
743        [::core::mem::offset_of!(BootOptions, compression_reclaim_zero_forks) - 542usize];
744    ["Offset of field: BootOptions::pmm_checker_action"]
745        [::core::mem::offset_of!(BootOptions, pmm_checker_action) - 543usize];
746    ["Offset of field: BootOptions::pmm_checker_enabled"]
747        [::core::mem::offset_of!(BootOptions, pmm_checker_enabled) - 544usize];
748    ["Offset of field: BootOptions::pmm_checker_fill_size"]
749        [::core::mem::offset_of!(BootOptions, pmm_checker_fill_size) - 552usize];
750    ["Offset of field: BootOptions::pmm_alloc_random_should_wait"]
751        [::core::mem::offset_of!(BootOptions, pmm_alloc_random_should_wait) - 568usize];
752    ["Offset of field: BootOptions::stack_canary_percent_free"]
753        [::core::mem::offset_of!(BootOptions, stack_canary_percent_free) - 576usize];
754    ["Offset of field: BootOptions::port_observer_reserve_pages"]
755        [::core::mem::offset_of!(BootOptions, port_observer_reserve_pages) - 584usize];
756    ["Offset of field: BootOptions::port_packet_reserve_pages"]
757        [::core::mem::offset_of!(BootOptions, port_packet_reserve_pages) - 592usize];
758    ["Offset of field: BootOptions::root_job_behavior"]
759        [::core::mem::offset_of!(BootOptions, root_job_behavior) - 600usize];
760    ["Offset of field: BootOptions::root_job_notice"]
761        [::core::mem::offset_of!(BootOptions, root_job_notice) - 601usize];
762    ["Offset of field: BootOptions::shell"][::core::mem::offset_of!(BootOptions, shell) - 761usize];
763    ["Offset of field: BootOptions::shell_script"]
764        [::core::mem::offset_of!(BootOptions, shell_script) - 762usize];
765    ["Offset of field: BootOptions::smp_ht_enabled"]
766        [::core::mem::offset_of!(BootOptions, smp_ht_enabled) - 922usize];
767    ["Offset of field: BootOptions::test_ram_reserve"]
768        [::core::mem::offset_of!(BootOptions, test_ram_reserve) - 928usize];
769    ["Offset of field: BootOptions::max_port_observers"]
770        [::core::mem::offset_of!(BootOptions, max_port_observers) - 960usize];
771    ["Offset of field: BootOptions::select"]
772        [::core::mem::offset_of!(BootOptions, select) - 968usize];
773    ["Offset of field: BootOptions::userboot"]
774        [::core::mem::offset_of!(BootOptions, userboot) - 1128usize];
775    ["Offset of field: BootOptions::power_boot_boost"]
776        [::core::mem::offset_of!(BootOptions, power_boot_boost) - 1288usize];
777    ["Offset of field: BootOptions::power_rppm"]
778        [::core::mem::offset_of!(BootOptions, power_rppm) - 1289usize];
779    ["Offset of field: BootOptions::scheduler_prefer_little_cpus"]
780        [::core::mem::offset_of!(BootOptions, scheduler_prefer_little_cpus) - 1290usize];
781    ["Offset of field: BootOptions::enable_new_wakeup_accounting"]
782        [::core::mem::offset_of!(BootOptions, enable_new_wakeup_accounting) - 1291usize];
783    ["Offset of field: BootOptions::ubsan_action"]
784        [::core::mem::offset_of!(BootOptions, ubsan_action) - 1292usize];
785    ["Offset of field: BootOptions::debug_boot_spin"]
786        [::core::mem::offset_of!(BootOptions, debug_boot_spin) - 1293usize];
787    ["Offset of field: BootOptions::experimental_expand_memory_stall"]
788        [::core::mem::offset_of!(BootOptions, experimental_expand_memory_stall) - 1294usize];
789    ["Offset of field: BootOptions::x86_disable_spec_mitigations"]
790        [::core::mem::offset_of!(BootOptions, x86_disable_spec_mitigations) - 1295usize];
791    ["Offset of field: BootOptions::x86_hwp"]
792        [::core::mem::offset_of!(BootOptions, x86_hwp) - 1296usize];
793    ["Offset of field: BootOptions::x86_hwp_policy"]
794        [::core::mem::offset_of!(BootOptions, x86_hwp_policy) - 1297usize];
795    ["Offset of field: BootOptions::x86_md_clear_on_user_return"]
796        [::core::mem::offset_of!(BootOptions, x86_md_clear_on_user_return) - 1298usize];
797    ["Offset of field: BootOptions::x86_spec_store_bypass_disable"]
798        [::core::mem::offset_of!(BootOptions, x86_spec_store_bypass_disable) - 1299usize];
799    ["Offset of field: BootOptions::x86_turbo"]
800        [::core::mem::offset_of!(BootOptions, x86_turbo) - 1300usize];
801    ["Offset of field: BootOptions::x86_enable_pcid"]
802        [::core::mem::offset_of!(BootOptions, x86_enable_pcid) - 1301usize];
803    ["Offset of field: BootOptions::x86_smp_max_cpus"]
804        [::core::mem::offset_of!(BootOptions, x86_smp_max_cpus) - 1304usize];
805    ["Offset of field: BootOptions::x86_wallclock"]
806        [::core::mem::offset_of!(BootOptions, x86_wallclock) - 1308usize];
807    ["Offset of field: BootOptions::test_uint32"]
808        [::core::mem::offset_of!(BootOptions, test_uint32) - 1312usize];
809    ["Offset of field: BootOptions::test_uint64"]
810        [::core::mem::offset_of!(BootOptions, test_uint64) - 1320usize];
811    ["Offset of field: BootOptions::test_bool"]
812        [::core::mem::offset_of!(BootOptions, test_bool) - 1328usize];
813    ["Offset of field: BootOptions::test_smallstring"]
814        [::core::mem::offset_of!(BootOptions, test_smallstring) - 1329usize];
815    ["Offset of field: BootOptions::test_enum"]
816        [::core::mem::offset_of!(BootOptions, test_enum) - 1492usize];
817    ["Offset of field: BootOptions::test_struct"]
818        [::core::mem::offset_of!(BootOptions, test_struct) - 1496usize];
819    ["Offset of field: BootOptions::test_redacted_hex"]
820        [::core::mem::offset_of!(BootOptions, test_redacted_hex) - 1504usize];
821    ["Offset of field: BootOptions::test_auto_or_uint64"]
822        [::core::mem::offset_of!(BootOptions, test_auto_or_uint64) - 1672usize];
823    ["Offset of field: BootOptions::smp_max_cpus"]
824        [::core::mem::offset_of!(BootOptions, smp_max_cpus) - 1688usize];
825};