]> git.proxmox.com Git - mirror_edk2.git/blob - InOsEmuPkg/Include/Protocol/EmuPthreadThunk.h
InOsEmuPkg PcdEmuFileSystem: Set to architecture independent path
[mirror_edk2.git] / InOsEmuPkg / Include / Protocol / EmuPthreadThunk.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_PTHREAD_THUNK__
18 #define __EMU_PTHREAD_THUNK__
19
20 #define EMU_PTHREAD_THUNK_PROTOCO_GUID \
21 { 0x3B1E4B7C, 0x09D8, 0x944F, { 0xA4, 0x08, 0x13, 0x09, 0xEB, 0x8B, 0x44, 0x27 } }
22
23
24 typedef struct _EMU_PTREAD_THUNK_PROTOCOL EMU_PTREAD_THUNK_PROTOCOL;
25
26
27 typedef
28 UINTN
29 (EFIAPI *PTREAD_THUNK_MUTEXT_LOCK) (
30 IN VOID *Mutex
31 );
32
33
34 typedef
35 UINTN
36 (EFIAPI *PTREAD_THUNK_MUTEXT_UNLOCK) (
37 IN VOID *Mutex
38 );
39
40
41 typedef
42 UINTN
43 (EFIAPI *PTREAD_THUNK_MUTEX_TRY_LOCK) (
44 IN VOID *Mutex
45 );
46
47
48 typedef
49 VOID *
50 (EFIAPI *PTREAD_THUNK_MUTEX_INIT) (
51 IN VOID
52 );
53
54
55 typedef
56 UINTN
57 (EFIAPI *PTREAD_THUNK_MUTEX_DISTROY) (
58 IN VOID *Mutex
59 );
60
61
62
63 typedef
64 VOID *
65 (EFIAPI *PTREAD_THUNK_THEAD_ENTRY) (
66 IN VOID *Context
67 );
68
69 typedef
70 UINTN
71 (EFIAPI *PTREAD_THUNK_CREATE_THREAD) (
72 IN VOID *Thread,
73 IN VOID *Attribute,
74 IN PTREAD_THUNK_THEAD_ENTRY Start,
75 IN VOID *Context
76 );
77
78 typedef
79 VOID
80 (EFIAPI *PTREAD_THUNK_EXIT_THREAD) (
81 IN VOID *ValuePtr
82 );
83
84
85 typedef
86 UINTN
87 (EFIAPI *PTREAD_THUNK_SELF) (
88 VOID
89 );
90
91
92 struct _EMU_PTREAD_THUNK_PROTOCOL {
93 PTREAD_THUNK_MUTEXT_LOCK MutextLock;
94 PTREAD_THUNK_MUTEXT_UNLOCK MutexUnlock;
95 PTREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;
96 PTREAD_THUNK_MUTEX_INIT MutexInit;
97 PTREAD_THUNK_MUTEX_DISTROY MutexDistroy;
98 PTREAD_THUNK_CREATE_THREAD CreateThread;
99 PTREAD_THUNK_EXIT_THREAD ExitThread;
100 PTREAD_THUNK_SELF Self;
101 };
102
103 extern EFI_GUID gEmuPthreadThunkProtocolGuid;
104
105 #endif
106