• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*++
2 
3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution.  The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8 
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 Module Name:
13 
14   FaultTolerantWriteLite.h
15 
16 Abstract:
17 
18   This is a simple fault tolerant write driver, based on PlatformFd library.
19   And it only supports write BufferSize <= SpareAreaLength.
20 
21 --*/
22 
23 #ifndef _FW_FAULT_TOLERANT_WRITE_LITE_PROTOCOL_H_
24 #define _FW_FAULT_TOLERANT_WRITE_LITE_PROTOCOL_H_
25 
26 #define EFI_FTW_LITE_PROTOCOL_GUID \
27 { 0x3f557189, 0x8dae, 0x45ae, {0xa0, 0xb3, 0x2b, 0x99, 0xca, 0x7a, 0xa7, 0xa0} }
28 
29 //
30 // Forward reference for pure ANSI compatability
31 //
32 EFI_FORWARD_DECLARATION (EFI_FTW_LITE_PROTOCOL);
33 
34 //
35 // Protocol API definitions
36 //
37 
38 typedef
39 EFI_STATUS
40 (EFIAPI * EFI_FTW_LITE_WRITE) (
41   IN EFI_FTW_LITE_PROTOCOL             *This,
42   IN EFI_HANDLE                        FvbHandle,
43   IN EFI_LBA                           Lba,
44   IN UINTN                             Offset,
45   IN UINTN                             *NumBytes,
46   IN VOID                              *Buffer
47   );
48 /*++
49 
50 Routine Description:
51 
52   Starts a target block update. This records information about the write
53   in fault tolerant storage and will complete the write in a recoverable
54   manner, ensuring at all times that either the original contents or
55   the modified contents are available.
56 
57 Arguments:
58 
59   This             - Calling context
60   FvBlockHandle    - The handle of FVB protocol that provides services for
61                      reading, writing, and erasing the target block.
62   Lba              - The logical block address of the target block.
63   Offset           - The offset within the target block to place the data.
64   Length           - The number of bytes to write to the target block.
65   Buffer           - The data to write.
66 
67 Returns:
68 
69   EFI_SUCCESS          - The function completed successfully
70   EFI_ABORTED          - The function could not complete successfully.
71   EFI_BAD_BUFFER_SIZE  - The write would span a block boundary,
72                          which is not a valid action.
73   EFI_ACCESS_DENIED    - No writes have been allocated.
74   EFI_NOT_READY        - The last write has not been completed.
75                          Restart () must be called to complete it.
76 
77 --*/
78 
79 //
80 // Protocol declaration
81 //
82 struct _EFI_FTW_LITE_PROTOCOL {
83   EFI_FTW_LITE_WRITE               Write;
84 };
85 
86 extern EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid;
87 
88 #endif
89