summaryrefslogtreecommitdiffstats
path: root/EmulatorPkg/Include/Protocol/EmuThread.h
blob: 89e562d7af9e0563e67d540334ad067b75eabd6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/** @file
  Emulator Thunk to abstract OS services from pure EFI code

  Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.<BR>
  Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __EMU_THREAD_THUNK__
#define __EMU_THREAD_THUNK__


typedef struct _EMU_THREAD_THUNK_PROTOCOL  EMU_THREAD_THUNK_PROTOCOL;


typedef
UINTN
(EFIAPI *THREAD_THUNK_MUTEX_LOCK) (
  IN VOID *Mutex
  );


typedef
UINTN
(EFIAPI *THREAD_THUNK_MUTEX_UNLOCK) (
  IN VOID *Mutex
  );


typedef
UINTN
(EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK) (
  IN VOID *Mutex
  );


typedef
VOID *
(EFIAPI *THREAD_THUNK_MUTEX_INIT) (
  IN VOID
  );


typedef
UINTN
(EFIAPI *THREAD_THUNK_MUTEX_DISTROY) (
  IN VOID *Mutex
  );



typedef
VOID *
(EFIAPI *THREAD_THUNK_THREAD_ENTRY) (
  IN  VOID *Context
  );

typedef
UINTN
(EFIAPI *THREAD_THUNK_CREATE_THREAD) (
  IN  VOID                      *Thread,
  IN  VOID                      *Attribute,
  IN  THREAD_THUNK_THREAD_ENTRY Start,
  IN  VOID                      *Context
  );

typedef
VOID
(EFIAPI *THREAD_THUNK_EXIT_THREAD) (
  IN VOID *ValuePtr
  );


typedef
UINTN
(EFIAPI *THREAD_THUNK_SELF) (
  VOID
  );


struct _EMU_THREAD_THUNK_PROTOCOL {
  THREAD_THUNK_MUTEX_LOCK       MutexLock;
  THREAD_THUNK_MUTEX_UNLOCK     MutexUnlock;
  THREAD_THUNK_MUTEX_TRY_LOCK   MutexTryLock;
  THREAD_THUNK_MUTEX_INIT       MutexInit;
  THREAD_THUNK_MUTEX_DISTROY    MutexDistroy;
  THREAD_THUNK_CREATE_THREAD    CreateThread;
  THREAD_THUNK_EXIT_THREAD      ExitThread;
  THREAD_THUNK_SELF             Self;
};

extern EFI_GUID gEmuThreadThunkProtocolGuid;

#endif