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