V1: Add Universal Payload general defination header file according to Universal Payload’s documentation V2: Add a macro funtion to check the Revision
Cc: Michael D Kinney <michael.d.kin...@intel.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Jian J Wang <jian.j.w...@intel.com> Cc: Hao A Wu <hao.a...@intel.com> Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> --- MdeModulePkg/Include/UniversalPayload/UniversalPayload.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/MdeModulePkg/Include/UniversalPayload/UniversalPayload.h b/MdeModulePkg/Include/UniversalPayload/UniversalPayload.h new file mode 100644 index 0000000000..a026f709bf --- /dev/null +++ b/MdeModulePkg/Include/UniversalPayload/UniversalPayload.h @@ -0,0 +1,43 @@ +/** @file + Universal Payload general definations. + +Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __UNIVERSAL_PAYLOAD_H__ +#define __UNIVERSAL_PAYLOAD_H__ + +#include <Library/HobLib.h> + +#pragma pack(1) + +typedef struct { + UINT8 Revision; + UINT8 Reserved; + UINT16 Length; +} PLD_GENERIC_HEADER; + +#pragma pack() + +/** + Returns the size of a structure of known type, up through and including a specified field. + + @param TYPE The name of the data structure that contains the field specified by Field. + @param Field The name of the field in the data structure. + + @return size, in bytes. + +**/ +#define PLD_SIZEOF_THROUGH_FIELD(TYPE, Field) (OFFSET_OF(TYPE, Field) + sizeof (((TYPE *) 0)->Field)) + +#define IS_PLD_HEADER_HAS_REVISION(GuidHob, ExpectedRevision) \ + ( \ + (GuidHob != NULL) && \ + (sizeof (PLD_GENERIC_HEADER) <= GET_GUID_HOB_DATA_SIZE (GuidHob)) && \ + (((PLD_GENERIC_HEADER *) GET_GUID_HOB_DATA (GuidHob))->Length <= GET_GUID_HOB_DATA_SIZE (GuidHob)) && \ + (((PLD_GENERIC_HEADER *) GET_GUID_HOB_DATA (GuidHob))->Revision == ExpectedRevision) \ + ) + +#endif // __UNIVERSAL_PAYLOAD_H__ -- 2.30.0.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#76031): https://edk2.groups.io/g/devel/message/76031 Mute This Topic: https://groups.io/mt/83301962/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-