4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 1999 - 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials are licensed and made available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncunder the terms and conditions of the BSD License which accompanies this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdistribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncModule Name:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This file contains the relevant declarations required
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to generate Option Rom File
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <IndustryStandard/PeImage.h> // for PE32 structure definitions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <IndustryStandard/pci22.h> // for option ROM header structures
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Version of this utility
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Define the max length of a filename
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Define the default file extension name
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Max size for an option ROM image
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define MAX_OPTION_ROM_SIZE (1024 * 1024 * 16) // 16MB
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Values for the indicator field in the PCI data structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define INDICATOR_LAST 0x80 // last file in series of files
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Masks for the FILE_LIST.FileFlags field
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Use this linked list structure to keep track of all the filenames
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// specified on the command line.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Use this to track our command-line options
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// INT8 Help;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// INT8 Version;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Make a global structure to keep track of command-line options
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Use these to convert from machine type value to a named type
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Machine Types
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Subsystem Types
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION, "EFI application" },
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, "EFI boot service driver" },
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, "EFI runtime driver" },
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Function prototypes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Displays the utility version to STDOUT
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Displays the utility usage syntax to STDOUT
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Given the Argc/Argv program arguments, and a pointer to an options structure,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync parse the command-line options and check their validity.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Argc - standard C main() argument count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Argv[] - standard C main() argument list
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Options - pointer to a structure to store the options in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync STATUS_SUCCESS success
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync non-zero otherwise
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Given the Argc/Argv program arguments, and a pointer to an options structure,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync parse the command-line options and check their validity.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Argc - standard C main() argument count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Argv[] - standard C main() argument list
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Options - pointer to a structure to store the options in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync STATUS_SUCCESS success
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync non-zero otherwise
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Process a PE32 EFI file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OutFptr - file pointer to output binary ROM image file we're creating
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InFile - structure contains information on the PE32 file to process
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VendId - vendor ID as required in the option ROM header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevId - device ID as required in the option ROM header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Size - pointer to where to return the size added to the output file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0 - successful
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Process a binary input file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OutFptr - file pointer to output binary ROM image file we're creating
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InFile - structure contains information on the binary file to process
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Size - pointer to where to return the size added to the output file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0 - successful
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Dump the headers of an existing option ROM image
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InFile - the file name of an existing option ROM image
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GC_TODO: Add function description
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MachineType - GC_TODO: add argument description
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GC_TODO: add return values
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRoutine Description:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GC_TODO: Add function description
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SubsystemType - GC_TODO: add argument description
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GC_TODO: add return values