1use zerocopy::FromBytes;
20use zerocopy::Immutable;
21use zerocopy::IntoBytes;
22use zerocopy::KnownLayout;
23
24pub const XLF_KERNEL_64: u16 = 1 << 0;
26pub const XLF_CAN_BE_LOADED_ABOVE_4G: u16 = 1 << 1;
28
29#[repr(C)]
30#[derive(Default)]
31pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
32impl<T> __IncompleteArrayField<T> {
33 #[inline]
34 pub fn new() -> Self {
35 __IncompleteArrayField(::std::marker::PhantomData, [])
36 }
37 #[inline]
42 pub unsafe fn as_ptr(&self) -> *const T {
43 ::std::mem::transmute(self)
44 }
45 #[inline]
50 pub unsafe fn as_mut_ptr(&mut self) -> *mut T {
51 ::std::mem::transmute(self)
52 }
53 #[inline]
58 pub unsafe fn as_slice(&self, len: usize) -> &[T] {
59 ::std::slice::from_raw_parts(self.as_ptr(), len)
60 }
61 #[inline]
62 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}
70impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
71 fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
72 fmt.write_str("__IncompleteArrayField")
73 }
74}
75impl<T> ::std::clone::Clone for __IncompleteArrayField<T> {
76 #[inline]
77 fn clone(&self) -> Self {
78 Self::new()
79 }
80}
81pub type __u8 = ::std::os::raw::c_uchar;
82pub type __u16 = ::std::os::raw::c_ushort;
83pub type __u32 = ::std::os::raw::c_uint;
84pub type __u64 = ::std::os::raw::c_ulonglong;
85#[repr(C, packed)]
86#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
87pub 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)]
127pub 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)]
140pub 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)]
162pub 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)]
173pub 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)]
180pub 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)]
189pub 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)]
194pub 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)]
199pub 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)]
204pub struct edd_device_params__bindgen_ty_1__bindgen_ty_6 {
205 pub reserved: __u64,
206}
207impl Default for edd_device_params__bindgen_ty_1 {
208 fn default() -> Self {
209 unsafe { ::std::mem::zeroed() }
211 }
212}
213#[repr(C)]
214#[derive(Copy, Clone, FromBytes, Immutable, KnownLayout)]
215pub 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)]
230pub 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)]
239pub 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)]
249pub 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)]
257pub 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)]
263pub 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)]
269pub 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)]
275pub 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)]
281pub 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)]
288pub 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)]
297pub struct edd_device_params__bindgen_ty_2__bindgen_ty_10 {
298 pub reserved1: __u64,
299 pub reserved2: __u64,
300}
301impl Default for edd_device_params__bindgen_ty_2 {
302 fn default() -> Self {
303 unsafe { ::std::mem::zeroed() }
305 }
306}
307impl Default for edd_device_params {
308 fn default() -> Self {
309 unsafe { ::std::mem::zeroed() }
311 }
312}
313#[repr(C, packed)]
314#[derive(Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
315pub 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}
324impl Default for edd_info {
325 fn default() -> Self {
326 unsafe { ::std::mem::zeroed() }
328 }
329}
330#[repr(C)]
331#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
332pub 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)]
340pub struct edid_info {
341 pub dummy: [::std::os::raw::c_uchar; 128usize],
342}
343impl Default for edid_info {
344 fn default() -> Self {
345 unsafe { ::std::mem::zeroed() }
347 }
348}
349#[repr(C)]
350#[derive(Debug, Default)]
351pub 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)]
359pub 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)]
401pub 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)]
407pub 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)]
415pub 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)]
427pub 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)]
434pub 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}
470impl Default for boot_params {
471 fn default() -> Self {
472 unsafe { ::std::mem::zeroed() }
474 }
475}