]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Variable/Pei/Variable.h
Change C functions, xxxSizeOfVariable(), to MACRO, which can avoid the ICC compile...
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / Pei / Variable.h
index 7155cda73c0a76f523d0adf2a797ad08876c0ab4..73e1b7afdb4fc00c36a8f3338047f6663f17b473 100644 (file)
@@ -41,10 +41,28 @@ Abstract:
 #define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
 #endif\r
 \r
+#define HEADER_ALIGN(Header)  (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1)))\r
+\r
+#define NAMESIZE_OF_VARIABLE(Variable)  \\r
+          ((((Variable)->DataSize == (UINT32) -1) || \\r
+          ((Variable)->Attributes == (UINT32) -1) || \\r
+          ((Variable)->NameSize == (UINT32) -1)) ? \\r
+          0 : \\r
+          (Variable)->NameSize \\r
+          )\r
+\r
+#define DATASIZE_OF_VARIABLE(Variable)  \\r
+          ((((Variable)->DataSize == (UINT32) -1) || \\r
+          ((Variable)->Attributes == (UINT32) -1) || \\r
+          ((Variable)->NameSize == (UINT32) -1)) ? \\r
+          0 : \\r
+          (Variable)->DataSize \\r
+          )\r
+\r
 #define GET_VARIABLE_NAME_PTR(a)  (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))\r
 \r
 #define GET_VARIABLE_DATA_PTR(a) \\r
-  (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + (a)->NameSize + GET_PAD_SIZE ((a)->NameSize))\r
+          (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + NAMESIZE_OF_VARIABLE(a) + GET_PAD_SIZE (NAMESIZE_OF_VARIABLE(a)))\r
 \r
 typedef struct {\r
   VARIABLE_HEADER *CurrPtr;\r