summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Include/Protocol/FaultTolerantWriteLite.h
blob: 7eb83e8e57342e5acd1bf32f6e52eb8cf80fe34b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/** @file
  This is a simple fault tolerant write driver, based on PlatformFd library.
  And it only supports write BufferSize <= SpareAreaLength.

Copyright (c) 2006 - 2008, Intel Corporation. <BR>
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.

**/

#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
//
typedef struct _EFI_FTW_LITE_PROTOCOL EFI_FTW_LITE_PROTOCOL;

//
// Protocol API definitions
//
/**
  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.

  @param  This                 Calling context 
  @param  FvBlockHandle        The handle of FVB protocol that provides services 
                               for reading, writing, and erasing the target 
                               block. 
  @param  Lba                  The logical block address of the target block. 
  @param  Offset               The offset within the target block to place the 
                               data. 
  @param  Length               The number of bytes to write to the target block. 
  @param  Buffer               The data to write. 

  @retval EFI_SUCCESS          The function completed successfully 
  @retval EFI_ABORTED          The function could not complete successfully. 
  @retval EFI_BAD_BUFFER_SIZE  The write would span a block boundary, which is 
                               not a valid action. 
  @retval EFI_ACCESS_DENIED    No writes have been allocated. 
  @retval EFI_NOT_READY        The last write has not been completed. Restart () 
                               must be called to complete it. 

**/
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
  )
;

//
// Protocol declaration
//
struct _EFI_FTW_LITE_PROTOCOL {
  EFI_FTW_LITE_WRITE               Write;
};

extern EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid;

#endif