]> git.proxmox.com Git - mirror_edk2.git/blob - EmulatorPkg/Unix/Host/Gasket.h
EmulatorPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / EmulatorPkg / Unix / Host / 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 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #ifndef _GASKET_H_
11 #define _GASKET_H_
12
13 //
14 // EMU_THUNK_PROTOCOL gaskets (EFIAPI to UNIX ABI)
15 //
16
17 UINTN
18 EFIAPI
19 GasketSecWriteStdErr (
20 IN UINT8 *Buffer,
21 IN UINTN NumberOfBytes
22 );
23
24 EFI_STATUS
25 EFIAPI
26 GasketSecConfigStdIn (
27 VOID
28 );
29
30 UINTN
31 EFIAPI
32 GasketSecWriteStdOut (
33 IN UINT8 *Buffer,
34 IN UINTN NumberOfBytes
35 );
36
37 UINTN
38 EFIAPI
39 GasketSecReadStdIn (
40 IN UINT8 *Buffer,
41 IN UINTN NumberOfBytes
42 );
43
44 BOOLEAN
45 EFIAPI
46 GasketSecPollStdIn (
47 VOID
48 );
49
50 VOID *
51 EFIAPI
52 GasketSecMalloc (
53 IN UINTN Size
54 );
55
56 VOID *
57 EFIAPI
58 GasketSecValloc (
59 IN UINTN Size
60 );
61
62 BOOLEAN
63 EFIAPI
64 GasketSecFree (
65 IN VOID *Ptr
66 );
67
68
69 RETURN_STATUS
70 EFIAPI
71 GasketSecPeCoffGetEntryPoint (
72 IN VOID *Pe32Data,
73 IN OUT VOID **EntryPoint
74 );
75
76 VOID
77 EFIAPI
78 GasketSecPeCoffRelocateImageExtraAction (
79 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
80 );
81
82 VOID
83 EFIAPI
84 GasketSecPeCoffUnloadImageExtraAction (
85 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
86 );
87
88 VOID
89 EFIAPI
90 GasketSecSetTimer (
91 IN UINT64 PeriodMs,
92 IN EMU_SET_TIMER_CALLBACK CallBack
93 );
94
95 VOID
96 EFIAPI
97 GasketSecEnableInterrupt (
98 VOID
99 );
100
101 VOID
102 EFIAPI
103 GasketSecDisableInterrupt (
104 VOID
105 );
106
107 UINT64
108 EFIAPI
109 GasketQueryPerformanceFrequency (
110 VOID
111 );
112
113 UINT64
114 EFIAPI
115 GasketQueryPerformanceCounter (
116 VOID
117 );
118
119
120 VOID
121 EFIAPI
122 GasketSecSleep (
123 IN UINT64 Nanoseconds
124 );
125
126 VOID
127 EFIAPI
128 GasketSecCpuSleep (
129 VOID
130 );
131
132 VOID
133 EFIAPI
134 GasketSecExit (
135 UINTN Status
136 );
137
138 VOID
139 EFIAPI
140 GasketSecGetTime (
141 OUT EFI_TIME *Time,
142 OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
143 );
144
145 VOID
146 EFIAPI
147 GasketSecSetTime (
148 IN EFI_TIME *Time
149 );
150
151 EFI_STATUS
152 EFIAPI
153 GasketSecGetNextProtocol (
154 IN BOOLEAN EmuBusDriver,
155 OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL
156 );
157
158
159 // PPIs produced by SEC
160
161
162 EFI_STATUS
163 EFIAPI
164 GasketSecUnixPeiAutoScan (
165 IN UINTN Index,
166 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
167 OUT UINT64 *MemorySize
168 );
169
170 VOID *
171 EFIAPI
172 GasketSecEmuThunkAddress (
173 VOID
174 );
175
176
177 EFI_STATUS
178 EFIAPI
179 GasketSecUnixUnixFwhAddress (
180 IN OUT UINT64 *FwhSize,
181 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase
182 );
183
184
185
186 //
187 // Reverse (UNIX to EFIAPI) gaskets
188 //
189
190 typedef
191 void
192 (EFIAPI *CALL_BACK) (
193 UINT64 Delta
194 );
195
196 UINTN
197 ReverseGasketUint64 (
198 CALL_BACK CallBack,
199 UINT64 a
200 );
201
202 UINTN
203 ReverseGasketUint64Uint64 (
204 VOID *CallBack,
205 VOID *Context,
206 VOID *Key
207 );
208
209 //
210 // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL
211 //
212
213
214 EFI_STATUS
215 EFIAPI
216 GasketX11Size (
217 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
218 UINT32 Width,
219 UINT32 Height
220 );
221
222 EFI_STATUS
223 EFIAPI
224 GasketX11CheckKey (
225 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo
226 );
227
228 EFI_STATUS
229 EFIAPI
230 GasketX11GetKey (
231 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
232 EFI_KEY_DATA *key
233 );
234
235 EFI_STATUS
236 EFIAPI
237 GasketX11KeySetState (
238 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
239 EFI_KEY_TOGGLE_STATE *KeyToggleState
240 );
241
242 EFI_STATUS
243 EFIAPI
244 GasketX11RegisterKeyNotify (
245 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
246 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack,
247 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack,
248 IN VOID *Context
249 );
250
251
252 EFI_STATUS
253 EFIAPI
254 GasketX11Blt (
255 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
256 IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
257 IN EFI_UGA_BLT_OPERATION BltOperation,
258 IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args
259 );
260
261 EFI_STATUS
262 EFIAPI
263 GasketX11CheckPointer (
264 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo
265 );
266
267 EFI_STATUS
268 EFIAPI
269 GasketX11GetPointerState (
270 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,
271 EFI_SIMPLE_POINTER_STATE *state
272 );
273
274 EFI_STATUS
275 EFIAPI
276 GasketX11GraphicsWindowOpen (
277 IN EMU_IO_THUNK_PROTOCOL *This
278 );
279
280 EFI_STATUS
281 EFIAPI
282 GasketX11GraphicsWindowClose (
283 IN EMU_IO_THUNK_PROTOCOL *This
284 );
285
286 // Pthreads
287
288 UINTN
289 EFIAPI
290 GasketPthreadMutexLock (
291 IN VOID *Mutex
292 );
293
294
295
296 UINTN
297 EFIAPI
298 GasketPthreadMutexUnLock (
299 IN VOID *Mutex
300 );
301
302
303 UINTN
304 EFIAPI
305 GasketPthreadMutexTryLock (
306 IN VOID *Mutex
307 );
308
309
310 VOID *
311 EFIAPI
312 GasketPthreadMutexInit (
313 IN VOID
314 );
315
316
317 UINTN
318 EFIAPI
319 GasketPthreadMutexDestroy (
320 IN VOID *Mutex
321 );
322
323
324 UINTN
325 EFIAPI
326 GasketPthreadCreate (
327 IN VOID *Thread,
328 IN VOID *Attribute,
329 IN THREAD_THUNK_THREAD_ENTRY Start,
330 IN VOID *Context
331 );
332
333 VOID
334 EFIAPI
335 GasketPthreadExit (
336 IN VOID *ValuePtr
337 );
338
339
340 UINTN
341 EFIAPI
342 GasketPthreadSelf (
343 VOID
344 );
345
346 EFI_STATUS
347 EFIAPI
348 GasketPthreadOpen (
349 IN EMU_IO_THUNK_PROTOCOL *This
350 );
351
352 EFI_STATUS
353 EFIAPI
354 GasketPthreadClose (
355 IN EMU_IO_THUNK_PROTOCOL *This
356 );
357
358
359 // PosixFileSystem
360
361 EFI_STATUS
362 EFIAPI
363 GasketPosixOpenVolume (
364 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
365 OUT EFI_FILE_PROTOCOL **Root
366 );
367
368 EFI_STATUS
369 EFIAPI
370 GasketPosixFileOpen (
371 IN EFI_FILE_PROTOCOL *This,
372 OUT EFI_FILE_PROTOCOL **NewHandle,
373 IN CHAR16 *FileName,
374 IN UINT64 OpenMode,
375 IN UINT64 Attributes
376 );
377
378 EFI_STATUS
379 EFIAPI
380 GasketPosixFileCLose (
381 IN EFI_FILE_PROTOCOL *This
382 );
383
384 EFI_STATUS
385 EFIAPI
386 GasketPosixFileDelete (
387 IN EFI_FILE_PROTOCOL *This
388 );
389
390 EFI_STATUS
391 EFIAPI
392 GasketPosixFileRead (
393 IN EFI_FILE_PROTOCOL *This,
394 IN OUT UINTN *BufferSize,
395 OUT VOID *Buffer
396 );
397
398 EFI_STATUS
399 EFIAPI
400 GasketPosixFileWrite (
401 IN EFI_FILE_PROTOCOL *This,
402 IN OUT UINTN *BufferSize,
403 IN VOID *Buffer
404 );
405
406 EFI_STATUS
407 EFIAPI
408 GasketPosixFileSetPossition (
409 IN EFI_FILE_PROTOCOL *This,
410 IN UINT64 Position
411 );
412
413 EFI_STATUS
414 EFIAPI
415 GasketPosixFileGetPossition (
416 IN EFI_FILE_PROTOCOL *This,
417 OUT UINT64 *Position
418 );
419
420 EFI_STATUS
421 EFIAPI
422 GasketPosixFileGetInfo (
423 IN EFI_FILE_PROTOCOL *This,
424 IN EFI_GUID *InformationType,
425 IN OUT UINTN *BufferSize,
426 OUT VOID *Buffer
427 );
428
429 EFI_STATUS
430 EFIAPI
431 GasketPosixFileSetInfo (
432 IN EFI_FILE_PROTOCOL *This,
433 IN EFI_GUID *InformationType,
434 IN UINTN BufferSize,
435 IN VOID *Buffer
436 );
437
438 EFI_STATUS
439 EFIAPI
440 GasketPosixFileFlush (
441 IN EFI_FILE_PROTOCOL *This
442 );
443
444 EFI_STATUS
445 EFIAPI
446 GasketPosixFileSystmeThunkOpen (
447 IN EMU_IO_THUNK_PROTOCOL *This
448 );
449
450 EFI_STATUS
451 EFIAPI
452 GasketPosixFileSystmeThunkClose (
453 IN EMU_IO_THUNK_PROTOCOL *This
454 );
455
456 EFI_STATUS
457 EFIAPI
458 GasketEmuBlockIoReset (
459 IN EMU_BLOCK_IO_PROTOCOL *This,
460 IN BOOLEAN ExtendedVerification
461 );
462
463 EFI_STATUS
464 EFIAPI
465 GasketEmuBlockIoReadBlocks (
466 IN EMU_BLOCK_IO_PROTOCOL *This,
467 IN UINT32 MediaId,
468 IN EFI_LBA LBA,
469 IN OUT EFI_BLOCK_IO2_TOKEN *Token,
470 IN UINTN BufferSize,
471 OUT VOID *Buffer
472 );
473
474 EFI_STATUS
475 EFIAPI
476 GasketEmuBlockIoWriteBlocks (
477 IN EMU_BLOCK_IO_PROTOCOL *This,
478 IN UINT32 MediaId,
479 IN EFI_LBA LBA,
480 IN OUT EFI_BLOCK_IO2_TOKEN *Token,
481 IN UINTN BufferSize,
482 IN VOID *Buffer
483 );
484
485 EFI_STATUS
486 EFIAPI
487 GasketEmuBlockIoFlushBlocks (
488 IN EMU_BLOCK_IO_PROTOCOL *This,
489 IN OUT EFI_BLOCK_IO2_TOKEN *Token
490 );
491
492 EFI_STATUS
493 EFIAPI
494 GasketEmuBlockIoCreateMapping (
495 IN EMU_BLOCK_IO_PROTOCOL *This,
496 IN EFI_BLOCK_IO_MEDIA *Media
497 );
498
499 EFI_STATUS
500 EFIAPI
501 GasketBlockIoThunkOpen (
502 IN EMU_IO_THUNK_PROTOCOL *This
503 );
504
505 EFI_STATUS
506 EFIAPI
507 GasketBlockIoThunkClose (
508 IN EMU_IO_THUNK_PROTOCOL *This
509 );
510
511 EFI_STATUS
512 EFIAPI
513 GasketSnpThunkOpen (
514 IN EMU_IO_THUNK_PROTOCOL *This
515 );
516
517 EFI_STATUS
518 EFIAPI
519 GasketSnpThunkClose (
520 IN EMU_IO_THUNK_PROTOCOL *This
521 );
522
523 EFI_STATUS
524 EFIAPI
525 GasketSnpCreateMapping (
526 IN EMU_SNP_PROTOCOL *This,
527 IN EFI_SIMPLE_NETWORK_MODE *Media
528 );
529
530 EFI_STATUS
531 EFIAPI
532 GasketSnpStart (
533 IN EMU_SNP_PROTOCOL *This
534 );
535
536 EFI_STATUS
537 EFIAPI
538 GasketSnpStop (
539 IN EMU_SNP_PROTOCOL *This
540 );
541
542 EFI_STATUS
543 EFIAPI
544 GasketSnpInitialize (
545 IN EMU_SNP_PROTOCOL *This,
546 IN UINTN ExtraRxBufferSize OPTIONAL,
547 IN UINTN ExtraTxBufferSize OPTIONAL
548 );
549
550 EFI_STATUS
551 EFIAPI
552 GasketSnpReset (
553 IN EMU_SNP_PROTOCOL *This,
554 IN BOOLEAN ExtendedVerification
555 );
556
557 EFI_STATUS
558 EFIAPI
559 GasketSnpShutdown (
560 IN EMU_SNP_PROTOCOL *This
561 );
562
563 EFI_STATUS
564 EFIAPI
565 GasketSnpReceiveFilters (
566 IN EMU_SNP_PROTOCOL *This,
567 IN UINT32 Enable,
568 IN UINT32 Disable,
569 IN BOOLEAN ResetMCastFilter,
570 IN UINTN MCastFilterCnt OPTIONAL,
571 IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL
572 );
573
574 EFI_STATUS
575 EFIAPI
576 GasketSnpStationAddress (
577 IN EMU_SNP_PROTOCOL *This,
578 IN BOOLEAN Reset,
579 IN EFI_MAC_ADDRESS *New OPTIONAL
580 );
581
582 EFI_STATUS
583 EFIAPI
584 GasketSnpStatistics (
585 IN EMU_SNP_PROTOCOL *This,
586 IN BOOLEAN Reset,
587 IN OUT UINTN *StatisticsSize OPTIONAL,
588 OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL
589 );
590
591 EFI_STATUS
592 EFIAPI
593 GasketSnpMCastIpToMac (
594 IN EMU_SNP_PROTOCOL *This,
595 IN BOOLEAN IPv6,
596 IN EFI_IP_ADDRESS *IP,
597 OUT EFI_MAC_ADDRESS *MAC
598 );
599
600 EFI_STATUS
601 EFIAPI
602 GasketSnpNvData (
603 IN EMU_SNP_PROTOCOL *This,
604 IN BOOLEAN ReadWrite,
605 IN UINTN Offset,
606 IN UINTN BufferSize,
607 IN OUT VOID *Buffer
608 );
609
610 EFI_STATUS
611 EFIAPI
612 GasketSnpGetStatus (
613 IN EMU_SNP_PROTOCOL *This,
614 OUT UINT32 *InterruptStatus OPTIONAL,
615 OUT VOID **TxBuf OPTIONAL
616 );
617
618 EFI_STATUS
619 EFIAPI
620 GasketSnpTransmit (
621 IN EMU_SNP_PROTOCOL *This,
622 IN UINTN HeaderSize,
623 IN UINTN BufferSize,
624 IN VOID *Buffer,
625 IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
626 IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,
627 IN UINT16 *Protocol OPTIONAL
628 );
629
630 EFI_STATUS
631 EFIAPI
632 GasketSnpReceive (
633 IN EMU_SNP_PROTOCOL *This,
634 OUT UINTN *HeaderSize OPTIONAL,
635 IN OUT UINTN *BufferSize,
636 OUT VOID *Buffer,
637 OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
638 OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
639 OUT UINT16 *Protocol OPTIONAL
640 );
641
642
643 #endif
644
645