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