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