]> git.proxmox.com Git - mirror_edk2.git/blob - InOsEmuPkg/Unix/Sec/Gasket.h
Added generic EFIABI SEC to InOsEmuPkg. Add library to abstract FV cracking and remov...
[mirror_edk2.git] / InOsEmuPkg / Unix / Sec / Gasket.h
1 /** @file
2
3 Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>
4
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _GASKET_H_
16 #define _GASKET_H_
17
18 //
19 // EMU_THUNK_PROTOCOL gaskets (EFIAPI to UNIX ABI)
20 //
21
22 UINTN
23 GasketSecWriteStdErr (
24 IN UINT8 *Buffer,
25 IN UINTN NumberOfBytes
26 );
27
28 RETURN_STATUS
29 EFIAPI
30 GasketSecPeCoffGetEntryPoint (
31 IN VOID *Pe32Data,
32 IN OUT VOID **EntryPoint
33 );
34
35 VOID
36 EFIAPI
37 GasketSecPeCoffRelocateImageExtraAction (
38 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
39 );
40
41 VOID
42 EFIAPI
43 GasketSecPeCoffUnloadImageExtraAction (
44 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
45 );
46
47 VOID
48 EFIAPI
49 GasketSecSetTimer (
50 IN UINT64 PeriodMs,
51 IN EMU_SET_TIMER_CALLBACK CallBack
52 );
53
54 VOID
55 EFIAPI
56 GasketSecEnableInterrupt (
57 VOID
58 );
59
60 VOID
61 EFIAPI
62 GasketSecDisableInterrupt (
63 VOID
64 );
65
66 UINT64
67 GasketQueryPerformanceFrequency (
68 VOID
69 );
70
71 UINT64
72 GasketQueryPerformanceCounter (
73 VOID
74 );
75
76
77 VOID
78 EFIAPI
79 GasketSecSleep (
80 IN UINT64 Milliseconds
81 );
82
83 VOID
84 EFIAPI
85 GasketSecExit (
86 UINTN Status
87 );
88
89 VOID
90 EFIAPI
91 GasketSecGetTime (
92 OUT EFI_TIME *Time,
93 OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
94 );
95
96 VOID
97 EFIAPI
98 GasketSecSetTime (
99 IN EFI_TIME *Time
100 );
101
102 EFI_STATUS
103 EFIAPI
104 GasketSecGetNextProtocol (
105 IN BOOLEAN EmuBusDriver,
106 OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL
107 );
108
109
110 // PPIs produced by SEC
111
112
113 EFI_STATUS
114 EFIAPI
115 GasketSecUnixPeiAutoScan (
116 IN UINTN Index,
117 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
118 OUT UINT64 *MemorySize
119 );
120
121 VOID *
122 EFIAPI
123 GasketSecEmuThunkAddress (
124 VOID
125 );
126
127
128 EFI_STATUS
129 EFIAPI
130 GasketSecUnixUnixFwhAddress (
131 IN OUT UINT64 *FwhSize,
132 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase
133 );
134
135
136
137 //
138 // Reverse (UNIX to EFIAPI) gaskets
139 //
140
141 typedef
142 void
143 (*CALL_BACK) (
144 UINT64 Delta
145 );
146
147 UINTN
148 ReverseGasketUint64 (
149 CALL_BACK CallBack,
150 UINT64 a
151 );
152
153 UINTN
154 ReverseGasketUint64Uint64 (
155 VOID *CallBack,
156 VOID *Context,
157 VOID *Key
158 );
159
160 //
161 // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL
162 //
163
164
165 EFI_STATUS
166 EFIAPI
167 GasketX11Size (
168 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
169 UINT32 Width,
170 UINT32 Height
171 );
172
173 EFI_STATUS
174 EFIAPI
175 GasketX11CheckKey (
176 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo
177 );
178
179 EFI_STATUS
180 EFIAPI
181 GasketX11GetKey (
182 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
183 EFI_KEY_DATA *key
184 );
185
186 EFI_STATUS
187 EFIAPI
188 GasketX11KeySetState (
189 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
190 EFI_KEY_TOGGLE_STATE *KeyToggleState
191 );
192
193 EFI_STATUS
194 EFIAPI
195 GasketX11RegisterKeyNotify (
196 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
197 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack,
198 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack,
199 IN VOID *Context
200 );
201
202
203 EFI_STATUS
204 EFIAPI
205 GasketX11Blt (
206 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
207 IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
208 IN EFI_UGA_BLT_OPERATION BltOperation,
209 IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args
210 );
211
212 EFI_STATUS
213 EFIAPI
214 GasketX11CheckPointer (
215 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo
216 );
217
218 EFI_STATUS
219 EFIAPI
220 GasketX11GetPointerState (
221 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
222 EFI_SIMPLE_POINTER_STATE *state
223 );
224
225 EFI_STATUS
226 EFIAPI
227 GasketX11GraphicsWindowOpen (
228 IN EMU_IO_THUNK_PROTOCOL *This
229 );
230
231 EFI_STATUS
232 EFIAPI
233 GasketX11GraphicsWindowClose (
234 IN EMU_IO_THUNK_PROTOCOL *This
235 );
236
237 // Pthreads
238
239 UINTN
240 EFIAPI
241 GasketPthreadMutexLock (
242 IN VOID *Mutex
243 );
244
245
246
247 UINTN
248 EFIAPI
249 GasketPthreadMutexUnLock (
250 IN VOID *Mutex
251 );
252
253
254 UINTN
255 EFIAPI
256 GasketPthreadMutexTryLock (
257 IN VOID *Mutex
258 );
259
260
261 VOID *
262 EFIAPI
263 GasketPthreadMutexInit (
264 IN VOID
265 );
266
267
268 UINTN
269 EFIAPI
270 GasketPthreadMutexDestroy (
271 IN VOID *Mutex
272 );
273
274
275 UINTN
276 EFIAPI
277 GasketPthreadCreate (
278 IN VOID *Thread,
279 IN VOID *Attribute,
280 IN PTREAD_THUNK_THEAD_ENTRY Start,
281 IN VOID *Context
282 );
283
284 VOID
285 EFIAPI
286 GasketPthreadExit (
287 IN VOID *ValuePtr
288 );
289
290
291 UINTN
292 EFIAPI
293 GasketPthreadSelf (
294 VOID
295 );
296
297 EFI_STATUS
298 EFIAPI
299 GasketPthreadOpen (
300 IN EMU_IO_THUNK_PROTOCOL *This
301 );
302
303 EFI_STATUS
304 EFIAPI
305 GasketPthreadClose (
306 IN EMU_IO_THUNK_PROTOCOL *This
307 );
308
309
310 // PosixFileSystem
311
312 EFI_STATUS
313 EFIAPI
314 GasketPosixOpenVolume (
315 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
316 OUT EFI_FILE_PROTOCOL **Root
317 );
318
319 EFI_STATUS
320 EFIAPI
321 GasketPosixFileOpen (
322 IN EFI_FILE_PROTOCOL *This,
323 OUT EFI_FILE_PROTOCOL **NewHandle,
324 IN CHAR16 *FileName,
325 IN UINT64 OpenMode,
326 IN UINT64 Attributes
327 );
328
329 EFI_STATUS
330 EFIAPI
331 GasketPosixFileCLose (
332 IN EFI_FILE_PROTOCOL *This
333 );
334
335 EFI_STATUS
336 EFIAPI
337 GasketPosixFileDelete (
338 IN EFI_FILE_PROTOCOL *This
339 );
340
341 EFI_STATUS
342 EFIAPI
343 GasketPosixFileRead (
344 IN EFI_FILE_PROTOCOL *This,
345 IN OUT UINTN *BufferSize,
346 OUT VOID *Buffer
347 );
348
349 EFI_STATUS
350 EFIAPI
351 GasketPosixFileWrite (
352 IN EFI_FILE_PROTOCOL *This,
353 IN OUT UINTN *BufferSize,
354 IN VOID *Buffer
355 );
356
357 EFI_STATUS
358 EFIAPI
359 GasketPosixFileSetPossition (
360 IN EFI_FILE_PROTOCOL *This,
361 IN UINT64 Position
362 );
363
364 EFI_STATUS
365 EFIAPI
366 GasketPosixFileGetPossition (
367 IN EFI_FILE_PROTOCOL *This,
368 OUT UINT64 *Position
369 );
370
371 EFI_STATUS
372 EFIAPI
373 GasketPosixFileGetInfo (
374 IN EFI_FILE_PROTOCOL *This,
375 IN EFI_GUID *InformationType,
376 IN OUT UINTN *BufferSize,
377 OUT VOID *Buffer
378 );
379
380 EFI_STATUS
381 EFIAPI
382 GasketPosixFileSetInfo (
383 IN EFI_FILE_PROTOCOL *This,
384 IN EFI_GUID *InformationType,
385 IN UINTN BufferSize,
386 IN VOID *Buffer
387 );
388
389 EFI_STATUS
390 EFIAPI
391 GasketPosixFileFlush (
392 IN EFI_FILE_PROTOCOL *This
393 );
394
395 EFI_STATUS
396 EFIAPI
397 GasketPosixFileSystmeThunkOpen (
398 IN EMU_IO_THUNK_PROTOCOL *This
399 );
400
401 EFI_STATUS
402 EFIAPI
403 GasketPosixFileSystmeThunkClose (
404 IN EMU_IO_THUNK_PROTOCOL *This
405 );
406
407
408
409 #endif
410
411