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:
192
EmulatorPkg/Include/Protocol/EmuBlockIo.h
Normal file
192
EmulatorPkg/Include/Protocol/EmuBlockIo.h
Normal file
@@ -0,0 +1,192 @@
|
||||
/** @file
|
||||
Emu Block IO2 protocol as defined in the UEFI 2.3.1 specification.
|
||||
|
||||
The Block IO2 protocol defines an extension to the Block IO protocol which
|
||||
enables the ability to read and write data at a block level in a non-blocking
|
||||
manner.
|
||||
|
||||
Copyright (c) 2011, Intel Corporation. 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_BLOCK_IO_H__
|
||||
#define __EMU_BLOCK_IO_H__
|
||||
|
||||
#include <Protocol/BlockIo.h>
|
||||
#include <Protocol/BlockIo2.h>
|
||||
|
||||
#define EMU_BLOCK_IO_PROTOCOL_GUID \
|
||||
{ 0x6888A4AE, 0xAFCE, 0xE84B, { 0x91, 0x02, 0xF7, 0xB9, 0xDA, 0xE6, 0xA0, 0x30 } }
|
||||
|
||||
typedef struct _EMU_BLOCK_IO_PROTOCOL EMU_BLOCK_IO_PROTOCOL;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Reset the block device hardware.
|
||||
|
||||
@param[in] This Indicates a pointer to the calling context.
|
||||
@param[in] ExtendedVerification Indicates that the driver may perform a more
|
||||
exhausive verfication operation of the device
|
||||
during reset.
|
||||
|
||||
@retval EFI_SUCCESS The device was reset.
|
||||
@retval EFI_DEVICE_ERROR The device is not functioning properly and could
|
||||
not be reset.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_BLOCK_RESET) (
|
||||
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
Read BufferSize bytes from Lba into Buffer.
|
||||
|
||||
This function reads the requested number of blocks from the device. All the
|
||||
blocks are read, or an error is returned.
|
||||
If EFI_DEVICE_ERROR, EFI_NO_MEDIA,_or EFI_MEDIA_CHANGED is returned and
|
||||
non-blocking I/O is being used, the Event associated with this request will
|
||||
not be signaled.
|
||||
|
||||
@param[in] This Indicates a pointer to the calling context.
|
||||
@param[in] MediaId Id of the media, changes every time the media is
|
||||
replaced.
|
||||
@param[in] Lba The starting Logical Block Address to read from.
|
||||
@param[in, out] Token A pointer to the token associated with the transaction.
|
||||
@param[in] BufferSize Size of Buffer, must be a multiple of device block size.
|
||||
@param[out] Buffer A pointer to the destination buffer for the data. The
|
||||
caller is responsible for either having implicit or
|
||||
explicit ownership of the buffer.
|
||||
|
||||
@retval EFI_SUCCESS The read request was queued if Token->Event is
|
||||
not NULL.The data was read correctly from the
|
||||
device if the Token->Event is NULL.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error while performing
|
||||
the read.
|
||||
@retval EFI_NO_MEDIA There is no media in the device.
|
||||
@retval EFI_MEDIA_CHANGED The MediaId is not for the current media.
|
||||
@retval EFI_BAD_BUFFER_SIZE The BufferSize parameter is not a multiple of the
|
||||
intrinsic block size of the device.
|
||||
@retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
|
||||
or the buffer is not on proper alignment.
|
||||
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack
|
||||
of resources.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_BLOCK_READ) (
|
||||
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA LBA,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Write BufferSize bytes from Lba into Buffer.
|
||||
|
||||
This function writes the requested number of blocks to the device. All blocks
|
||||
are written, or an error is returned.If EFI_DEVICE_ERROR, EFI_NO_MEDIA,
|
||||
EFI_WRITE_PROTECTED or EFI_MEDIA_CHANGED is returned and non-blocking I/O is
|
||||
being used, the Event associated with this request will not be signaled.
|
||||
|
||||
@param[in] This Indicates a pointer to the calling context.
|
||||
@param[in] MediaId The media ID that the write request is for.
|
||||
@param[in] Lba The starting logical block address to be written. The
|
||||
caller is responsible for writing to only legitimate
|
||||
locations.
|
||||
@param[in, out] Token A pointer to the token associated with the transaction.
|
||||
@param[in] BufferSize Size of Buffer, must be a multiple of device block size.
|
||||
@param[in] Buffer A pointer to the source buffer for the data.
|
||||
|
||||
@retval EFI_SUCCESS The write request was queued if Event is not NULL.
|
||||
The data was written correctly to the device if
|
||||
the Event is NULL.
|
||||
@retval EFI_WRITE_PROTECTED The device can not be written to.
|
||||
@retval EFI_NO_MEDIA There is no media in the device.
|
||||
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error while performing the write.
|
||||
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
||||
@retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,
|
||||
or the buffer is not on proper alignment.
|
||||
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack
|
||||
of resources.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_BLOCK_WRITE) (
|
||||
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA LBA,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Flush the Block Device.
|
||||
|
||||
If EFI_DEVICE_ERROR, EFI_NO_MEDIA,_EFI_WRITE_PROTECTED or EFI_MEDIA_CHANGED
|
||||
is returned and non-blocking I/O is being used, the Event associated with
|
||||
this request will not be signaled.
|
||||
|
||||
@param[in] This Indicates a pointer to the calling context.
|
||||
@param[in,out] Token A pointer to the token associated with the transaction
|
||||
|
||||
@retval EFI_SUCCESS The flush request was queued if Event is not NULL.
|
||||
All outstanding data was written correctly to the
|
||||
device if the Event is NULL.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error while writting back
|
||||
the data.
|
||||
@retval EFI_WRITE_PROTECTED The device cannot be written to.
|
||||
@retval EFI_NO_MEDIA There is no media in the device.
|
||||
@retval EFI_MEDIA_CHANGED The MediaId is not for the current media.
|
||||
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack
|
||||
of resources.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_BLOCK_FLUSH) (
|
||||
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_BLOCK_CREATE_MAPPING) (
|
||||
IN EMU_BLOCK_IO_PROTOCOL *This,
|
||||
IN EFI_BLOCK_IO_MEDIA *Media
|
||||
);
|
||||
|
||||
|
||||
///
|
||||
/// The Block I/O2 protocol defines an extension to the Block I/O protocol which
|
||||
/// enables the ability to read and write data at a block level in a non-blocking
|
||||
// manner.
|
||||
///
|
||||
struct _EMU_BLOCK_IO_PROTOCOL {
|
||||
EMU_BLOCK_RESET Reset;
|
||||
EMU_BLOCK_READ ReadBlocks;
|
||||
EMU_BLOCK_WRITE WriteBlocks;
|
||||
EMU_BLOCK_FLUSH FlushBlocks;
|
||||
EMU_BLOCK_CREATE_MAPPING CreateMapping;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmuBlockIoProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
140
EmulatorPkg/Include/Protocol/EmuFileSystem.h
Normal file
140
EmulatorPkg/Include/Protocol/EmuFileSystem.h
Normal file
@@ -0,0 +1,140 @@
|
||||
/** @file
|
||||
SimpleFileSystem protocol as defined in the UEFI 2.0 specification.
|
||||
|
||||
The SimpleFileSystem protocol is the programmatic access to the FAT (12,16,32)
|
||||
file system specified in UEFI 2.0. It can also be used to abstract a file
|
||||
system other than FAT.
|
||||
|
||||
UEFI 2.0 can boot from any valid EFI image contained in a SimpleFileSystem.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Portions copyright (c) 2011, Apple Inc. All rights reserved.
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that 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_UGA_IO_H_
|
||||
#define _EMU_UGA_IO_H_
|
||||
|
||||
#include <Protocol/SimplePointer.h>
|
||||
#include <Protocol/SimpleTextIn.h>
|
||||
#include <Protocol/SimpleTextInEx.h>
|
||||
#include <Protocol/UgaDraw.h>
|
||||
|
||||
#define EMU_GRAPHICS_WINDOW_PROTOCOL_GUID \
|
||||
{ 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } }
|
||||
|
||||
typedef struct _EMU_GRAPHICS_WINDOW_PROTOCOL EMU_GRAPHICS_WINDOW_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_CLOSE)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_SIZE)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga,
|
||||
UINT32 Width,
|
||||
UINT32 Height
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_KEY)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_GET_KEY)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga,
|
||||
EFI_KEY_DATA *key
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE) (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EFI_KEY_TOGGLE_STATE *KeyToggleState
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK) (
|
||||
IN VOID *Context,
|
||||
IN EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY) (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK CallBack,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINTN SourceX;
|
||||
UINTN SourceY;
|
||||
UINTN DestinationX;
|
||||
UINTN DestinationY;
|
||||
UINTN Width;
|
||||
UINTN Height;
|
||||
UINTN Delta;
|
||||
} EMU_GRAPHICS_WINDOWS__BLT_ARGS;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_BLT)(
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED) (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_POINTER)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
EFI_SIMPLE_POINTER_STATE *state
|
||||
);
|
||||
|
||||
struct _EMU_GRAPHICS_WINDOW_PROTOCOL {
|
||||
EMU_GRAPHICS_WINDOWS_SIZE Size;
|
||||
EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey;
|
||||
EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState;
|
||||
EMU_GRAPHICS_WINDOWS_GET_KEY GetKey;
|
||||
EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify;
|
||||
EMU_GRAPHICS_WINDOWS_BLT Blt;
|
||||
EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed;
|
||||
EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer;
|
||||
EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState;
|
||||
};
|
||||
|
||||
|
||||
extern EFI_GUID gEmuGraphicsWindowProtocolGuid;
|
||||
|
||||
#endif
|
134
EmulatorPkg/Include/Protocol/EmuGraphicsWindow.h
Normal file
134
EmulatorPkg/Include/Protocol/EmuGraphicsWindow.h
Normal file
@@ -0,0 +1,134 @@
|
||||
/*++ @file
|
||||
|
||||
Copyright (c) 2006, Tristan Gingold. All rights reserved.<BR>
|
||||
Portitions copyright (c) 2010 - 2011, Apple Inc. 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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _EMU_UGA_IO_H_
|
||||
#define _EMU_UGA_IO_H_
|
||||
|
||||
#include <Protocol/SimplePointer.h>
|
||||
#include <Protocol/SimpleTextIn.h>
|
||||
#include <Protocol/SimpleTextInEx.h>
|
||||
#include <Protocol/UgaDraw.h>
|
||||
|
||||
#define EMU_GRAPHICS_WINDOW_PROTOCOL_GUID \
|
||||
{ 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } }
|
||||
|
||||
typedef struct _EMU_GRAPHICS_WINDOW_PROTOCOL EMU_GRAPHICS_WINDOW_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_CLOSE)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_SIZE)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga,
|
||||
UINT32 Width,
|
||||
UINT32 Height
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_KEY)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_GET_KEY)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *Uga,
|
||||
EFI_KEY_DATA *key
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE) (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EFI_KEY_TOGGLE_STATE *KeyToggleState
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK) (
|
||||
IN VOID *Context,
|
||||
IN EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY) (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack,
|
||||
IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINTN SourceX;
|
||||
UINTN SourceY;
|
||||
UINTN DestinationX;
|
||||
UINTN DestinationY;
|
||||
UINTN Width;
|
||||
UINTN Height;
|
||||
UINTN Delta;
|
||||
} EMU_GRAPHICS_WINDOWS__BLT_ARGS;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_BLT)(
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED) (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
IN EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_POINTER)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE)(
|
||||
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
|
||||
EFI_SIMPLE_POINTER_STATE *state
|
||||
);
|
||||
|
||||
struct _EMU_GRAPHICS_WINDOW_PROTOCOL {
|
||||
EMU_GRAPHICS_WINDOWS_SIZE Size;
|
||||
EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey;
|
||||
EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState;
|
||||
EMU_GRAPHICS_WINDOWS_GET_KEY GetKey;
|
||||
EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify;
|
||||
EMU_GRAPHICS_WINDOWS_BLT Blt;
|
||||
EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed;
|
||||
EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer;
|
||||
EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState;
|
||||
};
|
||||
|
||||
|
||||
extern EFI_GUID gEmuGraphicsWindowProtocolGuid;
|
||||
|
||||
#endif
|
51
EmulatorPkg/Include/Protocol/EmuIoThunk.h
Normal file
51
EmulatorPkg/Include/Protocol/EmuIoThunk.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/** @file
|
||||
Emulator Thunk to abstract OS services from pure EFI code
|
||||
|
||||
Copyright (c) 2010 - 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_IO_THUNK__
|
||||
#define __EMU_IO_THUNK__
|
||||
|
||||
|
||||
#define EMU_IO_THUNK_PROTOCO_GUID \
|
||||
{ 0x453368F6, 0x7C85, 0x434A, { 0xA9, 0x8A, 0x72, 0xD1, 0xB7, 0xFF, 0xA9, 0x26 } }
|
||||
|
||||
|
||||
typedef struct _EMU_IO_THUNK_PROTOCOL EMU_IO_THUNK_PROTOCOL;
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_IO_THUNK_PROTOCOL_CLOSE_OPEN) (
|
||||
IN EMU_IO_THUNK_PROTOCOL *This
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_IO_THUNK_PROTOCOL_CLOSE_CLOSE) (
|
||||
IN EMU_IO_THUNK_PROTOCOL *This
|
||||
);
|
||||
|
||||
struct _EMU_IO_THUNK_PROTOCOL {
|
||||
EFI_GUID *Protocol;
|
||||
VOID *Interface; /// Only be valid after Open() is called
|
||||
CHAR16 *ConfigString;
|
||||
UINT16 Instance;
|
||||
EMU_IO_THUNK_PROTOCOL_CLOSE_OPEN Open;
|
||||
EMU_IO_THUNK_PROTOCOL_CLOSE_CLOSE Close;
|
||||
VOID *Private; /// Used by implementation
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmuIoThunkProtocolGuid;
|
||||
|
||||
#endif
|
459
EmulatorPkg/Include/Protocol/EmuSnp.h
Normal file
459
EmulatorPkg/Include/Protocol/EmuSnp.h
Normal file
@@ -0,0 +1,459 @@
|
||||
/** @file
|
||||
The EMU_SNP_PROTOCOL provides services to initialize a network interface,
|
||||
transmit packets, receive packets, and close a network interface.
|
||||
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Portitions copyright (c) 2011, Apple Inc. All rights reserved.
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that 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_SNP_H__
|
||||
#define __EMU_SNP_H__
|
||||
|
||||
#include <Protocol/SimpleNetwork.h>
|
||||
|
||||
#define EMU_SNP_PROTOCOL_GUID \
|
||||
{ 0xFD5FBE54, 0x8C35, 0xB345, { 0x8A, 0x0F, 0x7A, 0xC8, 0xA5, 0xFD, 0x05, 0x21 } }
|
||||
|
||||
typedef struct _EMU_SNP_PROTOCOL EMU_SNP_PROTOCOL;
|
||||
|
||||
|
||||
/**
|
||||
Register storage for SNP Mode.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param Mode SimpleNetworkProtocol Mode structure passed into driver.
|
||||
|
||||
@retval EFI_SUCCESS The network interface was started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_CREATE_MAPPING)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN EFI_SIMPLE_NETWORK_MODE *Mode
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Changes the state of a network interface from "stopped" to "started".
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
|
||||
@retval EFI_SUCCESS The network interface was started.
|
||||
@retval EFI_ALREADY_STARTED The network interface is already in the started state.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_START)(
|
||||
IN EMU_SNP_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Changes the state of a network interface from "started" to "stopped".
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
|
||||
@retval EFI_SUCCESS The network interface was stopped.
|
||||
@retval EFI_ALREADY_STARTED The network interface is already in the stopped state.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_STOP)(
|
||||
IN EMU_SNP_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Resets a network adapter and allocates the transmit and receive buffers
|
||||
required by the network interface; optionally, also requests allocation
|
||||
of additional transmit and receive buffers.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param ExtraRxBufferSize The size, in bytes, of the extra receive buffer space
|
||||
that the driver should allocate for the network interface.
|
||||
Some network interfaces will not be able to use the extra
|
||||
buffer, and the caller will not know if it is actually
|
||||
being used.
|
||||
@param ExtraTxBufferSize The size, in bytes, of the extra transmit buffer space
|
||||
that the driver should allocate for the network interface.
|
||||
Some network interfaces will not be able to use the extra
|
||||
buffer, and the caller will not know if it is actually
|
||||
being used.
|
||||
|
||||
@retval EFI_SUCCESS The network interface was initialized.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_OUT_OF_RESOURCES There was not enough memory for the transmit and
|
||||
receive buffers.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_INITIALIZE)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN UINTN ExtraRxBufferSize OPTIONAL,
|
||||
IN UINTN ExtraTxBufferSize OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Resets a network adapter and re-initializes it with the parameters that were
|
||||
provided in the previous call to Initialize().
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param ExtendedVerification Indicates that the driver may perform a more
|
||||
exhaustive verification operation of the device
|
||||
during reset.
|
||||
|
||||
@retval EFI_SUCCESS The network interface was reset.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_RESET)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
Resets a network adapter and leaves it in a state that is safe for
|
||||
another driver to initialize.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
|
||||
@retval EFI_SUCCESS The network interface was shutdown.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_SHUTDOWN)(
|
||||
IN EMU_SNP_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Manages the multicast receive filters of a network interface.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param Enable A bit mask of receive filters to enable on the network interface.
|
||||
@param Disable A bit mask of receive filters to disable on the network interface.
|
||||
@param ResetMCastFilter Set to TRUE to reset the contents of the multicast receive
|
||||
filters on the network interface to their default values.
|
||||
@param McastFilterCnt Number of multicast HW MAC addresses in the new
|
||||
MCastFilter list. This value must be less than or equal to
|
||||
the MCastFilterCnt field of EMU_SNP_MODE. This
|
||||
field is optional if ResetMCastFilter is TRUE.
|
||||
@param MCastFilter A pointer to a list of new multicast receive filter HW MAC
|
||||
addresses. This list will replace any existing multicast
|
||||
HW MAC address list. This field is optional if
|
||||
ResetMCastFilter is TRUE.
|
||||
|
||||
@retval EFI_SUCCESS The multicast receive filter list was updated.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_RECEIVE_FILTERS)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN UINT32 Enable,
|
||||
IN UINT32 Disable,
|
||||
IN BOOLEAN ResetMCastFilter,
|
||||
IN UINTN MCastFilterCnt OPTIONAL,
|
||||
IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Modifies or resets the current station address, if supported.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param Reset Flag used to reset the station address to the network interfaces
|
||||
permanent address.
|
||||
@param New The new station address to be used for the network interface.
|
||||
|
||||
@retval EFI_SUCCESS The network interfaces station address was updated.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_STATION_ADDRESS)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN BOOLEAN Reset,
|
||||
IN EFI_MAC_ADDRESS *New OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Resets or collects the statistics on a network interface.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param Reset Set to TRUE to reset the statistics for the network interface.
|
||||
@param StatisticsSize On input the size, in bytes, of StatisticsTable. On
|
||||
output the size, in bytes, of the resulting table of
|
||||
statistics.
|
||||
@param StatisticsTable A pointer to the EFI_NETWORK_STATISTICS structure that
|
||||
contains the statistics.
|
||||
|
||||
@retval EFI_SUCCESS The statistics were collected from the network interface.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_BUFFER_TOO_SMALL The Statistics buffer was too small. The current buffer
|
||||
size needed to hold the statistics is returned in
|
||||
StatisticsSize.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_STATISTICS)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN BOOLEAN Reset,
|
||||
IN OUT UINTN *StatisticsSize OPTIONAL,
|
||||
OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Converts a multicast IP address to a multicast HW MAC address.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param IPv6 Set to TRUE if the multicast IP address is IPv6 [RFC 2460]. Set
|
||||
to FALSE if the multicast IP address is IPv4 [RFC 791].
|
||||
@param IP The multicast IP address that is to be converted to a multicast
|
||||
HW MAC address.
|
||||
@param MAC The multicast HW MAC address that is to be generated from IP.
|
||||
|
||||
@retval EFI_SUCCESS The multicast IP address was mapped to the multicast
|
||||
HW MAC address.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_BUFFER_TOO_SMALL The Statistics buffer was too small. The current buffer
|
||||
size needed to hold the statistics is returned in
|
||||
StatisticsSize.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_MCAST_IP_TO_MAC)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN BOOLEAN IPv6,
|
||||
IN EFI_IP_ADDRESS *IP,
|
||||
OUT EFI_MAC_ADDRESS *MAC
|
||||
);
|
||||
|
||||
/**
|
||||
Performs read and write operations on the NVRAM device attached to a
|
||||
network interface.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param ReadWrite TRUE for read operations, FALSE for write operations.
|
||||
@param Offset Byte offset in the NVRAM device at which to start the read or
|
||||
write operation. This must be a multiple of NvRamAccessSize and
|
||||
less than NvRamSize.
|
||||
@param BufferSize The number of bytes to read or write from the NVRAM device.
|
||||
This must also be a multiple of NvramAccessSize.
|
||||
@param Buffer A pointer to the data buffer.
|
||||
|
||||
@retval EFI_SUCCESS The NVRAM access was performed.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_NVDATA)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN BOOLEAN ReadWrite,
|
||||
IN UINTN Offset,
|
||||
IN UINTN BufferSize,
|
||||
IN OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Reads the current interrupt status and recycled transmit buffer status from
|
||||
a network interface.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param InterruptStatus A pointer to the bit mask of the currently active interrupts
|
||||
If this is NULL, the interrupt status will not be read from
|
||||
the device. If this is not NULL, the interrupt status will
|
||||
be read from the device. When the interrupt status is read,
|
||||
it will also be cleared. Clearing the transmit interrupt
|
||||
does not empty the recycled transmit buffer array.
|
||||
@param TxBuf Recycled transmit buffer address. The network interface will
|
||||
not transmit if its internal recycled transmit buffer array
|
||||
is full. Reading the transmit buffer does not clear the
|
||||
transmit interrupt. If this is NULL, then the transmit buffer
|
||||
status will not be read. If there are no transmit buffers to
|
||||
recycle and TxBuf is not NULL, * TxBuf will be set to NULL.
|
||||
|
||||
@retval EFI_SUCCESS The status of the network interface was retrieved.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_GET_STATUS)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
OUT UINT32 *InterruptStatus OPTIONAL,
|
||||
OUT VOID **TxBuf OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Places a packet in the transmit queue of a network interface.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param HeaderSize The size, in bytes, of the media header to be filled in by
|
||||
the Transmit() function. If HeaderSize is non-zero, then it
|
||||
must be equal to This->Mode->MediaHeaderSize and the DestAddr
|
||||
and Protocol parameters must not be NULL.
|
||||
@param BufferSize The size, in bytes, of the entire packet (media header and
|
||||
data) to be transmitted through the network interface.
|
||||
@param Buffer A pointer to the packet (media header followed by data) to be
|
||||
transmitted. This parameter cannot be NULL. If HeaderSize is zero,
|
||||
then the media header in Buffer must already be filled in by the
|
||||
caller. If HeaderSize is non-zero, then the media header will be
|
||||
filled in by the Transmit() function.
|
||||
@param SrcAddr The source HW MAC address. If HeaderSize is zero, then this parameter
|
||||
is ignored. If HeaderSize is non-zero and SrcAddr is NULL, then
|
||||
This->Mode->CurrentAddress is used for the source HW MAC address.
|
||||
@param DestAddr The destination HW MAC address. If HeaderSize is zero, then this
|
||||
parameter is ignored.
|
||||
@param Protocol The type of header to build. If HeaderSize is zero, then this
|
||||
parameter is ignored. See RFC 1700, section "Ether Types", for
|
||||
examples.
|
||||
|
||||
@retval EFI_SUCCESS The packet was placed on the transmit queue.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_NOT_READY The network interface is too busy to accept this transmit request.
|
||||
@retval EFI_BUFFER_TOO_SMALL The BufferSize parameter is too small.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_TRANSMIT)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
IN UINTN HeaderSize,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer,
|
||||
IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
|
||||
IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,
|
||||
IN UINT16 *Protocol OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Receives a packet from a network interface.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param HeaderSize The size, in bytes, of the media header received on the network
|
||||
interface. If this parameter is NULL, then the media header size
|
||||
will not be returned.
|
||||
@param BufferSize On entry, the size, in bytes, of Buffer. On exit, the size, in
|
||||
bytes, of the packet that was received on the network interface.
|
||||
@param Buffer A pointer to the data buffer to receive both the media header and
|
||||
the data.
|
||||
@param SrcAddr The source HW MAC address. If this parameter is NULL, the
|
||||
HW MAC source address will not be extracted from the media
|
||||
header.
|
||||
@param DestAddr The destination HW MAC address. If this parameter is NULL,
|
||||
the HW MAC destination address will not be extracted from the
|
||||
media header.
|
||||
@param Protocol The media header type. If this parameter is NULL, then the
|
||||
protocol will not be extracted from the media header. See
|
||||
RFC 1700 section "Ether Types" for examples.
|
||||
|
||||
@retval EFI_SUCCESS The received data was stored in Buffer, and BufferSize has
|
||||
been updated to the number of bytes received.
|
||||
@retval EFI_NOT_STARTED The network interface has not been started.
|
||||
@retval EFI_NOT_READY The network interface is too busy to accept this transmit
|
||||
request.
|
||||
@retval EFI_BUFFER_TOO_SMALL The BufferSize parameter is too small.
|
||||
@retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
|
||||
@retval EFI_DEVICE_ERROR The command could not be sent to the network interface.
|
||||
@retval EFI_UNSUPPORTED This function is not supported by the network interface.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMU_SNP_RECEIVE)(
|
||||
IN EMU_SNP_PROTOCOL *This,
|
||||
OUT UINTN *HeaderSize OPTIONAL,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer,
|
||||
OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
|
||||
OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
|
||||
OUT UINT16 *Protocol OPTIONAL
|
||||
);
|
||||
|
||||
#define EMU_SNP_PROTOCOL_REVISION 0x00010000
|
||||
|
||||
//
|
||||
// Revision defined in EFI1.1
|
||||
//
|
||||
#define EMU_SNP_INTERFACE_REVISION EMU_SNP_PROTOCOL_REVISION
|
||||
|
||||
///
|
||||
/// The EMU_SNP_PROTOCOL protocol abstracts OS network sercices
|
||||
/// from the EFI driver that produces EFI Simple Network Protocol.
|
||||
///
|
||||
struct _EMU_SNP_PROTOCOL {
|
||||
EMU_SNP_CREATE_MAPPING CreateMapping;
|
||||
EMU_SNP_START Start;
|
||||
EMU_SNP_STOP Stop;
|
||||
EMU_SNP_INITIALIZE Initialize;
|
||||
EMU_SNP_RESET Reset;
|
||||
EMU_SNP_SHUTDOWN Shutdown;
|
||||
EMU_SNP_RECEIVE_FILTERS ReceiveFilters;
|
||||
EMU_SNP_STATION_ADDRESS StationAddress;
|
||||
EMU_SNP_STATISTICS Statistics;
|
||||
EMU_SNP_MCAST_IP_TO_MAC MCastIpToMac;
|
||||
EMU_SNP_NVDATA NvData;
|
||||
EMU_SNP_GET_STATUS GetStatus;
|
||||
EMU_SNP_TRANSMIT Transmit;
|
||||
EMU_SNP_RECEIVE Receive;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmuSnpProtocolGuid;
|
||||
|
||||
#endif
|
103
EmulatorPkg/Include/Protocol/EmuThread.h
Normal file
103
EmulatorPkg/Include/Protocol/EmuThread.h
Normal file
@@ -0,0 +1,103 @@
|
||||
/** @file
|
||||
Emulator Thunk to abstract OS services from pure EFI code
|
||||
|
||||
Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.<BR>
|
||||
Copyright (c) 2011, Intel Corporation. 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_THREAD_THUNK__
|
||||
#define __EMU_THREAD_THUNK__
|
||||
|
||||
|
||||
typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL;
|
||||
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *THREAD_THUNK_MUTEX_LOCK) (
|
||||
IN VOID *Mutex
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *THREAD_THUNK_MUTEX_UNLOCK) (
|
||||
IN VOID *Mutex
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK) (
|
||||
IN VOID *Mutex
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
VOID *
|
||||
(EFIAPI *THREAD_THUNK_MUTEX_INIT) (
|
||||
IN VOID
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *THREAD_THUNK_MUTEX_DISTROY) (
|
||||
IN VOID *Mutex
|
||||
);
|
||||
|
||||
|
||||
|
||||
typedef
|
||||
VOID *
|
||||
(EFIAPI *THREAD_THUNK_THREAD_ENTRY) (
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *THREAD_THUNK_CREATE_THREAD) (
|
||||
IN VOID *Thread,
|
||||
IN VOID *Attribute,
|
||||
IN THREAD_THUNK_THREAD_ENTRY Start,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *THREAD_THUNK_EXIT_THREAD) (
|
||||
IN VOID *ValuePtr
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *THREAD_THUNK_SELF) (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
struct _EMU_THREAD_THUNK_PROTOCOL {
|
||||
THREAD_THUNK_MUTEX_LOCK MutexLock;
|
||||
THREAD_THUNK_MUTEX_UNLOCK MutexUnlock;
|
||||
THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;
|
||||
THREAD_THUNK_MUTEX_INIT MutexInit;
|
||||
THREAD_THUNK_MUTEX_DISTROY MutexDistroy;
|
||||
THREAD_THUNK_CREATE_THREAD CreateThread;
|
||||
THREAD_THUNK_EXIT_THREAD ExitThread;
|
||||
THREAD_THUNK_SELF Self;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmuThreadThunkProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
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