/** @file Emulator Thunk to abstract OS services from pure EFI code Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.
Copyright (c) 2011, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #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