uefi/
device.rs

1use crate::prelude::*;
2
3enum_try_from_int! {
4    #[repr(u8)]
5    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
6    pub enum DevicePathType {
7        Hardware = 0x01,
8        Acpi = 0x02,
9        Messaging = 0x03,
10        Media = 0x04,
11        Bbs = 0x05,
12        End = 0x7f,
13    }
14}
15
16enum_try_from_int! {
17    #[repr(u8)]
18    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
19    pub enum DevicePathHardwareType {
20        Pci = 0x01,
21        Pccard = 0x02,
22        Memmap = 0x03,
23        Vendor = 0x04,
24        Controller = 0x05,
25    }
26}
27
28enum_try_from_int! {
29    #[repr(u8)]
30    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
31    pub enum DevicePathAcpiType {
32        Acpi = 0x01,
33        Extended = 0x02,
34        Adr = 0x03,
35    }
36}
37
38enum_try_from_int! {
39    #[repr(u8)]
40    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
41    pub enum DevicePathMessagingType {
42        Atapi = 0x01,
43        Scsi = 0x02,
44        Fiberchannel = 0x03,
45        Serial1394 = 0x04,
46        Usb = 0x05,
47        Sata = 0x12,
48        Wwid = 0x10,
49        Dlu = 0x11,
50        Usbclass = 0x0f,
51        I2o = 0x06,
52        Mac = 0x0b,
53        Ipv4 = 0x0c,
54        Ipv6 = 0x0d,
55        Infiniband = 0x09,
56        Uart = 0x0e,
57        Vendordefined = 0x0a,
58        Iscsi = 0x13,
59        Nvme = 0x17,
60    }
61}
62
63enum_try_from_int! {
64    #[repr(u8)]
65    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
66    pub enum DevicePathMediaType {
67        Harddrive = 0x01,
68        Cdrom = 0x02,
69        Vendor = 0x03,
70        Filepath = 0x04,
71        Protocol = 0x05,
72    }
73}
74
75enum_try_from_int! {
76    #[repr(u8)]
77    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
78    pub enum DevicePathBbsType {
79        Bbs = 0x01,
80    }
81}
82
83enum_try_from_int! {
84    #[repr(u8)]
85    #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
86    pub enum DevicePathEndType {
87        Instance = 0x01,
88        Entire = 0xff,
89    }
90}
91
92#[repr(C)]
93pub struct DevicePath {
94    pub Type: u8,
95    pub SubType: u8,
96    pub Length: u16,
97}
98
99impl DevicePath {
100    pub const GUID: Guid = guid!("09576e91-6d3f-11d2-8e39-00a0c969723b");
101}
102
103#[repr(C)]
104pub struct VendorDevicePath {
105    pub Header: DevicePath,
106    pub Guid: Guid,
107}