]> git.proxmox.com Git - mirror_edk2.git/blob - EmulatorPkg/Include/Protocol/EmuThread.h
EmulatorPkg: Replace BSD License with BSD+Patent License
[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
15 typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL;
16
17
18 typedef
19 UINTN
20 (EFIAPI *THREAD_THUNK_MUTEX_LOCK) (
21 IN VOID *Mutex
22 );
23
24
25 typedef
26 UINTN
27 (EFIAPI *THREAD_THUNK_MUTEX_UNLOCK) (
28 IN VOID *Mutex
29 );
30
31
32 typedef
33 UINTN
34 (EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK) (
35 IN VOID *Mutex
36 );
37
38
39 typedef
40 VOID *
41 (EFIAPI *THREAD_THUNK_MUTEX_INIT) (
42 IN VOID
43 );
44
45
46 typedef
47 UINTN
48 (EFIAPI *THREAD_THUNK_MUTEX_DISTROY) (
49 IN VOID *Mutex
50 );
51
52
53
54 typedef
55 VOID *
56 (EFIAPI *THREAD_THUNK_THREAD_ENTRY) (
57 IN VOID *Context
58 );
59
60 typedef
61 UINTN
62 (EFIAPI *THREAD_THUNK_CREATE_THREAD) (
63 IN VOID *Thread,
64 IN VOID *Attribute,
65 IN THREAD_THUNK_THREAD_ENTRY Start,
66 IN VOID *Context
67 );
68
69 typedef
70 VOID
71 (EFIAPI *THREAD_THUNK_EXIT_THREAD) (
72 IN VOID *ValuePtr
73 );
74
75
76 typedef
77 UINTN
78 (EFIAPI *THREAD_THUNK_SELF) (
79 VOID
80 );
81
82
83 struct _EMU_THREAD_THUNK_PROTOCOL {
84 THREAD_THUNK_MUTEX_LOCK MutexLock;
85 THREAD_THUNK_MUTEX_UNLOCK MutexUnlock;
86 THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;
87 THREAD_THUNK_MUTEX_INIT MutexInit;
88 THREAD_THUNK_MUTEX_DISTROY MutexDistroy;
89 THREAD_THUNK_CREATE_THREAD CreateThread;
90 THREAD_THUNK_EXIT_THREAD ExitThread;
91 THREAD_THUNK_SELF Self;
92 };
93
94 extern EFI_GUID gEmuThreadThunkProtocolGuid;
95
96 #endif
97