-\r
-/**\r
- Initializes the Fault Tolerant Write data structure\r
-\r
- This data structure is used by the Fault Tolerant Write driver.\r
-\r
- @param[in] Buffer - Location for the FTW data structure\r
-\r
-**/\r
-VOID\r
-InitializeFtwState (\r
- IN VOID *Buffer\r
- )\r
-{\r
- EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *Hdr;\r
- UINT32 TempCrc;\r
- STATIC EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER DefaultFtw = {\r
- EFI_SYSTEM_NV_DATA_FV_GUID, // EFI_GUID Signature;\r
- ERASED_UINT32, // UINT32 Crc;\r
- ERASED_BIT, // UINT8 WorkingBlockValid : 1;\r
- ERASED_BIT, // UINT8 WorkingBlockInvalid : 1;\r
- 0, // UINT8 Reserved : 6;\r
- { 0, 0, 0 }, // UINT8 Reserved3[3];\r
- FTW_WRITE_QUEUE_SIZE // UINT64 WriteQueueSize;\r
- };\r
-\r
- CopyMem (Buffer, (VOID*) &DefaultFtw, sizeof (DefaultFtw));\r
-\r
- Hdr = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER*) Buffer;\r
-\r
- //\r
- // Calculate checksum.\r
- //\r
- // The Crc, WorkingBlockValid and WorkingBlockInvalid bits should\r
- // be set to the erased state before computing the checksum.\r
- //\r
- gBS->CalculateCrc32 (Buffer, sizeof (DefaultFtw), &TempCrc);\r
- Hdr->Crc = TempCrc;\r
-\r
- //\r
- // Mark as valid.\r
- //\r
- Hdr->WorkingBlockValid = NOT_ERASED_BIT;\r
-}\r
-\r
-\r