InOsEmuPkg: Rename package to EmulatorPkg & Sec to Host
* Rename InOsEmuPkg to EmulatorPkg * Rename Unix/Sec to Unix/Host Signed-off-by: jljusten Reviewed-by: andrewfish Reviewed-by: geekboy15a git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11918 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
264
EmulatorPkg/Include/Protocol/EmuThunk.h
Normal file
264
EmulatorPkg/Include/Protocol/EmuThunk.h
Normal file
@@ -0,0 +1,264 @@
|
||||
/** @file
|
||||
Emulator Thunk to abstract OS services from pure EFI code
|
||||
|
||||
Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>
|
||||
|
||||
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 __EMU_THUNK_PROTOCOL_H__
|
||||
#define __EMU_THUNK_PROTOCOL_H__
|
||||
|
||||
#define EMU_THUNK_PROTOCOL_GUID \
|
||||
{ 0x5CF32E0B, 0x8EDF, 0x2E44, { 0x9C, 0xDA, 0x93, 0x20, 0x5E, 0x99, 0xEC, 0x1C } }
|
||||
|
||||
// neded for things like EFI_TIME_CAPABILITIES
|
||||
#include <Uefi.h>
|
||||
|
||||
#include <Library/PeCoffExtraActionLib.h>
|
||||
|
||||
#include <Protocol/EmuIoThunk.h>
|
||||
#include <Protocol/DevicePath.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
VENDOR_DEVICE_PATH VendorDevicePath;
|
||||
UINT32 Instance;
|
||||
} EMU_VENDOR_DEVICE_PATH_NODE;
|
||||
|
||||
typedef struct {
|
||||
EMU_VENDOR_DEVICE_PATH_NODE Vendor;
|
||||
EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
|
||||
} EMU_THUNK_DEVICE_PATH;
|
||||
|
||||
|
||||
|
||||
typedef struct _EMU_THUNK_PROTOCOL EMU_THUNK_PROTOCOL;
|
||||
|
||||
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *EMU_WRITE_STD_ERROR) (
|
||||
IN UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_CONFIG_STD_IN) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *EMU_WRITE_STD_OUT) (
|
||||
IN UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
);
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *EMU_READ_STD_IN) (
|
||||
OUT UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(EFIAPI *EMU_POLL_STD_IN) (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
VOID *
|
||||
(EFIAPI *EMU_OS_MALLOC) (
|
||||
IN UINTN Size
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID *
|
||||
(EFIAPI *EMU_OS_VMALLOC) (
|
||||
IN UINTN Size
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(EFIAPI *EMU_OS_FREE) (
|
||||
IN VOID *Ptr
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_PE_COFF_GET_ENTRY_POINT) (
|
||||
IN VOID *Pe32Data,
|
||||
IN OUT VOID **EntryPoint
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_PE_COFF_RELOCATE_EXTRA_ACTION) (
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_PE_COFF_UNLOAD_EXTRA_ACTION) (
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_ENABLE_INERRUPTS) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_DISABLE_INERRUPTS) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
UINT64
|
||||
(EFIAPI *EMU_QUERY_PERFORMANCE_FREQENCY) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
UINT64
|
||||
(EFIAPI *EMU_QUERY_PERFORMANCE_COUNTER) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_SLEEP) (
|
||||
IN UINT64 Milliseconds
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_CPU_SLEEP) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_EXIT) (
|
||||
IN UINTN Status
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_GET_TIME) (
|
||||
OUT EFI_TIME *Time,
|
||||
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_SET_TIME) (
|
||||
IN EFI_TIME *Time
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI EMU_SET_TIMER_CALLBACK) (
|
||||
IN UINT64 DeltaMs
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_SET_TIMER) (
|
||||
IN UINT64 PeriodMs,
|
||||
IN EMU_SET_TIMER_CALLBACK CallBack
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Enumerates the current set of protocol instances that abstract OS services from EFI.
|
||||
|
||||
A given protocol can have multiple instances. Usually a protocol is configured via a
|
||||
single PCD string. The data associated for each instance is seperated via a ! in the string.
|
||||
EMU_IO_THUNK_PROTOCOL_CLOSE.ConfigString will contain the information in the PCD string up to the next !.
|
||||
Thus each instance has a unique ConfigString.
|
||||
|
||||
@param EmuBusDriver TRUE means only return protocol instances that need to be produced
|
||||
by the EmuBusDriver. FALSE means return all possible protocols
|
||||
@param Instance On input the protocol to search for, or NULL to start a search
|
||||
of all the supported protocol instances.
|
||||
@param NextProtocol On output it represents the next value to be passed into Protocol.
|
||||
@param Interface A pointer to the EMU_IO_THUNK_PROTOCOL_CLOSE interface.
|
||||
|
||||
@retval EFI_SUCCESS The function completed successfully.
|
||||
@retval EFI_NOT_FOUND The next protocol instance was not found.
|
||||
@retval EFI_INVALID_PARAMETER Instance is NULL.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GET_NEXT_PROTOCOL) (
|
||||
IN BOOLEAN EmuBusDriver,
|
||||
OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
struct _EMU_THUNK_PROTOCOL {
|
||||
// Used for early debug printing
|
||||
EMU_WRITE_STD_ERROR WriteStdErr;
|
||||
EMU_CONFIG_STD_IN ConfigStdIn;
|
||||
EMU_WRITE_STD_OUT WriteStdOut;
|
||||
EMU_READ_STD_IN ReadStdIn;
|
||||
EMU_POLL_STD_IN PollStdIn;
|
||||
|
||||
//
|
||||
// Map OS malloc/free so we can use OS based guard malloc
|
||||
//
|
||||
EMU_OS_MALLOC Malloc;
|
||||
EMU_OS_VMALLOC Valloc;
|
||||
EMU_OS_FREE Free;
|
||||
|
||||
|
||||
///
|
||||
/// PE/COFF loader hooks to get symbols loaded
|
||||
///
|
||||
EMU_PE_COFF_GET_ENTRY_POINT PeCoffGetEntryPoint;
|
||||
EMU_PE_COFF_RELOCATE_EXTRA_ACTION PeCoffRelocateImageExtraAction;
|
||||
EMU_PE_COFF_UNLOAD_EXTRA_ACTION PeCoffUnloadImageExtraAction;
|
||||
|
||||
///
|
||||
/// DXE Architecture Protocol Services
|
||||
///
|
||||
EMU_ENABLE_INERRUPTS EnableInterrupt;
|
||||
EMU_DISABLE_INERRUPTS DisableInterrupt;
|
||||
EMU_QUERY_PERFORMANCE_FREQENCY QueryPerformanceFrequency;
|
||||
EMU_QUERY_PERFORMANCE_COUNTER QueryPerformanceCounter;
|
||||
|
||||
EMU_SLEEP Sleep;
|
||||
EMU_CPU_SLEEP CpuSleep;
|
||||
EMU_EXIT Exit;
|
||||
EMU_GET_TIME GetTime;
|
||||
EMU_SET_TIME SetTime;
|
||||
EMU_SET_TIMER SetTimer;
|
||||
|
||||
///
|
||||
/// Generic System Services
|
||||
///
|
||||
EMU_GET_NEXT_PROTOCOL GetNextProtocol;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmuThunkProtocolGuid;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user