git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1676 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			173 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
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:
 | 
						|
  
 | 
						|
  GenFvImageLibInternal.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  This file contains describes the private declarations for the GenFvImage Library.
 | 
						|
  The basic purpose of the library is to create Firmware Volume images.
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
#ifndef _EFI_GEN_FV_IMAGE_LIB_INTERNAL_H
 | 
						|
#define _EFI_GEN_FV_IMAGE_LIB_INTERNAL_H
 | 
						|
 | 
						|
//
 | 
						|
// Include files
 | 
						|
//
 | 
						|
#include <stdlib.h>
 | 
						|
 | 
						|
#include <Common/FirmwareVolumeHeader.h>
 | 
						|
 | 
						|
#include "CommonLib.h"
 | 
						|
#include "GenFvImageLib.h"
 | 
						|
 | 
						|
//
 | 
						|
// Private data declarations
 | 
						|
//
 | 
						|
//
 | 
						|
// The maximum number of block map entries supported by the library
 | 
						|
//
 | 
						|
#define MAX_NUMBER_OF_FV_BLOCKS 100
 | 
						|
 | 
						|
//
 | 
						|
// The maximum number of files in the FV supported by the library
 | 
						|
//
 | 
						|
#define MAX_NUMBER_OF_FILES_IN_FV       1000
 | 
						|
#define MAX_NUMBER_OF_COMPONENTS_IN_FV  10
 | 
						|
 | 
						|
//
 | 
						|
// INF file strings
 | 
						|
//
 | 
						|
#define OPTIONS_SECTION_STRING            "[options]"
 | 
						|
#define ATTRIBUTES_SECTION_STRING         "[attributes]"
 | 
						|
#define FILES_SECTION_STRING              "[files]"
 | 
						|
#define COMPONENT_SECTION_STRING          "[components]"
 | 
						|
 | 
						|
#define EFI_FV_BASE_ADDRESS_STRING        "EFI_BASE_ADDRESS"
 | 
						|
#define EFI_FV_FILE_NAME_STRING           "EFI_FILE_NAME"
 | 
						|
#define EFI_SYM_FILE_NAME_STRING          "EFI_SYM_FILE_NAME"
 | 
						|
#define EFI_NUM_BLOCKS_STRING             "EFI_NUM_BLOCKS"
 | 
						|
#define EFI_BLOCK_SIZE_STRING             "EFI_BLOCK_SIZE"
 | 
						|
#define EFI_FV_GUID_STRING                "EFI_FV_GUID"
 | 
						|
 | 
						|
#define EFI_FVB_READ_DISABLED_CAP_STRING  "EFI_READ_DISABLED_CAP"
 | 
						|
#define EFI_FVB_READ_ENABLED_CAP_STRING   "EFI_READ_ENABLED_CAP"
 | 
						|
#define EFI_FVB_READ_STATUS_STRING        "EFI_READ_STATUS"
 | 
						|
 | 
						|
#define EFI_FVB_WRITE_DISABLED_CAP_STRING "EFI_WRITE_DISABLED_CAP"
 | 
						|
#define EFI_FVB_WRITE_ENABLED_CAP_STRING  "EFI_WRITE_ENABLED_CAP"
 | 
						|
#define EFI_FVB_WRITE_STATUS_STRING       "EFI_WRITE_STATUS"
 | 
						|
 | 
						|
#define EFI_FVB_LOCK_CAP_STRING           "EFI_LOCK_CAP"
 | 
						|
#define EFI_FVB_LOCK_STATUS_STRING        "EFI_LOCK_STATUS"
 | 
						|
 | 
						|
#define EFI_FVB_STICKY_WRITE_STRING       "EFI_STICKY_WRITE"
 | 
						|
#define EFI_FVB_MEMORY_MAPPED_STRING      "EFI_MEMORY_MAPPED"
 | 
						|
#define EFI_FVB_ERASE_POLARITY_STRING     "EFI_ERASE_POLARITY"
 | 
						|
 | 
						|
#define EFI_FVB_ALIGNMENT_CAP_STRING      "EFI_ALIGNMENT_CAP"
 | 
						|
#define EFI_FVB_ALIGNMENT_2_STRING        "EFI_ALIGNMENT_2"
 | 
						|
#define EFI_FVB_ALIGNMENT_4_STRING        "EFI_ALIGNMENT_4"
 | 
						|
#define EFI_FVB_ALIGNMENT_8_STRING        "EFI_ALIGNMENT_8"
 | 
						|
#define EFI_FVB_ALIGNMENT_16_STRING       "EFI_ALIGNMENT_16"
 | 
						|
#define EFI_FVB_ALIGNMENT_32_STRING       "EFI_ALIGNMENT_32"
 | 
						|
#define EFI_FVB_ALIGNMENT_64_STRING       "EFI_ALIGNMENT_64"
 | 
						|
