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