]> git.proxmox.com Git - mirror_edk2.git/blob - EmulatorPkg/Include/Protocol/EmuThread.h
e518bb13684766b0e2d5c953a3a6feb77495708c
[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 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 **/
16
17 #ifndef __EMU_THREAD_THUNK__
18 #define __EMU_THREAD_THUNK__
19
20
21 typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL;
22
23
24 typedef
25 UINTN
26 (EFIAPI *THREAD_THUNK_MUTEX_LOCK) (
27 IN VOID *Mutex
28 );
29
30
31 typedef
32 UINTN
33 (EFIAPI *THREAD_THUNK_MUTEX_UNLOCK) (
34 IN VOID *Mutex
35 );
36
37
38 typedef
39 UINTN
40 (EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK) (
41 IN VOID *Mutex
42 );
43
44
45 typedef
46 VOID *
47 (EFIAPI *THREAD_THUNK_MUTEX_INIT) (
48 IN VOID
49 );
50
51
52 typedef
53 UINTN
54 (EFIAPI *THREAD_THUNK_MUTEX_DISTROY) (
55 IN VOID *Mutex
56 );
57
58
59
60 typedef
61 VOID *
62 (EFIAPI *THREAD_THUNK_THREAD_ENTRY) (
63 IN VOID *Context
64 );
65
66 typedef
67 UINTN
68 (EFIAPI *THREAD_THUNK_CREATE_THREAD) (
69 IN VOID *Thread,
70 IN VOID *Attribute,
71 IN THREAD_THUNK_THREAD_ENTRY Start,
72 IN VOID *Context
73 );
74
75 typedef
76 VOID
77 (EFIAPI *THREAD_THUNK_EXIT_THREAD) (
78 IN VOID *ValuePtr
79 );
80
81
82 typedef
83 UINTN
84 (EFIAPI *THREAD_THUNK_SELF) (
85 VOID
86 );
87
88
89 struct _EMU_THREAD_THUNK_PROTOCOL {
90 THREAD_THUNK_MUTEX_LOCK MutexLock;
91 THREAD_THUNK_MUTEX_UNLOCK MutexUnlock;
92 THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;
93 THREAD_THUNK_MUTEX_INIT MutexInit;
94 THREAD_THUNK_MUTEX_DISTROY MutexDistroy;
95 THREAD_THUNK_CREATE_THREAD CreateThread;
96 THREAD_THUNK_EXIT_THREAD ExitThread;
97 THREAD_THUNK_SELF Self;
98 };
99
100 extern EFI_GUID gEmuThreadThunkProtocolGuid;
101
102 #endif
103