#define EFI_FVB_ALIGNMENT_128_STRING      "EFI_ALIGNMENT_128"
 | 
						|
#define EFI_FVB_ALIGNMENT_256_STRING      "EFI_ALIGNMENT_256"
 | 
						|
#define EFI_FVB_ALIGNMENT_512_STRING      "EFI_ALIGNMENT_512"
 | 
						|
#define EFI_FVB_ALIGNMENT_1K_STRING       "EFI_ALIGNMENT_1K"
 | 
						|
#define EFI_FVB_ALIGNMENT_2K_STRING       "EFI_ALIGNMENT_2K"
 | 
						|
#define EFI_FVB_ALIGNMENT_4K_STRING       "EFI_ALIGNMENT_4K"
 | 
						|
#define EFI_FVB_ALIGNMENT_8K_STRING       "EFI_ALIGNMENT_8K"
 | 
						|
#define EFI_FVB_ALIGNMENT_16K_STRING      "EFI_ALIGNMENT_16K"
 | 
						|
#define EFI_FVB_ALIGNMENT_32K_STRING      "EFI_ALIGNMENT_32K"
 | 
						|
#define EFI_FVB_ALIGNMENT_64K_STRING      "EFI_ALIGNMENT_64K"
 | 
						|
 | 
						|
//
 | 
						|
// Component sections
 | 
						|
//
 | 
						|
#define EFI_NV_VARIABLE_STRING    "EFI_NV_VARIABLE"
 | 
						|
#define EFI_NV_EVENT_LOG_STRING   "EFI_NV_EVENT_LOG"
 | 
						|
#define EFI_NV_FTW_WORKING_STRING "EFI_NV_FTW_WORKING"
 | 
						|
#define EFI_NV_FTW_SPARE_STRING   "EFI_NV_FTW_SPARE"
 | 
						|
 | 
						|
#define EFI_FILE_NAME_STRING      "EFI_FILE_NAME"
 | 
						|
 | 
						|
#define ONE_STRING                "1"
 | 
						|
#define ZERO_STRING               "0"
 | 
						|
#define TRUE_STRING               "TRUE"
 | 
						|
#define FALSE_STRING              "FALSE"
 | 
						|
#define NULL_STRING               "NULL"
 | 
						|
 | 
						|
//
 | 
						|
// Defines to calculate the offset for PEI CORE entry points
 | 
						|
//
 | 
						|
#define IA32_PEI_CORE_ENTRY_OFFSET  0x20
 | 
						|
 | 
						|
//
 | 
						|
// Defines to calculate the FIT table
 | 
						|
//
 | 
						|
#define IPF_FIT_ADDRESS_OFFSET  0x20
 | 
						|
 | 
						|
//
 | 
						|
// Defines to calculate the offset for SALE_ENTRY
 | 
						|
//
 | 
						|
#define IPF_SALE_ENTRY_ADDRESS_OFFSET 0x18
 | 
						|
 | 
						|
//
 | 
						|
// Symbol file definitions, current max size if 512K
 | 
						|
//
 | 
						|
#define SYMBOL_FILE_SIZE  0x80000
 | 
						|
 | 
						|
#define FV_IMAGES_TOP_ADDRESS             0x100000000ULL
 | 
						|
 | 
						|
//
 | 
						|
// Private data types
 | 
						|
//
 | 
						|
//
 | 
						|
// Component information
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  UINTN Size;
 | 
						|
  CHAR8 ComponentName[_MAX_PATH];
 | 
						|
} COMPONENT_INFO;
 | 
						|
 | 
						|
//
 | 
						|
// FV information holder
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  EFI_PHYSICAL_ADDRESS    BaseAddress;
 | 
						|
  EFI_GUID                FvGuid;
 | 
						|
  UINTN                   Size;
 | 
						|
  CHAR8                   FvName[_MAX_PATH];
 | 
						|
  CHAR8                   SymName[_MAX_PATH];
 | 
						|
  EFI_FV_BLOCK_MAP_ENTRY  FvBlocks[MAX_NUMBER_OF_FV_BLOCKS];
 | 
						|
  EFI_FVB_ATTRIBUTES      FvAttributes;
 | 
						|
  CHAR8                   FvFiles[MAX_NUMBER_OF_FILES_IN_FV][_MAX_PATH];
 | 
						|
  COMPONENT_INFO          FvComponents[MAX_NUMBER_OF_COMPONENTS_IN_FV];
 | 
						|
} FV_INFO;
 | 
						|
 | 
						|
//
 | 
						|
// Private function prototypes
 | 
						|
//
 | 
						|
EFI_STATUS
 | 
						|
ParseFvInf (
 | 
						|
  IN MEMORY_FILE  *InfFile,
 | 
						|
  IN FV_INFO      *FvInfo
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
#endif
 |