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