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