summaryrefslogtreecommitdiff
path: root/MdePkg/Include/Ppi/LoadFile.h
blob: af02be7c9e6aaade43bd778c9c319b4d5d294696 (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
77
78
/** @file
  Load image file from fv to memory. 

  Copyright (c) 2006, 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:  LoadFile.h

  @par Revision Reference:
  This PPI is defined in PEI CIS spec Version 0.91.

**/

#ifndef __FV_FILE_LOADER_PPI_H__
#define __FV_FILE_LOADER_PPI_H__

#define EFI_PEI_FV_FILE_LOADER_GUID \
  { \
    0x7e1f0d85, 0x4ff, 0x4bb2, {0x86, 0x6a, 0x31, 0xa2, 0x99, 0x6a, 0x48, 0xa8 } \
  }

typedef struct _EFI_PEI_FV_FILE_LOADER_PPI  EFI_PEI_FV_FILE_LOADER_PPI;

/**
  Loads a PEIM into memory for subsequent execution.

  @param  This Interface pointer that implements the Load File PPI instance.
  
  @param  FfsHeader Pointer to the FFS header of the file to load.
  
  @param  ImageAddress Pointer to the address of the loaded Image
  
  @param  ImageSize Pointer to the size of the loaded image.
  
  @param  EntryPoint Pointer to the entry point of the image.

  @retval EFI_SUCCESS The image was loaded successfully.
  
  @retval EFI_OUT_OF_RESOURCES There was not enough memory.
  
  @retval EFI_INVALID_PARAMETER The contents of the FFS file did not 
  contain a valid PE/COFF image that could be loaded.

**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FV_LOAD_FILE) (
  IN EFI_PEI_FV_FILE_LOADER_PPI                 *This,
  IN  EFI_FFS_FILE_HEADER                       *FfsHeader,
  OUT EFI_PHYSICAL_ADDRESS                      *ImageAddress,
  OUT UINT64                                    *ImageSize,
  OUT EFI_PHYSICAL_ADDRESS                      *EntryPoint
  );

/**
  @par Ppi Description:
  This PPI is a pointer to the Load File service. This service will be 
  published by a PEIM.The PEI Foundation will use this service to 
  launch the known non-XIP PE/COFF PEIM images.  This service may 
  depend upon the presence of the EFI_PEI_PERMANENT_MEMORY_INSTALLED_PPI.

  @param FvLoadFile
  Loads a PEIM into memory for subsequent execution

**/
struct _EFI_PEI_FV_FILE_LOADER_PPI {
  EFI_PEI_FV_LOAD_FILE  FvLoadFile;
};

extern EFI_GUID gEfiPeiFvFileLoaderPpiGuid;

#endif