11package uefi
22
3- import "unsafe"
4-
53// Device Path structures - Section C
64
75// EFI_DEVICE_PATH_PROTOCOL structure
@@ -10,74 +8,3 @@ type EFI_DEVICE_PATH_PROTOCOL struct {
108 SubType uint8
119 Length [2 ]uint8
1210}
13-
14- // EFI_DEVICE_PATH_PROTOCOL aliases
15- type EFI_DEVICE_PATH EFI_DEVICE_PATH_PROTOCOL
16-
17- // EFI_DEVICE_PATH related constants
18- const (
19- EFI_DP_TYPE_MASK = 0x7F
20- EFI_DP_TYPE_UNPACKED = 0x80
21- END_DEVICE_PATH_TYPE = 0x7F
22- END_ENTIRE_DEVICE_PATH_SUBTYPE = 0xFF
23- END_INSTANCE_DEVICE_PATH_SUBTYPE = 0x01
24- )
25-
26- var END_DEVICE_PATH_LENGTH = unsafe .Sizeof (EFI_DEVICE_PATH_PROTOCOL {})
27-
28- // Macro-like functions for manipulating EFI_DEVICE_PATH_PROTOCOL
29- func DP_IS_END_TYPE (a * EFI_DEVICE_PATH_PROTOCOL ) bool {
30- return (a .Type == END_DEVICE_PATH_TYPE )
31- }
32-
33- func DP_IS_END_SUBTYPE (a * EFI_DEVICE_PATH_PROTOCOL ) bool {
34- return (a .SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
35- }
36-
37- func DevicePathType (a * EFI_DEVICE_PATH_PROTOCOL ) uint8 {
38- return (a .Type & EFI_DP_TYPE_MASK )
39- }
40-
41- func DevicePathSubType (a * EFI_DEVICE_PATH_PROTOCOL ) uint8 {
42- return a .SubType
43- }
44-
45- func DevicePathNodeLength (a * EFI_DEVICE_PATH_PROTOCOL ) uint16 {
46- return uint16 (a .Length [0 ]) | (uint16 (a .Length [1 ]) << 8 )
47- }
48-
49- func NextDevicePathNode (a * EFI_DEVICE_PATH_PROTOCOL ) * EFI_DEVICE_PATH_PROTOCOL {
50- return (* EFI_DEVICE_PATH_PROTOCOL )(unsafe .Pointer (uintptr (unsafe .Pointer (a )) + uintptr (DevicePathNodeLength (a ))))
51- }
52-
53- func IsDevicePathEndType (a * EFI_DEVICE_PATH_PROTOCOL ) bool {
54- return DevicePathType (a ) == END_DEVICE_PATH_TYPE
55- }
56-
57- func IsDevicePathEndSubType (a * EFI_DEVICE_PATH_PROTOCOL ) bool {
58- return a .SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE
59- }
60-
61- func IsDevicePathEnd (a * EFI_DEVICE_PATH_PROTOCOL ) bool {
62- return IsDevicePathEndType (a ) && IsDevicePathEndSubType (a )
63- }
64-
65- func IsDevicePathUnpacked (a * EFI_DEVICE_PATH_PROTOCOL ) bool {
66- return (a .Type & EFI_DP_TYPE_UNPACKED ) != 0
67- }
68-
69- func SetDevicePathNodeLength (a * EFI_DEVICE_PATH_PROTOCOL , l uint16 ) {
70- a .Length [0 ] = uint8 (l )
71- a .Length [1 ] = uint8 (l >> 8 )
72- }
73-
74- func SetDevicePathEndNode (a * EFI_DEVICE_PATH_PROTOCOL ) {
75- a .Type = END_DEVICE_PATH_TYPE
76- a .SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE
77- a .Length [0 ] = uint8 (END_DEVICE_PATH_LENGTH )
78- a .Length [1 ] = 0
79- }
80-
81- //region: Hardware Device Path (UEFI 2.4 specification, version 2.4 § 9.3.2.)
82-
83- //endregion
0 commit comments