]> git.proxmox.com Git - mirror_edk2.git/blob - EmulatorPkg/Include/Protocol/EmuThread.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmulatorPkg / Include / Protocol / EmuThread.h
1 /** @file
2 Emulator Thunk to abstract OS services from pure EFI code
3
4 Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.<BR>
5 Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
6
7 SPDX-License-Identifier: BSD-2-Clause-Patent
8
9 **/
10
11 #ifndef __EMU_THREAD_THUNK__
12 #define __EMU_THREAD_THUNK__
13
14 typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL;
15
16 typedef
17 UINTN
18 (EFIAPI *THREAD_THUNK_MUTEX_LOCK)(
19 IN VOID *Mutex
20 );
21
22 typedef
23 UINTN
24 (EFIAPI *THREAD_THUNK_MUTEX_UNLOCK)(
25 IN VOID *Mutex
26 );
27
28 typedef
29 UINTN
30 (EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK)(
31 IN VOID *Mutex
32 );
33
34 typedef
35 VOID *
36 (EFIAPI *THREAD_THUNK_MUTEX_INIT)(
37 IN VOID
38 );
39
40 typedef
41 UINTN
42 (EFIAPI *THREAD_THUNK_MUTEX_DISTROY)(
43 IN VOID *Mutex
44 );
45
46 typedef
47 VOID *
48 (EFIAPI *THREAD_THUNK_THREAD_ENTRY)(
49 IN VOID *Context
50 );
51
52 typedef
53 UINTN
54 (EFIAPI *THREAD_THUNK_CREATE_THREAD)(
55 IN VOID *Thread,
56 IN VOID *Attribute,
57 IN THREAD_THUNK_THREAD_ENTRY Start,
58 IN VOID *Context
59 );
60
61 typedef
62 VOID
63 (EFIAPI *THREAD_THUNK_EXIT_THREAD)(
64 IN VOID *ValuePtr
65 );
66
67 typedef
68 UINTN
69 (EFIAPI *THREAD_THUNK_SELF)(
70 VOID
71 );
72
73 struct _EMU_THREAD_THUNK_PROTOCOL {
74 THREAD_THUNK_MUTEX_LOCK MutexLock;
75 THREAD_THUNK_MUTEX_UNLOCK MutexUnlock;
76 THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;
77 THREAD_THUNK_MUTEX_INIT MutexInit;
78 THREAD_THUNK_MUTEX_DISTROY MutexDistroy;
79 THREAD_THUNK_CREATE_THREAD CreateThread;
80 THREAD_THUNK_EXIT_THREAD ExitThread;
81 THREAD_THUNK_SELF Self;
82 };
83
84 extern EFI_GUID gEmuThreadThunkProtocolGuid;
85
86 #endif