• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 /*
6  * automatically generated by bindgen
7  * From chromeos-linux v4.19
8  * $ bindgen \
9  *       --no-layout-tests --with-derive-default --no-doc-comments \
10  *       --allowlist-type boot_params --allowlist-type setup_data \
11  *       arch/x86/include/uapi/asm/bootparam.h
12  */
13 
14 // Editted to derive zerocopy traits, should migrate to bindgen when
15 // its command line support adding custom derives. Currently bindgen
16 // only support deriving custom traits with build.rs, and we don't want
17 // to run build.rs bindgen on kernel.
18 
19 use zerocopy::FromBytes;
20 use zerocopy::Immutable;
21 use zerocopy::IntoBytes;
22 use zerocopy::KnownLayout;
23 
24 /// Set if kernel image has a 64-bit entry point at 0x200.
25 pub const XLF_KERNEL_64: u16 = 1 << 0;
26 /// Set if kernel/boot_params/cmdline/ramdisk can be above 4G.
27 pub const XLF_CAN_BE_LOADED_ABOVE_4G: u16 = 1 << 1;
28 
29 #[repr(C)]
30 #[derive(Default)]
31 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
32 impl<T> __IncompleteArrayField<T> {
33     #[inline]
new() -> Self34     pub fn new() -> Self {
35         __IncompleteArrayField(::std::marker::PhantomData, [])
36     }
37     /// # Safety
38     ///
39     /// Caller must ensure that Self`s size, alignment and lifetime are
40     /// compatible with returned values requirements.
41     #[inline]
as_ptr(&self) -> *const T42     pub unsafe fn as_ptr(&self) -> *const T {
43         ::std::mem::transmute(self)
44     }
45     /// # Safety
46     ///
47     /// Caller must ensure that Self`s size, alignment and lifetime are
48     /// compatible with returned values requirements.
49     #[inline]
as_mut_ptr(&mut self) -> *mut T50     pub unsafe fn as_mut_ptr(&mut self) -> *mut T {
51         ::std::mem::transmute(self)
52     }
53     /// # Safety
54     ///
55     /// Caller must ensure that Self`s size, alignment and lifetime are
56     /// compatible with returned values requirements.
57     #[inline]
as_slice(&self, len: usize) -> &[T]58     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
59         ::std::slice::from_raw_parts(self.as_ptr(), len)
60     }
61     #[inline]
62     /// # Safety
63     ///
64     /// Caller must ensure that Self`s size, alignment and lifetime are
65     /// compatible with returned values requirements.
as_mut_slice(&mut self, len: usize) -> &mut [T]66     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
67         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
68     }
69 }
70 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result71     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
72         fmt.write_str("__IncompleteArrayField")
73     }
74 }
75 impl<T> ::std::clone::Clone for __IncompleteArrayField<T> {
76     #[inline]
clone(&self) -> Self77     fn clone(&self) -> Self {
78         Self::new()
79     }
80 }
81 pub type __u8 = ::std::os::raw::c_uchar;
82 pub type __u16 = ::std::os::raw::c_ushort;
83 pub type __u32 = ::std::os::raw::c_uint;
84 pub type __u64 = ::std::os::raw::c_ulonglong;
85 #[repr(C, packed)]
86 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
87 pub struct screen_info {
88     pub orig_x: __u8,
89     pub orig_y: __u8,
90     pub ext_mem_k: __u16,
91     pub orig_video_page: __u16,
92     pub orig_video_mode: __u8,
93     pub orig_video_cols: __u8,
94     pub flags: __u8,
95     pub unused2: __u8,
96     pub orig_video_ega_bx: __u16,
97     pub unused3: __u16,
98     pub orig_video_lines: __u8,
99     pub orig_video_isVGA: __u8,
100     pub orig_video_points: __u16,
101     pub lfb_width: __u16,
102     pub lfb_height: __u16,
103     pub lfb_depth: __u16,
104     pub lfb_base: __u32,
105     pub lfb_size: __u32,
106     pub cl_magic: __u16,
107     pub cl_offset: __u16,
108     pub lfb_linelength: __u16,
109     pub red_size: __u8,
110     pub red_pos: __u8,
111     pub green_size: __u8,
112     pub green_pos: __u8,
113     pub blue_size: __u8,
114     pub blue_pos: __u8,
115     pub rsvd_size: __u8,
116     pub rsvd_pos: __u8,
117     pub vesapm_seg: __u16,
118     pub vesapm_off: __u16,
119     pub pages: __u16,
120     pub vesa_attributes: __u16,
121     pub capabilities: __u32,
122     pub ext_lfb_base: __u32,
123     pub _reserved: [__u8; 2usize],
124 }
125 #[repr(C)]
126 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
127 pub struct apm_bios_info {
128     pub version: __u16,
129     pub cseg: __u16,
130     pub offset: __u32,
131     pub cseg_16: __u16,
132     pub dseg: __u16,
133     pub flags: __u16,
134     pub cseg_len: __u16,
135     pub cseg_16_len: __u16,
136     pub dseg_len: __u16,
137 }
138 #[repr(C, packed)]
139 #[derive(Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
140 pub struct edd_device_params {
141     pub length: __u16,
142     pub info_flags: __u16,
143     pub num_default_cylinders: __u32,
144     pub num_default_heads: __u32,
145     pub sectors_per_track: __u32,
146     pub number_of_sectors: __u64,
147     pub bytes_per_sector: __u16,
148     pub dpte_ptr: __u32,
149     pub key: __u16,
150     pub device_path_info_length: __u8,
151     pub reserved2: __u8,
152     pub reserved3: __u16,
153     pub host_bus_type: [__u8; 4usize],
154     pub interface_type: [__u8; 8usize],
155     pub interface_path: [__u8; 8usize],
156     pub device_path: [__u8; 16usize],
157     pub reserved4: __u8,
158     pub checksum: __u8,
159 }
160 #[repr(C)]
161 #[derive(Copy, Clone, FromBytes, Immutable, KnownLayout)]
162 pub union edd_device_params__bindgen_ty_1 {
163     pub isa: edd_device_params__bindgen_ty_1__bindgen_ty_1,
164     pub pci: edd_device_params__bindgen_ty_1__bindgen_ty_2,
165     pub ibnd: edd_device_params__bindgen_ty_1__bindgen_ty_3,
166     pub xprs: edd_device_params__bindgen_ty_1__bindgen_ty_4,
167     pub htpt: edd_device_params__bindgen_ty_1__bindgen_ty_5,
168     pub unknown: edd_device_params__bindgen_ty_1__bindgen_ty_6,
169     _bindgen_union_align: [u8; 8usize],
170 }
171 #[repr(C, packed)]
172 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
173 pub struct edd_device_params__bindgen_ty_1__bindgen_ty_1 {
174     pub base_address: __u16,
175     pub reserved1: __u16,
176     pub reserved2: __u32,
177 }
178 #[repr(C, packed)]
179 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
180 pub struct edd_device_params__bindgen_ty_1__bindgen_ty_2 {
181     pub bus: __u8,
182     pub slot: __u8,
183     pub function: __u8,
184     pub channel: __u8,
185     pub reserved: __u32,
186 }
187 #[repr(C, packed)]
188 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
189 pub struct edd_device_params__bindgen_ty_1__bindgen_ty_3 {
190     pub reserved: __u64,
191 }
192 #[repr(C, packed)]
193 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
194 pub struct edd_device_params__bindgen_ty_1__bindgen_ty_4 {
195     pub reserved: __u64,
196 }
197 #[repr(C, packed)]
198 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
199 pub struct edd_device_params__bindgen_ty_1__bindgen_ty_5 {
200     pub reserved: __u64,
201 }
202 #[repr(C, packed)]
203 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
204 pub struct edd_device_params__bindgen_ty_1__bindgen_ty_6 {
205     pub reserved: __u64,
206 }
207 impl Default for edd_device_params__bindgen_ty_1 {
default() -> Self208     fn default() -> Self {
209         // SAFETY: trivially safe
210         unsafe { ::std::mem::zeroed() }
211     }
212 }
213 #[repr(C)]
214 #[derive(Copy, Clone, FromBytes, Immutable, KnownLayout)]
215 pub union edd_device_params__bindgen_ty_2 {
216     pub ata: edd_device_params__bindgen_ty_2__bindgen_ty_1,
217     pub atapi: edd_device_params__bindgen_ty_2__bindgen_ty_2,
218     pub scsi: edd_device_params__bindgen_ty_2__bindgen_ty_3,
219     pub usb: edd_device_params__bindgen_ty_2__bindgen_ty_4,
220     pub i1394: edd_device_params__bindgen_ty_2__bindgen_ty_5,
221     pub fibre: edd_device_params__bindgen_ty_2__bindgen_ty_6,
222     pub i2o: edd_device_params__bindgen_ty_2__bindgen_ty_7,
223     pub raid: edd_device_params__bindgen_ty_2__bindgen_ty_8,
224     pub sata: edd_device_params__bindgen_ty_2__bindgen_ty_9,
225     pub unknown: edd_device_params__bindgen_ty_2__bindgen_ty_10,
226     _bindgen_union_align: [u8; 16usize],
227 }
228 #[repr(C, packed)]
229 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
230 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_1 {
231     pub device: __u8,
232     pub reserved1: __u8,
233     pub reserved2: __u16,
234     pub reserved3: __u32,
235     pub reserved4: __u64,
236 }
237 #[repr(C, packed)]
238 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
239 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_2 {
240     pub device: __u8,
241     pub lun: __u8,
242     pub reserved1: __u8,
243     pub reserved2: __u8,
244     pub reserved3: __u32,
245     pub reserved4: __u64,
246 }
247 #[repr(C, packed)]
248 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
249 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_3 {
250     pub id: __u16,
251     pub lun: __u64,
252     pub reserved1: __u16,
253     pub reserved2: __u32,
254 }
255 #[repr(C, packed)]
256 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
257 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_4 {
258     pub serial_number: __u64,
259     pub reserved: __u64,
260 }
261 #[repr(C, packed)]
262 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
263 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_5 {
264     pub eui: __u64,
265     pub reserved: __u64,
266 }
267 #[repr(C, packed)]
268 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
269 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_6 {
270     pub wwid: __u64,
271     pub lun: __u64,
272 }
273 #[repr(C, packed)]
274 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
275 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_7 {
276     pub identity_tag: __u64,
277     pub reserved: __u64,
278 }
279 #[repr(C, packed)]
280 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
281 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_8 {
282     pub array_number: __u32,
283     pub reserved1: __u32,
284     pub reserved2: __u64,
285 }
286 #[repr(C, packed)]
287 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
288 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_9 {
289     pub device: __u8,
290     pub reserved1: __u8,
291     pub reserved2: __u16,
292     pub reserved3: __u32,
293     pub reserved4: __u64,
294 }
295 #[repr(C, packed)]
296 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
297 pub struct edd_device_params__bindgen_ty_2__bindgen_ty_10 {
298     pub reserved1: __u64,
299     pub reserved2: __u64,
300 }
301 impl Default for edd_device_params__bindgen_ty_2 {
default() -> Self302     fn default() -> Self {
303         // SAFETY: trivially safe
304         unsafe { ::std::mem::zeroed() }
305     }
306 }
307 impl Default for edd_device_params {
default() -> Self308     fn default() -> Self {
309         // SAFETY: trivially safe
310         unsafe { ::std::mem::zeroed() }
311     }
312 }
313 #[repr(C, packed)]
314 #[derive(Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
315 pub struct edd_info {
316     pub device: __u8,
317     pub version: __u8,
318     pub interface_support: __u16,
319     pub legacy_max_cylinder: __u16,
320     pub legacy_max_head: __u8,
321     pub legacy_sectors_per_track: __u8,
322     pub params: edd_device_params,
323 }
324 impl Default for edd_info {
default() -> Self325     fn default() -> Self {
326         // SAFETY: trivially safe
327         unsafe { ::std::mem::zeroed() }
328     }
329 }
330 #[repr(C)]
331 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
332 pub struct ist_info {
333     pub signature: __u32,
334     pub command: __u32,
335     pub event: __u32,
336     pub perf_level: __u32,
337 }
338 #[repr(C)]
339 #[derive(Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
340 pub struct edid_info {
341     pub dummy: [::std::os::raw::c_uchar; 128usize],
342 }
343 impl Default for edid_info {
default() -> Self344     fn default() -> Self {
345         // SAFETY: trivially safe
346         unsafe { ::std::mem::zeroed() }
347     }
348 }
349 #[repr(C)]
350 #[derive(Debug, Default)]
351 pub struct setup_data {
352     pub next: __u64,
353     pub type_: __u32,
354     pub len: __u32,
355     pub data: __IncompleteArrayField<__u8>,
356 }
357 #[repr(C, packed)]
358 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
359 pub struct setup_header {
360     pub setup_sects: __u8,
361     pub root_flags: __u16,
362     pub syssize: __u32,
363     pub ram_size: __u16,
364     pub vid_mode: __u16,
365     pub root_dev: __u16,
366     pub boot_flag: __u16,
367     pub jump: __u16,
368     pub header: __u32,
369     pub version: __u16,
370     pub realmode_swtch: __u32,
371     pub start_sys_seg: __u16,
372     pub kernel_version: __u16,
373     pub type_of_loader: __u8,
374     pub loadflags: __u8,
375     pub setup_move_size: __u16,
376     pub code32_start: __u32,
377     pub ramdisk_image: __u32,
378     pub ramdisk_size: __u32,
379     pub bootsect_kludge: __u32,
380     pub heap_end_ptr: __u16,
381     pub ext_loader_ver: __u8,
382     pub ext_loader_type: __u8,
383     pub cmd_line_ptr: __u32,
384     pub initrd_addr_max: __u32,
385     pub kernel_alignment: __u32,
386     pub relocatable_kernel: __u8,
387     pub min_alignment: __u8,
388     pub xloadflags: __u16,
389     pub cmdline_size: __u32,
390     pub hardware_subarch: __u32,
391     pub hardware_subarch_data: __u64,
392     pub payload_offset: __u32,
393     pub payload_length: __u32,
394     pub setup_data: __u64,
395     pub pref_address: __u64,
396     pub init_size: __u32,
397     pub handover_offset: __u32,
398 }
399 #[repr(C)]
400 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
401 pub struct sys_desc_table {
402     pub length: __u16,
403     pub table: [__u8; 14usize],
404 }
405 #[repr(C, packed)]
406 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
407 pub struct olpc_ofw_header {
408     pub ofw_magic: __u32,
409     pub ofw_version: __u32,
410     pub cif_handler: __u32,
411     pub irq_desc_table: __u32,
412 }
413 #[repr(C)]
414 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
415 pub struct efi_info {
416     pub efi_loader_signature: __u32,
417     pub efi_systab: __u32,
418     pub efi_memdesc_size: __u32,
419     pub efi_memdesc_version: __u32,
420     pub efi_memmap: __u32,
421     pub efi_memmap_size: __u32,
422     pub efi_systab_hi: __u32,
423     pub efi_memmap_hi: __u32,
424 }
425 #[repr(C, packed)]
426 #[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
427 pub struct boot_e820_entry {
428     pub addr: __u64,
429     pub size: __u64,
430     pub type_: __u32,
431 }
432 #[repr(C, packed)]
433 #[derive(Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
434 pub struct boot_params {
435     pub screen_info: screen_info,
436     pub apm_bios_info: apm_bios_info,
437     pub _pad2: [__u8; 4usize],
438     pub tboot_addr: __u64,
439     pub ist_info: ist_info,
440     pub acpi_rsdp_addr: __u64,
441     pub _pad3: [__u8; 8usize],
442     pub hd0_info: [__u8; 16usize],
443     pub hd1_info: [__u8; 16usize],
444     pub sys_desc_table: sys_desc_table,
445     pub olpc_ofw_header: olpc_ofw_header,
446     pub ext_ramdisk_image: __u32,
447     pub ext_ramdisk_size: __u32,
448     pub ext_cmd_line_ptr: __u32,
449     pub _pad4: [__u8; 116usize],
450     pub edid_info: edid_info,
451     pub efi_info: efi_info,
452     pub alt_mem_k: __u32,
453     pub scratch: __u32,
454     pub e820_entries: __u8,
455     pub eddbuf_entries: __u8,
456     pub edd_mbr_sig_buf_entries: __u8,
457     pub kbd_status: __u8,
458     pub secure_boot: __u8,
459     pub _pad5: [__u8; 2usize],
460     pub sentinel: __u8,
461     pub _pad6: [__u8; 1usize],
462     pub hdr: setup_header,
463     pub _pad7: [__u8; 40usize],
464     pub edd_mbr_sig_buffer: [__u32; 16usize],
465     pub e820_table: [boot_e820_entry; 128usize],
466     pub _pad8: [__u8; 48usize],
467     pub eddbuf: [edd_info; 6usize],
468     pub _pad9: [__u8; 276usize],
469 }
470 impl Default for boot_params {
default() -> Self471     fn default() -> Self {
472         // SAFETY: trivially safe
473         unsafe { ::std::mem::zeroed() }
474     }
475 }
476