/** @file | |
Copyright (c) 2008 - 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 _GASKET_H_ | |
#define _GASKET_H_ | |
// | |
// EMU_THUNK_PROTOCOL gaskets (EFIAPI to UNIX ABI) | |
// | |
UINTN | |
EFIAPI | |
GasketSecWriteStdErr ( | |
IN UINT8 *Buffer, | |
IN UINTN NumberOfBytes | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSecConfigStdIn ( | |
VOID | |
); | |
UINTN | |
EFIAPI | |
GasketSecWriteStdOut ( | |
IN UINT8 *Buffer, | |
IN UINTN NumberOfBytes | |
); | |
UINTN | |
EFIAPI | |
GasketSecReadStdIn ( | |
IN UINT8 *Buffer, | |
IN UINTN NumberOfBytes | |
); | |
BOOLEAN | |
EFIAPI | |
GasketSecPollStdIn ( | |
VOID | |
); | |
VOID * | |
EFIAPI | |
GasketSecMalloc ( | |
IN UINTN Size | |
); | |
VOID * | |
EFIAPI | |
GasketSecValloc ( | |
IN UINTN Size | |
); | |
BOOLEAN | |
EFIAPI | |
GasketSecFree ( | |
IN VOID *Ptr | |
); | |
RETURN_STATUS | |
EFIAPI | |
GasketSecPeCoffGetEntryPoint ( | |
IN VOID *Pe32Data, | |
IN OUT VOID **EntryPoint | |
); | |
VOID | |
EFIAPI | |
GasketSecPeCoffRelocateImageExtraAction ( | |
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
); | |
VOID | |
EFIAPI | |
GasketSecPeCoffUnloadImageExtraAction ( | |
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
); | |
VOID | |
EFIAPI | |
GasketSecSetTimer ( | |
IN UINT64 PeriodMs, | |
IN EMU_SET_TIMER_CALLBACK CallBack | |
); | |
VOID | |
EFIAPI | |
GasketSecEnableInterrupt ( | |
VOID | |
); | |
VOID | |
EFIAPI | |
GasketSecDisableInterrupt ( | |
VOID | |
); | |
UINT64 | |
EFIAPI | |
GasketQueryPerformanceFrequency ( | |
VOID | |
); | |
UINT64 | |
EFIAPI | |
GasketQueryPerformanceCounter ( | |
VOID | |
); | |
VOID | |
EFIAPI | |
GasketSecSleep ( | |
IN UINT64 Nanoseconds | |
); | |
VOID | |
EFIAPI | |
GasketSecCpuSleep ( | |
VOID | |
); | |
VOID | |
EFIAPI | |
GasketSecExit ( | |
UINTN Status | |
); | |
VOID | |
EFIAPI | |
GasketSecGetTime ( | |
OUT EFI_TIME *Time, | |
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL | |
); | |
VOID | |
EFIAPI | |
GasketSecSetTime ( | |
IN EFI_TIME *Time | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSecGetNextProtocol ( | |
IN BOOLEAN EmuBusDriver, | |
OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL | |
); | |
// PPIs produced by SEC | |
EFI_STATUS | |
EFIAPI | |
GasketSecUnixPeiAutoScan ( | |
IN UINTN Index, | |
OUT EFI_PHYSICAL_ADDRESS *MemoryBase, | |
OUT UINT64 *MemorySize | |
); | |
VOID * | |
EFIAPI | |
GasketSecEmuThunkAddress ( | |
VOID | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSecUnixUnixFwhAddress ( | |
IN OUT UINT64 *FwhSize, | |
IN OUT EFI_PHYSICAL_ADDRESS *FwhBase | |
); | |
// | |
// Reverse (UNIX to EFIAPI) gaskets | |
// | |
typedef | |
void | |
(EFIAPI *CALL_BACK) ( | |
UINT64 Delta | |
); | |
UINTN | |
ReverseGasketUint64 ( | |
CALL_BACK CallBack, | |
UINT64 a | |
); | |
UINTN | |
ReverseGasketUint64Uint64 ( | |
VOID *CallBack, | |
VOID *Context, | |
VOID *Key | |
); | |
// | |
// Gasket functions for EFI_EMU_UGA_IO_PROTOCOL | |
// | |
EFI_STATUS | |
EFIAPI | |
GasketX11Size ( | |
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, | |
UINT32 Width, | |
UINT32 Height | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11CheckKey ( | |
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11GetKey ( | |
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, | |
EFI_KEY_DATA *key | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11KeySetState ( | |
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, | |
EFI_KEY_TOGGLE_STATE *KeyToggleState | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11RegisterKeyNotify ( | |
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, | |
IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, | |
IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, | |
IN VOID *Context | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11Blt ( | |
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 | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11CheckPointer ( | |
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11GetPointerState ( | |
EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, | |
EFI_SIMPLE_POINTER_STATE *state | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11GraphicsWindowOpen ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketX11GraphicsWindowClose ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
// Pthreads | |
UINTN | |
EFIAPI | |
GasketPthreadMutexLock ( | |
IN VOID *Mutex | |
); | |
UINTN | |
EFIAPI | |
GasketPthreadMutexUnLock ( | |
IN VOID *Mutex | |
); | |
UINTN | |
EFIAPI | |
GasketPthreadMutexTryLock ( | |
IN VOID *Mutex | |
); | |
VOID * | |
EFIAPI | |
GasketPthreadMutexInit ( | |
IN VOID | |
); | |
UINTN | |
EFIAPI | |
GasketPthreadMutexDestroy ( | |
IN VOID *Mutex | |
); | |
UINTN | |
EFIAPI | |
GasketPthreadCreate ( | |
IN VOID *Thread, | |
IN VOID *Attribute, | |
IN THREAD_THUNK_THREAD_ENTRY Start, | |
IN VOID *Context | |
); | |
VOID | |
EFIAPI | |
GasketPthreadExit ( | |
IN VOID *ValuePtr | |
); | |
UINTN | |
EFIAPI | |
GasketPthreadSelf ( | |
VOID | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPthreadOpen ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPthreadClose ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
// PosixFileSystem | |
EFI_STATUS | |
EFIAPI | |
GasketPosixOpenVolume ( | |
IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, | |
OUT EFI_FILE_PROTOCOL **Root | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileOpen ( | |
IN EFI_FILE_PROTOCOL *This, | |
OUT EFI_FILE_PROTOCOL **NewHandle, | |
IN CHAR16 *FileName, | |
IN UINT64 OpenMode, | |
IN UINT64 Attributes | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileCLose ( | |
IN EFI_FILE_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileDelete ( | |
IN EFI_FILE_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileRead ( | |
IN EFI_FILE_PROTOCOL *This, | |
IN OUT UINTN *BufferSize, | |
OUT VOID *Buffer | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileWrite ( | |
IN EFI_FILE_PROTOCOL *This, | |
IN OUT UINTN *BufferSize, | |
IN VOID *Buffer | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileSetPossition ( | |
IN EFI_FILE_PROTOCOL *This, | |
IN UINT64 Position | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileGetPossition ( | |
IN EFI_FILE_PROTOCOL *This, | |
OUT UINT64 *Position | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileGetInfo ( | |
IN EFI_FILE_PROTOCOL *This, | |
IN EFI_GUID *InformationType, | |
IN OUT UINTN *BufferSize, | |
OUT VOID *Buffer | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileSetInfo ( | |
IN EFI_FILE_PROTOCOL *This, | |
IN EFI_GUID *InformationType, | |
IN UINTN BufferSize, | |
IN VOID *Buffer | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileFlush ( | |
IN EFI_FILE_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileSystmeThunkOpen ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketPosixFileSystmeThunkClose ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketEmuBlockIoReset ( | |
IN EMU_BLOCK_IO_PROTOCOL *This, | |
IN BOOLEAN ExtendedVerification | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketEmuBlockIoReadBlocks ( | |
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 | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketEmuBlockIoWriteBlocks ( | |
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 | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketEmuBlockIoFlushBlocks ( | |
IN EMU_BLOCK_IO_PROTOCOL *This, | |
IN OUT EFI_BLOCK_IO2_TOKEN *Token | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketEmuBlockIoCreateMapping ( | |
IN EMU_BLOCK_IO_PROTOCOL *This, | |
IN EFI_BLOCK_IO_MEDIA *Media | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketBlockIoThunkOpen ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketBlockIoThunkClose ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpThunkOpen ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpThunkClose ( | |
IN EMU_IO_THUNK_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpCreateMapping ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN EFI_SIMPLE_NETWORK_MODE *Media | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpStart ( | |
IN EMU_SNP_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpStop ( | |
IN EMU_SNP_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpInitialize ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN UINTN ExtraRxBufferSize OPTIONAL, | |
IN UINTN ExtraTxBufferSize OPTIONAL | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpReset ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN BOOLEAN ExtendedVerification | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpShutdown ( | |
IN EMU_SNP_PROTOCOL *This | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpReceiveFilters ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN UINT32 Enable, | |
IN UINT32 Disable, | |
IN BOOLEAN ResetMCastFilter, | |
IN UINTN MCastFilterCnt OPTIONAL, | |
IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpStationAddress ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN BOOLEAN Reset, | |
IN EFI_MAC_ADDRESS *New OPTIONAL | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpStatistics ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN BOOLEAN Reset, | |
IN OUT UINTN *StatisticsSize OPTIONAL, | |
OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpMCastIpToMac ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN BOOLEAN IPv6, | |
IN EFI_IP_ADDRESS *IP, | |
OUT EFI_MAC_ADDRESS *MAC | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpNvData ( | |
IN EMU_SNP_PROTOCOL *This, | |
IN BOOLEAN ReadWrite, | |
IN UINTN Offset, | |
IN UINTN BufferSize, | |
IN OUT VOID *Buffer | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpGetStatus ( | |
IN EMU_SNP_PROTOCOL *This, | |
OUT UINT32 *InterruptStatus OPTIONAL, | |
OUT VOID **TxBuf OPTIONAL | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpTransmit ( | |
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 | |
); | |
EFI_STATUS | |
EFIAPI | |
GasketSnpReceive ( | |
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 | |
); | |
#endif | |