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