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