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