]> git.proxmox.com Git - mirror_edk2.git/blame - InOsEmuPkg/Unix/Sec/Gasket.h
Add support for SerialPortLib that maps into POSIX StdIn and StdOut. Add a device...
[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
488 \r
949f388f 489#endif\r
490\r
491\r