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