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