The UEFI spec says this structure should be packed. Defined like that it is likely the compiler would add a padding between 'Attributes' and 'FilePathListLength' which is not what the UEFI spec expects.
-----Original Message----- From: Ruiyu Ni [mailto:[email protected]] Sent: 28 April 2015 07:17 To: [email protected] Subject: [edk2] [Patch] MdePkg: Add EFI_LOAD_OPTION definition. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <[email protected]> Reviewed-by: Liming Gao <[email protected]> --- MdePkg/Include/Uefi/UefiSpec.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/MdePkg/Include/Uefi/UefiSpec.h b/MdePkg/Include/Uefi/UefiSpec.h index 64105c2..5e23694 100644 --- a/MdePkg/Include/Uefi/UefiSpec.h +++ b/MdePkg/Include/Uefi/UefiSpec.h @@ -2026,6 +2026,48 @@ EFI_STATUS ); // +// EFI Load Option +// +typedef struct _EFI_LOAD_OPTION { + /// + /// The attributes for this load option entry. All unused bits must +be zero + /// and are reserved by the UEFI specification for future growth. + /// + UINT32 Attributes; + /// + /// Length in bytes of the FilePathList. OptionalData starts at +offset + /// sizeof(UINT32) + sizeof(UINT16) + StrSize(Description) + +FilePathListLength + /// of the EFI_LOAD_OPTION descriptor. + /// + UINT16 FilePathListLength; + /// + /// The user readable description for the load option. + /// This field ends with a Null character. + /// + // CHAR16 Description[]; + /// + /// A packed array of UEFI device paths. The first element of the +array is a + /// device path that describes the device and location of the Image +for this + /// load option. The FilePathList[0] is specific to the device type. +Other + /// device paths may optionally exist in the FilePathList, but their +usage is + /// OSV specific. Each element in the array is variable length, and +ends at + /// the device path end structure. Because the size of Description is + /// arbitrary, this data structure is not guaranteed to be aligned on +a + /// natural boundary. This data structure may have to be copied to an +aligned + /// natural boundary before it is used. + /// + // EFI_DEVICE_PATH_PROTOCOL FilePathList[]; + /// + /// The remaining bytes in the load option descriptor are a binary +data buffer + /// that is passed to the loaded image. If the field is zero bytes +long, a + /// NULL pointer is passed to the loaded image. The number of bytes +in + /// OptionalData can be computed by subtracting the starting offset +of + /// OptionalData from total size in bytes of the EFI_LOAD_OPTION. + /// + // UINT8 OptionalData[]; +} EFI_LOAD_OPTION; + +// // EFI Load Options Attributes // #define LOAD_OPTION_ACTIVE 0x00000001 -- 1.9.5.msysgit.1 ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2557590 ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2548782 ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
