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