]> git.proxmox.com Git - mirror_edk2.git/blame - InOsEmuPkg/Unix/Sec/Gasket.h
Added generic EFIABI SEC to InOsEmuPkg. Add library to abstract FV cracking and remov...
[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
4\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _GASKET_H_\r
16#define _GASKET_H_\r
17\r
18//\r
19// EMU_THUNK_PROTOCOL gaskets (EFIAPI to UNIX ABI)\r
20//\r
21\r
22UINTN\r
23GasketSecWriteStdErr (\r
24 IN UINT8 *Buffer,\r
25 IN UINTN NumberOfBytes\r
26 );\r
27\r
28RETURN_STATUS\r
29EFIAPI\r
30GasketSecPeCoffGetEntryPoint (\r
31 IN VOID *Pe32Data,\r
32 IN OUT VOID **EntryPoint\r
33 );\r
34\r
35VOID\r
36EFIAPI\r
37GasketSecPeCoffRelocateImageExtraAction (\r
38 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
39 );\r
40\r
41VOID\r
42EFIAPI\r
43GasketSecPeCoffUnloadImageExtraAction (\r
44 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
45 );\r
46\r
47VOID\r
48EFIAPI\r
49GasketSecSetTimer (\r
50 IN UINT64 PeriodMs,\r
51 IN EMU_SET_TIMER_CALLBACK CallBack\r
52 );\r
53\r
54VOID\r
55EFIAPI\r
56GasketSecEnableInterrupt (\r
57 VOID\r
58 );\r
59\r
60VOID\r
61EFIAPI\r
62GasketSecDisableInterrupt (\r
63 VOID\r
64 );\r
65 \r
66UINT64 \r
67GasketQueryPerformanceFrequency (\r
68 VOID\r
69 );\r
70\r
71UINT64\r
72GasketQueryPerformanceCounter (\r
73 VOID\r
74 );\r
75\r
76\r
77VOID\r
78EFIAPI\r
79GasketSecSleep (\r
80 IN UINT64 Milliseconds\r
81 );\r
82\r
83VOID\r
84EFIAPI\r
85GasketSecExit (\r
86 UINTN Status\r
87 );\r
88\r
89VOID\r
90EFIAPI\r
91GasketSecGetTime (\r
92 OUT EFI_TIME *Time,\r
93 OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL\r
94 );\r
95\r
96VOID\r
97EFIAPI\r
98GasketSecSetTime (\r
99 IN EFI_TIME *Time\r
100 );\r
101\r
102EFI_STATUS\r
103EFIAPI\r
104GasketSecGetNextProtocol (\r
105 IN BOOLEAN EmuBusDriver,\r
106 OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL\r
107 );\r
108\r
109\r
110// PPIs produced by SEC \r
111\r
949f388f 112 \r
113EFI_STATUS\r
114EFIAPI\r
115GasketSecUnixPeiAutoScan (\r
116 IN UINTN Index,\r
117 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,\r
118 OUT UINT64 *MemorySize\r
119 );\r
120 \r
121VOID *\r
122EFIAPI\r
123GasketSecEmuThunkAddress (\r
124 VOID\r
125 );\r
126\r
127 \r
128EFI_STATUS\r
129EFIAPI\r
130GasketSecUnixUnixFwhAddress (\r
131 IN OUT UINT64 *FwhSize,\r
132 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase\r
133 );\r
134 \r
135\r
136\r
137//\r
138// Reverse (UNIX to EFIAPI) gaskets\r
139//\r
140\r
141typedef\r
142void\r
143(*CALL_BACK) (\r
144 UINT64 Delta\r
145 );\r
146\r
147UINTN\r
148ReverseGasketUint64 (\r
149 CALL_BACK CallBack,\r
150 UINT64 a\r
151 );\r
152\r
153UINTN\r
154ReverseGasketUint64Uint64 (\r
155 VOID *CallBack,\r
156 VOID *Context,\r
157 VOID *Key\r
158 );\r
159\r
160//\r
161// Gasket functions for EFI_EMU_UGA_IO_PROTOCOL\r
162//\r
163\r
164\r
165EFI_STATUS\r
166EFIAPI\r
167GasketX11Size (\r
168 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,\r
169 UINT32 Width,\r
170 UINT32 Height\r
171 );\r
172\r
173EFI_STATUS\r
174EFIAPI\r
175GasketX11CheckKey (\r
176 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo\r
177 );\r
178\r
179EFI_STATUS\r
180EFIAPI\r
181GasketX11GetKey (\r
182 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,\r
183 EFI_KEY_DATA *key\r
184 );\r
185\r
186EFI_STATUS\r
187EFIAPI\r
188GasketX11KeySetState (\r
189 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo,\r
190 EFI_KEY_TOGGLE_STATE *KeyToggleState\r
191 );\r
192 \r
193EFI_STATUS\r
194EFIAPI \r
195GasketX11RegisterKeyNotify ( \r
196 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, \r
197 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack,\r
198 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack,\r
199 IN VOID *Context\r
200 );\r
201\r
202 \r
203EFI_STATUS\r
204EFIAPI\r
205GasketX11Blt (\r
206 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,\r
207 IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,\r
208 IN EFI_UGA_BLT_OPERATION BltOperation,\r
209 IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args\r
210 );\r
211\r
212EFI_STATUS\r
213EFIAPI\r
214GasketX11CheckPointer (\r
215 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo\r
216 );\r
217\r
218EFI_STATUS \r
219EFIAPI \r
220GasketX11GetPointerState (\r
221 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, \r
222 EFI_SIMPLE_POINTER_STATE *state\r
223 );\r
224\r
225EFI_STATUS\r
226EFIAPI\r
227GasketX11GraphicsWindowOpen (\r
228 IN EMU_IO_THUNK_PROTOCOL *This\r
229 );\r
230 \r
231EFI_STATUS\r
232EFIAPI\r
233GasketX11GraphicsWindowClose (\r
234 IN EMU_IO_THUNK_PROTOCOL *This\r
235 );\r
236\r
237// Pthreads\r
238\r
239UINTN\r
240EFIAPI\r
241GasketPthreadMutexLock (\r
242 IN VOID *Mutex\r
243 ); \r
244\r
245\r
246\r
247UINTN\r
248EFIAPI\r
249GasketPthreadMutexUnLock (\r
250 IN VOID *Mutex\r
251 ); \r
252\r
253 \r
254UINTN\r
255EFIAPI\r
256GasketPthreadMutexTryLock (\r
257 IN VOID *Mutex\r
258 ); \r
259\r
260 \r
261VOID *\r
262EFIAPI\r
263GasketPthreadMutexInit (\r
264 IN VOID\r
265 ); \r
266\r
267 \r
268UINTN\r
269EFIAPI\r
270GasketPthreadMutexDestroy (\r
271 IN VOID *Mutex\r
272 ); \r
273\r
274 \r
275UINTN\r
276EFIAPI\r
277GasketPthreadCreate (\r
278 IN VOID *Thread,\r
279 IN VOID *Attribute,\r
280 IN PTREAD_THUNK_THEAD_ENTRY Start,\r
281 IN VOID *Context\r
282 );\r
283 \r
284VOID\r
285EFIAPI\r
286GasketPthreadExit (\r
287 IN VOID *ValuePtr\r
288 ); \r
289\r
290 \r
291UINTN\r
292EFIAPI\r
293GasketPthreadSelf (\r
294 VOID\r
295 ); \r
296\r
297EFI_STATUS\r
298EFIAPI\r
299GasketPthreadOpen (\r
300 IN EMU_IO_THUNK_PROTOCOL *This\r
301 );\r
302\r
303EFI_STATUS\r
304EFIAPI\r
305GasketPthreadClose (\r
306 IN EMU_IO_THUNK_PROTOCOL *This\r
307 );\r
308\r
309\r
310// PosixFileSystem\r
311\r
312EFI_STATUS\r
313EFIAPI\r
314GasketPosixOpenVolume (\r
315 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,\r
316 OUT EFI_FILE_PROTOCOL **Root\r
317 );\r
318 \r
319EFI_STATUS\r
320EFIAPI\r
321GasketPosixFileOpen (\r
322 IN EFI_FILE_PROTOCOL *This,\r
323 OUT EFI_FILE_PROTOCOL **NewHandle,\r
324 IN CHAR16 *FileName,\r
325 IN UINT64 OpenMode,\r
326 IN UINT64 Attributes\r
327 );\r
328\r
329EFI_STATUS\r
330EFIAPI\r
331GasketPosixFileCLose (\r
332 IN EFI_FILE_PROTOCOL *This\r
333 );\r
334 \r
335EFI_STATUS\r
336EFIAPI\r
337GasketPosixFileDelete (\r
338 IN EFI_FILE_PROTOCOL *This\r
339 );\r
340\r
341EFI_STATUS\r
342EFIAPI\r
343GasketPosixFileRead (\r
344 IN EFI_FILE_PROTOCOL *This,\r
345 IN OUT UINTN *BufferSize,\r
346 OUT VOID *Buffer\r
347 );\r
348 \r
349EFI_STATUS\r
350EFIAPI\r
351GasketPosixFileWrite (\r
352 IN EFI_FILE_PROTOCOL *This,\r
353 IN OUT UINTN *BufferSize,\r
354 IN VOID *Buffer\r
355 );\r
356\r
357EFI_STATUS\r
358EFIAPI\r
359GasketPosixFileSetPossition (\r
360 IN EFI_FILE_PROTOCOL *This,\r
361 IN UINT64 Position\r
362 );\r
363\r
364EFI_STATUS\r
365EFIAPI\r
366GasketPosixFileGetPossition (\r
367 IN EFI_FILE_PROTOCOL *This,\r
368 OUT UINT64 *Position\r
369 );\r
370\r
371EFI_STATUS\r
372EFIAPI\r
373GasketPosixFileGetInfo (\r
374 IN EFI_FILE_PROTOCOL *This,\r
375 IN EFI_GUID *InformationType,\r
376 IN OUT UINTN *BufferSize,\r
377 OUT VOID *Buffer\r
378 );\r
379\r
380EFI_STATUS\r
381EFIAPI\r
382GasketPosixFileSetInfo (\r
383 IN EFI_FILE_PROTOCOL *This,\r
384 IN EFI_GUID *InformationType,\r
385 IN UINTN BufferSize,\r
386 IN VOID *Buffer\r
387 );\r
388\r
389EFI_STATUS\r
390EFIAPI\r
391GasketPosixFileFlush (\r
392 IN EFI_FILE_PROTOCOL *This\r
393 );\r
394\r
395EFI_STATUS\r
396EFIAPI\r
397GasketPosixFileSystmeThunkOpen (\r
398 IN EMU_IO_THUNK_PROTOCOL *This\r
399 );\r
400\r
401EFI_STATUS\r
402EFIAPI\r
403GasketPosixFileSystmeThunkClose (\r
404 IN EMU_IO_THUNK_PROTOCOL *This\r
405 );\r
406\r
407\r
408\r
409#endif\r
410\r
411\r