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