]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/EmuThunkDxe/EmuThunk.c
PrmPkg/Test/UnitTest/Library: Add initial UEFI Boot Services test lib
[mirror_edk2.git] / EmulatorPkg / EmuThunkDxe / EmuThunk.c
CommitLineData
949f388f 1/*++ @file\r
2\r
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
e3ba31da 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
949f388f 6\r
7\r
8**/\r
9#include <PiDxe.h>\r
10\r
11#include <Protocol/DevicePath.h>\r
d18d8a1d 12#include <Protocol/EmuThunk.h>\r
949f388f 13\r
14#include <Library/DebugLib.h>\r
15#include <Library/UefiLib.h>\r
16#include <Library/UefiDriverEntryPoint.h>\r
17#include <Library/EmuThunkLib.h>\r
18#include <Library/MemoryAllocationLib.h>\r
19#include <Library/UefiBootServicesTableLib.h>\r
20#include <Library/DevicePathLib.h>\r
21\r
22//\r
23// EmuThunk Device Path Protocol Instance\r
24//\r
a550d468 25EMU_THUNK_DEVICE_PATH mEmuThunkDevicePath = {\r
949f388f 26 {\r
27 {\r
28 {\r
29 HARDWARE_DEVICE_PATH,\r
30 HW_VENDOR_DP,\r
31 {\r
a550d468
MK
32 (UINT8)(sizeof (EMU_VENDOR_DEVICE_PATH_NODE)),\r
33 (UINT8)((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8)\r
949f388f 34 }\r
35 },\r
36 EMU_THUNK_PROTOCOL_GUID\r
37 },\r
38 0\r
39 },\r
40 {\r
41 END_DEVICE_PATH_TYPE,\r
42 END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
43 {\r
44 END_DEVICE_PATH_LENGTH,\r
45 0\r
46 }\r
47 }\r
48};\r
49\r
949f388f 50EFI_STATUS\r
51EFIAPI\r
52InitializeEmuThunk (\r
a550d468
MK
53 IN EFI_HANDLE ImageHandle,\r
54 IN EFI_SYSTEM_TABLE *SystemTable\r
949f388f 55 )\r
a550d468 56\r
949f388f 57/*++\r
58\r
59Routine Description:\r
60 Install UnixThunk Protocol and it's associated Device Path protocol\r
61\r
62Arguments:\r
63 (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)\r
64\r
65Returns:\r
d18d8a1d 66 EFI_SUCEESS - UnixThunk protocol is added or error status from\r
949f388f 67 gBS->InstallMultiProtocolInterfaces().\r
68\r
69**/\r
70{\r
71 EFI_STATUS Status;\r
72 EFI_HANDLE Handle;\r
73\r
74 Handle = NULL;\r
75 Status = gBS->InstallMultipleProtocolInterfaces (\r
76 &Handle,\r
a550d468
MK
77 &gEmuThunkProtocolGuid,\r
78 gEmuThunk,\r
79 &gEfiDevicePathProtocolGuid,\r
80 &mEmuThunkDevicePath,\r
949f388f 81 NULL\r
82 );\r
83\r
84 return Status;\r
85}\r