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