]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/CCode/Source/Include/Common/FirmwareFileSystem.h
More moves for Tool Packages
[mirror_edk2.git] / Tools / CCode / Source / Include / Common / FirmwareFileSystem.h
diff --git a/Tools/CCode/Source/Include/Common/FirmwareFileSystem.h b/Tools/CCode/Source/Include/Common/FirmwareFileSystem.h
new file mode 100644 (file)
index 0000000..5678a95
--- /dev/null
@@ -0,0 +1,98 @@
+/** @file\r
+  This file defines the data structures that comprise the FFS file system.\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  FirmwareFileSystem.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Firmware File System Spec 0.9.\r
+\r
+**/\r
+\r
+#ifndef __EFI_FFS_FILE_SYSTEM_H__\r
+#define __EFI_FFS_FILE_SYSTEM_H__\r
+\r
+///\r
+/// FFS specific file types\r
+///\r
+#define EFI_FV_FILETYPE_FFS_PAD 0xF0\r
+\r
+//\r
+// FFS File Attributes\r
+//\r
+#define FFS_ATTRIB_TAIL_PRESENT     0x01\r
+#define FFS_ATTRIB_RECOVERY         0x02\r
+#define FFS_ATTRIB_HEADER_EXTENSION 0x04\r
+#define FFS_ATTRIB_DATA_ALIGNMENT   0x38\r
+#define FFS_ATTRIB_CHECKSUM         0x40\r
+\r
+///\r
+/// FFS_FIXED_CHECKSUM is the default checksum value used when the\r
+/// FFS_ATTRIB_CHECKSUM attribute bit is clear\r
+/// note this is NOT an architecturally defined value, but is in this file for\r
+/// implementation convenience\r
+///\r
+#define FFS_FIXED_CHECKSUM  0x5A\r
+\r
+//\r
+// File state definitions\r
+//\r
+#define EFI_FILE_HEADER_CONSTRUCTION  0x01\r
+#define EFI_FILE_HEADER_VALID         0x02\r
+#define EFI_FILE_DATA_VALID           0x04\r
+#define EFI_FILE_MARKED_FOR_UPDATE    0x08\r
+#define EFI_FILE_DELETED              0x10\r
+#define EFI_FILE_HEADER_INVALID       0x20\r
+\r
+#define EFI_FILE_ALL_STATE_BITS       (EFI_FILE_HEADER_CONSTRUCTION | \\r
+                                 EFI_FILE_HEADER_VALID | \\r
+                                 EFI_FILE_DATA_VALID | \\r
+                                 EFI_FILE_MARKED_FOR_UPDATE | \\r
+                                 EFI_FILE_DELETED | \\r
+                                 EFI_FILE_HEADER_INVALID \\r
+          )\r
+\r
+#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \\r
+    ( \\r
+      (BOOLEAN) ( \\r
+          (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \\r
+        ) \\r
+    )\r
+\r
+typedef UINT16  EFI_FFS_FILE_TAIL;\r
+\r
+///\r
+/// FFS file integrity check structure\r
+///\r
+typedef union {\r
+  struct {\r
+    UINT8 Header;\r
+    UINT8 File;\r
+  } Checksum;\r
+  UINT16  TailReference;\r
+} EFI_FFS_INTEGRITY_CHECK;\r
+\r
+//\r
+// FFS file header definition\r
+//\r
+typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;\r
+typedef UINT8 EFI_FFS_FILE_STATE;\r
+\r
+typedef struct {\r
+  EFI_GUID                Name;\r
+  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;\r
+  EFI_FV_FILETYPE         Type;\r
+  EFI_FFS_FILE_ATTRIBUTES Attributes;\r
+  UINT8                   Size[3];\r
+  EFI_FFS_FILE_STATE      State;\r
+} EFI_FFS_FILE_HEADER;\r
+\r
+#endif\r