mirror of https://github.com/acidanthera/audk.git
652 lines
12 KiB
C
652 lines
12 KiB
C
/** @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
|
|
|
|
|