diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /EDK/Foundation/Protocol/FaultTolerantWriteLite | |
download | zprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz |
Diffstat (limited to 'EDK/Foundation/Protocol/FaultTolerantWriteLite')
-rw-r--r-- | EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c | 29 | ||||
-rw-r--r-- | EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h | 88 |
2 files changed, 117 insertions, 0 deletions
diff --git a/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c new file mode 100644 index 0000000..78892ff --- /dev/null +++ b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + FaultTolerantWriteLite.c + +Abstract: + + This is a simple fault tolerant write driver, based on PlatformFd library. + And it only supports write BufferSize <= SpareAreaLength. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION(FaultTolerantWriteLite) + +EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid = EFI_FTW_LITE_PROTOCOL_GUID; + +EFI_GUID_STRING (&gEfiFaultTolerantWriteLiteProtocolGuid, "FaultTolerantWriteLite Protocol", + "Fault Tolerant Write Lite protocol"); diff --git a/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h new file mode 100644 index 0000000..90cdf34 --- /dev/null +++ b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h @@ -0,0 +1,88 @@ +/*++ + +Copyright (c) 2004, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + FaultTolerantWriteLite.h + +Abstract: + + This is a simple fault tolerant write driver, based on PlatformFd library. + And it only supports write BufferSize <= SpareAreaLength. + +--*/ + +#ifndef _FW_FAULT_TOLERANT_WRITE_LITE_PROTOCOL_H_ +#define _FW_FAULT_TOLERANT_WRITE_LITE_PROTOCOL_H_ + +#define EFI_FTW_LITE_PROTOCOL_GUID \ +{ 0x3f557189, 0x8dae, 0x45ae, 0xa0, 0xb3, 0x2b, 0x99, 0xca, 0x7a, 0xa7, 0xa0 } + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_FTW_LITE_PROTOCOL); + +// +// Protocol API definitions +// + +typedef +EFI_STATUS +(EFIAPI * EFI_FTW_LITE_WRITE) ( + IN EFI_FTW_LITE_PROTOCOL *This, + IN EFI_HANDLE FvbHandle, + IN EFI_LBA Lba, + IN UINTN Offset, + IN UINTN *NumBytes, + IN VOID *Buffer + ); +/*++ + +Routine Description: + + Starts a target block update. This records information about the write + in fault tolerant storage and will complete the write in a recoverable + manner, ensuring at all times that either the original contents or + the modified contents are available. + +Arguments: + + This - Calling context + FvBlockHandle - The handle of FVB protocol that provides services for + reading, writing, and erasing the target block. + Lba - The logical block address of the target block. + Offset - The offset within the target block to place the data. + Length - The number of bytes to write to the target block. + Buffer - The data to write. + +Returns: + + EFI_SUCCESS - The function completed successfully + EFI_ABORTED - The function could not complete successfully. + EFI_BAD_BUFFER_SIZE - The write would span a block boundary, + which is not a valid action. + EFI_ACCESS_DENIED - No writes have been allocated. + EFI_NOT_READY - The last write has not been completed. + Restart () must be called to complete it. + +--*/ + +// +// Protocol declaration +// +typedef struct _EFI_FTW_LITE_PROTOCOL { + EFI_FTW_LITE_WRITE Write; +} EFI_FTW_LITE_PROTOCOL; + +extern EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid; + +#endif |