Home | History | Annotate | Download | only in FaultTolerantWriteLite
      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