]> git.proxmox.com Git - mirror_edk2.git/blame - InOsEmuPkg/Include/Protocol/EmuPthreadThunk.h
Add InOsEmuPkg. Like UnixPkg and Nt32Pkg, but EFI code can be common and does not...
[mirror_edk2.git] / InOsEmuPkg / Include / Protocol / EmuPthreadThunk.h
CommitLineData
949f388f 1/** @file\r
2 Emulator Thunk to abstract OS services from pure EFI code\r
3\r
4 Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.<BR>\r
5 \r
6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef __EMU_PTHREAD_THUNK__ \r
17#define __EMU_PTHREAD_THUNK__\r
18\r
19#define EMU_PTHREAD_THUNK_PROTOCO_GUID \\r
20 { 0x3B1E4B7C, 0x09D8, 0x944F, { 0xA4, 0x08, 0x13, 0x09, 0xEB, 0x8B, 0x44, 0x27 } }\r
21\r
22\r
23typedef struct _EMU_PTREAD_THUNK_PROTOCOL EMU_PTREAD_THUNK_PROTOCOL;\r
24\r
25\r
26typedef \r
27UINTN\r
28(EFIAPI *PTREAD_THUNK_MUTEXT_LOCK) (\r
29 IN VOID *Mutex\r
30 ); \r
31\r
32\r
33typedef \r
34UINTN\r
35(EFIAPI *PTREAD_THUNK_MUTEXT_UNLOCK) (\r
36 IN VOID *Mutex\r
37 ); \r
38\r
39\r
40typedef \r
41UINTN\r
42(EFIAPI *PTREAD_THUNK_MUTEX_TRY_LOCK) (\r
43 IN VOID *Mutex\r
44 ); \r
45\r
46\r
47typedef \r
48VOID *\r
49(EFIAPI *PTREAD_THUNK_MUTEX_INIT) (\r
50 IN VOID\r
51 ); \r
52\r
53\r
54typedef \r
55UINTN\r
56(EFIAPI *PTREAD_THUNK_MUTEX_DISTROY) (\r
57 IN VOID *Mutex\r
58 ); \r
59\r
60\r
61\r
62typedef \r
63VOID *\r
64(*PTREAD_THUNK_THEAD_ENTRY) (\r
65 IN VOID *Context\r
66 );\r
67\r
68typedef \r
69UINTN\r
70(EFIAPI *PTREAD_THUNK_CREATE_THREAD) (\r
71 IN VOID *Thread,\r
72 IN VOID *Attribute,\r
73 IN PTREAD_THUNK_THEAD_ENTRY Start,\r
74 IN VOID *Context\r
75 );\r
76\r
77typedef \r
78VOID\r
79(EFIAPI *PTREAD_THUNK_EXIT_THREAD) (\r
80 IN VOID *ValuePtr\r
81 ); \r
82\r
83 \r
84typedef \r
85UINTN\r
86(EFIAPI *PTREAD_THUNK_SELF) (\r
87 VOID\r
88 ); \r
89\r
90\r
91struct _EMU_PTREAD_THUNK_PROTOCOL {\r
92 PTREAD_THUNK_MUTEXT_LOCK MutextLock;\r
93 PTREAD_THUNK_MUTEXT_UNLOCK MutexUnlock;\r
94 PTREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;\r
95 PTREAD_THUNK_MUTEX_INIT MutexInit;\r
96 PTREAD_THUNK_MUTEX_DISTROY MutexDistroy;\r
97 PTREAD_THUNK_CREATE_THREAD CreateThread;\r
98 PTREAD_THUNK_EXIT_THREAD ExitThread;\r
99 PTREAD_THUNK_SELF Self;\r
100};\r
101\r
102extern EFI_GUID gEmuPthreadThunkProtocolGuid;\r
103\r
104#endif\r
105\r