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