From a550d468a6ca577d9e9c57a0eafcf2fc9fbb8c97 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Sun, 5 Dec 2021 14:53:57 -0800 Subject: [PATCH] EmulatorPkg: Apply uncrustify changes REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the EmulatorPkg package Cc: Andrew Fish Cc: Leif Lindholm Cc: Michael D Kinney Signed-off-by: Michael Kubacki Reviewed-by: Ray Ni --- .../RedfishPlatformConfig.c | 62 +- EmulatorPkg/AutoScanPei/AutoScanPei.c | 33 +- EmulatorPkg/BootModePei/BootModePei.c | 17 +- EmulatorPkg/CpuRuntimeDxe/Cpu.c | 108 +- EmulatorPkg/CpuRuntimeDxe/CpuDriver.h | 119 +- EmulatorPkg/CpuRuntimeDxe/CpuIo.c | 77 +- EmulatorPkg/CpuRuntimeDxe/MpService.c | 280 ++--- EmulatorPkg/EmuBlockIoDxe/ComponentName.c | 57 +- .../EmuBlockIoDxe/DriverConfiguration.c | 104 +- EmulatorPkg/EmuBlockIoDxe/DriverDiagnostics.c | 97 +- EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.c | 196 ++- EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.h | 5 +- EmulatorPkg/EmuBusDriverDxe/ComponentName.c | 54 +- EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c | 200 ++- EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.h | 45 +- EmulatorPkg/EmuGopDxe/ComponentName.c | 36 +- EmulatorPkg/EmuGopDxe/Gop.h | 115 +- EmulatorPkg/EmuGopDxe/GopDriver.c | 123 +- EmulatorPkg/EmuGopDxe/GopInput.c | 181 ++- EmulatorPkg/EmuGopDxe/GopScreen.c | 176 ++- .../EmuSimpleFileSystemDxe/ComponentName.c | 56 +- .../EmuSimpleFileSystem.c | 246 ++-- .../EmuSimpleFileSystem.h | 33 +- EmulatorPkg/EmuSnpDxe/ComponentName.c | 32 +- EmulatorPkg/EmuSnpDxe/EmuSnpDxe.c | 310 +++-- EmulatorPkg/EmuSnpDxe/EmuSnpDxe.h | 166 ++- EmulatorPkg/EmuThunkDxe/EmuThunk.c | 18 +- .../FirmwareVolumePei/FirmwareVolumePei.c | 31 +- EmulatorPkg/FlashMapPei/FlashMapPei.c | 16 +- .../FvbServicesRuntimeDxe/FWBlockService.c | 382 +++--- EmulatorPkg/FvbServicesRuntimeDxe/FvbInfo.c | 35 +- .../FvbServicesRuntimeDxe/FwBlockService.h | 155 ++- EmulatorPkg/Include/Guid/EmuPhysicalDisk.h | 2 +- EmulatorPkg/Include/Guid/EmuSystemConfig.h | 8 +- EmulatorPkg/Include/Guid/EmuVirtualDisk.h | 2 +- EmulatorPkg/Include/Library/EmuMagicPageLib.h | 8 +- EmulatorPkg/Include/Library/EmuThunkLib.h | 5 +- EmulatorPkg/Include/Library/KeyMapLib.h | 5 +- EmulatorPkg/Include/Library/PpiListLib.h | 2 - EmulatorPkg/Include/Library/SmbiosLib.h | 38 +- EmulatorPkg/Include/Library/ThunkPpiList.h | 4 - .../Include/Library/ThunkProtocolList.h | 13 +- EmulatorPkg/Include/Ppi/EmuThunk.h | 23 +- EmulatorPkg/Include/Protocol/EmuBlockIo.h | 31 +- EmulatorPkg/Include/Protocol/EmuFileSystem.h | 45 +- .../Include/Protocol/EmuGraphicsWindow.h | 45 +- EmulatorPkg/Include/Protocol/EmuIoThunk.h | 25 +- EmulatorPkg/Include/Protocol/EmuSnp.h | 36 +- EmulatorPkg/Include/Protocol/EmuThread.h | 49 +- EmulatorPkg/Include/Protocol/EmuThunk.h | 116 +- .../DevicePathTextLib/DevicePathTextLib.c | 51 +- .../Library/DxeCoreTimerLib/DxeCoreTimerLib.c | 20 +- EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.c | 10 +- .../DxeEmuPeCoffExtraActionLib.c | 7 +- .../DxeEmuSerialPortLib/DxeEmuSerialPortLib.c | 31 +- .../DxeEmuStdErrSerialPortLib.c | 15 +- EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.c | 41 +- .../MemoryAllocationLib.c | 51 +- .../Library/KeyMapLibNull/KeyMapLibNull.c | 5 +- .../PeiServicesTablePointer.c | 8 +- .../PeiEmuPeCoffExtraActionLib.c | 30 +- .../PeiEmuPeCoffGetEntryPointLib.c | 135 +-- .../PeiEmuSerialPortLib/PeiEmuSerialPortLib.c | 29 +- .../PeiServicesTablePointer.c | 22 +- .../PeiServicesTablePointer.c | 11 +- EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.c | 67 +- .../Library/PlatformBmLib/PlatformBm.c | 155 ++- .../Library/PlatformBmLib/PlatformBm.h | 23 +- .../Library/PlatformBmLib/PlatformBmData.c | 29 +- .../PlatformBmLib/PlatformBmMemoryTest.c | 15 +- .../RedfishPlatformCredentialLib.c | 46 +- .../RedfishPlatformHostInterfaceLib.c | 168 +-- EmulatorPkg/Library/SecPeiServicesLib/FwVol.c | 157 +-- .../SecPeiServicesLib/PeiServicesLib.c | 107 +- .../Library/SecPpiListLib/PpiListLib.c | 1 - EmulatorPkg/Library/SmbiosLib/SmbiosLib.c | 95 +- .../Library/ThunkPpiList/ThunkPpiList.c | 21 +- .../ThunkProtocolList/ThunkProtocolList.c | 47 +- .../PlatformSmbiosDxe/PlatformSmbiosDxe.c | 36 +- EmulatorPkg/PlatformSmbiosDxe/SmbiosTable.c | 226 ++-- .../RealTimeClockRuntimeDxe/RealTimeClock.c | 75 +- EmulatorPkg/ResetRuntimeDxe/Reset.c | 14 +- EmulatorPkg/Sec/Ia32/TempRam.c | 21 +- EmulatorPkg/Sec/Sec.c | 25 +- EmulatorPkg/Sec/Sec.h | 12 +- .../ThunkPpiToProtocolPei.c | 17 +- EmulatorPkg/TimerDxe/Timer.c | 42 +- EmulatorPkg/TimerDxe/Timer.h | 13 +- EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c | 261 ++-- EmulatorPkg/Unix/Host/BlockIo.c | 262 ++-- EmulatorPkg/Unix/Host/EmuThunk.c | 183 ++- EmulatorPkg/Unix/Host/Gasket.h | 288 ++--- EmulatorPkg/Unix/Host/Host.c | 400 +++--- EmulatorPkg/Unix/Host/Host.h | 160 +-- EmulatorPkg/Unix/Host/Ia32/SwitchStack.c | 12 +- EmulatorPkg/Unix/Host/LinuxPacketFilter.c | 142 +-- EmulatorPkg/Unix/Host/MemoryAllocationLib.c | 14 +- EmulatorPkg/Unix/Host/PosixFileSystem.c | 637 +++++----- EmulatorPkg/Unix/Host/Pthreads.c | 66 +- EmulatorPkg/Unix/Host/X11GraphicsWindow.c | 1076 +++++++++-------- EmulatorPkg/Win/Host/WinBlockIo.c | 224 ++-- EmulatorPkg/Win/Host/WinFileSystem.c | 983 ++++++++------- EmulatorPkg/Win/Host/WinGop.h | 121 +- EmulatorPkg/Win/Host/WinGopInput.c | 132 +- EmulatorPkg/Win/Host/WinGopScreen.c | 705 ++++++----- EmulatorPkg/Win/Host/WinHost.c | 347 +++--- EmulatorPkg/Win/Host/WinHost.h | 64 +- EmulatorPkg/Win/Host/WinInclude.h | 13 +- EmulatorPkg/Win/Host/WinMemoryAllocationLib.c | 15 +- EmulatorPkg/Win/Host/WinPacketFilter.c | 349 +++--- EmulatorPkg/Win/Host/WinThunk.c | 245 ++-- 111 files changed, 6212 insertions(+), 6387 deletions(-) diff --git a/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c b/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c index 89d4c760a7..9253b2245f 100644 --- a/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c +++ b/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c @@ -17,8 +17,8 @@ #include #include -UINTN Argc; -CHAR16 **Argv; +UINTN Argc; +CHAR16 **Argv; /** @@ -31,15 +31,15 @@ GetArg ( VOID ) { - EFI_STATUS Status; - EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; + EFI_STATUS Status; + EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; Status = gBS->HandleProtocol ( gImageHandle, &gEfiShellParametersProtocolGuid, - (VOID**)&ShellParameters + (VOID **)&ShellParameters ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -84,8 +84,8 @@ UefiMain ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; - RETURN_STATUS ReturnStatus; + EFI_STATUS Status; + RETURN_STATUS ReturnStatus; UINT8 HostIpAssignmentType; EFI_IPv4_ADDRESS HostIpAddress; @@ -94,8 +94,8 @@ UefiMain ( EFI_IPv4_ADDRESS RedfishServiceIpMask; UINTN RedfishServiceIpPort; - Status = GetArg(); - if (EFI_ERROR(Status)) { + Status = GetArg (); + if (EFI_ERROR (Status)) { return Status; } @@ -104,39 +104,41 @@ UefiMain ( // RedfishPlatformConfig.efi -s HostIpAddress HostIpMask RedfishServiceIpAddress RedfishServiceIpMask RedfishServiceIpPort // RedfishPlatformConfig.efi -a RedfishServiceIpAddress RedfishServiceIpMask RedfishServiceIpPort // - if (Argc != 7 && Argc != 5) { - - PrintHelp(); + if ((Argc != 7) && (Argc != 5)) { + PrintHelp (); return EFI_UNSUPPORTED; } - if (StrCmp(Argv[1], L"-s") == 0) { - + if (StrCmp (Argv[1], L"-s") == 0) { HostIpAssignmentType = 1; Status = NetLibStrToIp4 (Argv[2], &HostIpAddress); if (EFI_ERROR (Status)) { - PrintHelp(); + PrintHelp (); return Status; } + Status = NetLibStrToIp4 (Argv[3], &HostIpMask); if (EFI_ERROR (Status)) { - PrintHelp(); + PrintHelp (); return Status; } + Status = NetLibStrToIp4 (Argv[4], &RedfishServiceIpAddress); if (EFI_ERROR (Status)) { - PrintHelp(); + PrintHelp (); return Status; } + Status = NetLibStrToIp4 (Argv[5], &RedfishServiceIpMask); if (EFI_ERROR (Status)) { - PrintHelp(); + PrintHelp (); return Status; } + ReturnStatus = StrDecimalToUintnS (Argv[6], NULL, &RedfishServiceIpPort); if (RETURN_ERROR (ReturnStatus)) { - PrintHelp(); + PrintHelp (); return Status; } @@ -214,24 +216,24 @@ UefiMain ( Print (L"RedfishServiceIpMask: %s has been set Successfully!\n", Argv[5]); Print (L"RedfishServiceIpPort: %s has been set Successfully!\n", Argv[6]); Print (L"Please Restart!\n"); - - } else if (StrCmp(Argv[1], L"-a") == 0) { - + } else if (StrCmp (Argv[1], L"-a") == 0) { HostIpAssignmentType = 3; Status = NetLibStrToIp4 (Argv[2], &RedfishServiceIpAddress); if (EFI_ERROR (Status)) { - PrintHelp(); + PrintHelp (); return Status; } + Status = NetLibStrToIp4 (Argv[3], &RedfishServiceIpMask); if (EFI_ERROR (Status)) { - PrintHelp(); + PrintHelp (); return Status; } + ReturnStatus = StrDecimalToUintnS (Argv[4], NULL, &RedfishServiceIpPort); if (RETURN_ERROR (ReturnStatus)) { - PrintHelp(); + PrintHelp (); return Status; } @@ -285,12 +287,10 @@ UefiMain ( Print (L"RedfishServiceIpMask: %s has been set Successfully!\n", Argv[3]); Print (L"RedfishServiceIpPort: %s has been set Successfully!\n", Argv[4]); Print (L"Please Restart!\n"); - } else if (StrCmp(Argv[1], L"-h") == 0 || StrCmp(Argv[1], L"-help") == 0) { - - PrintHelp(); + } else if ((StrCmp (Argv[1], L"-h") == 0) || (StrCmp (Argv[1], L"-help") == 0)) { + PrintHelp (); } else { - - PrintHelp(); + PrintHelp (); return EFI_UNSUPPORTED; } diff --git a/EmulatorPkg/AutoScanPei/AutoScanPei.c b/EmulatorPkg/AutoScanPei/AutoScanPei.c index eec04fc88d..b7085b2d07 100644 --- a/EmulatorPkg/AutoScanPei/AutoScanPei.c +++ b/EmulatorPkg/AutoScanPei/AutoScanPei.c @@ -21,9 +21,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI PeimInitializeAutoScanPei ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) + /*++ Routine Description: @@ -38,14 +39,13 @@ Returns: **/ { - EFI_STATUS Status; - EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor; - EMU_THUNK_PPI *Thunk; - UINT64 MemorySize; - EFI_PHYSICAL_ADDRESS MemoryBase; - UINTN Index; - EFI_RESOURCE_ATTRIBUTE_TYPE Attributes; - + EFI_STATUS Status; + EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor; + EMU_THUNK_PPI *Thunk; + UINT64 MemorySize; + EFI_PHYSICAL_ADDRESS MemoryBase; + UINTN Index; + EFI_RESOURCE_ATTRIBUTE_TYPE Attributes; DEBUG ((DEBUG_ERROR, "Emu Autoscan PEIM Loaded\n")); @@ -66,12 +66,12 @@ Returns: if (!EFI_ERROR (Status)) { Attributes = ( - EFI_RESOURCE_ATTRIBUTE_PRESENT | - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | - EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE ); if (Index == 0) { @@ -91,6 +91,7 @@ Returns: MemorySize ); } + Index++; } while (!EFI_ERROR (Status)); diff --git a/EmulatorPkg/BootModePei/BootModePei.c b/EmulatorPkg/BootModePei/BootModePei.c index d523a5f873..4f6a3d1869 100644 --- a/EmulatorPkg/BootModePei/BootModePei.c +++ b/EmulatorPkg/BootModePei/BootModePei.c @@ -6,8 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - - // // The package level header files this module uses // @@ -16,7 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - // // The protocols, PPI and GUID defintions for this module // @@ -28,7 +25,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - // // Module globals // @@ -47,9 +43,10 @@ EFI_PEI_PPI_DESCRIPTOR mPpiListRecoveryBootMode = { EFI_STATUS EFIAPI InitializeBootMode ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) + /*++ Routine Description: @@ -66,14 +63,14 @@ Returns: **/ { - EFI_STATUS Status; - EFI_BOOT_MODE BootMode; + EFI_STATUS Status; + EFI_BOOT_MODE BootMode; DEBUG ((DEBUG_ERROR, "Emu Boot Mode PEIM Loaded\n")); - BootMode = FixedPcdGet32 (PcdEmuBootMode); + BootMode = FixedPcdGet32 (PcdEmuBootMode); - Status = PeiServicesSetBootMode (BootMode); + Status = PeiServicesSetBootMode (BootMode); ASSERT_EFI_ERROR (Status); Status = PeiServicesInstallPpi (&mPpiListBootMode); diff --git a/EmulatorPkg/CpuRuntimeDxe/Cpu.c b/EmulatorPkg/CpuRuntimeDxe/Cpu.c index 00e93016af..e00f6cf35f 100644 --- a/EmulatorPkg/CpuRuntimeDxe/Cpu.c +++ b/EmulatorPkg/CpuRuntimeDxe/Cpu.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent UINT64 mTimerPeriod; -CPU_ARCH_PROTOCOL_PRIVATE mCpuTemplate = { +CPU_ARCH_PROTOCOL_PRIVATE mCpuTemplate = { CPU_ARCH_PROT_PRIVATE_SIGNATURE, NULL, { @@ -39,16 +39,16 @@ CPU_ARCH_PROTOCOL_PRIVATE mCpuTemplate = { TRUE }; -#define EFI_CPU_DATA_MAXIMUM_LENGTH 0x100 +#define EFI_CPU_DATA_MAXIMUM_LENGTH 0x100 -SMBIOS_TABLE_TYPE4 mCpuSmbiosType4 = { - { EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE4), 0}, +SMBIOS_TABLE_TYPE4 mCpuSmbiosType4 = { + { EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE4), 0 }, 1, // Socket String ProcessorOther, // ProcessorType; ///< The enumeration value from PROCESSOR_TYPE_DATA. ProcessorFamilyOther, // ProcessorFamily; ///< The enumeration value from PROCESSOR_FAMILY_DATA. 2, // ProcessorManufacture String; { // ProcessorId; - { // PROCESSOR_SIGNATURE + { // PROCESSOR_SIGNATURE 0, // ProcessorSteppingId:4; 0, // ProcessorModel: 4; 0, // ProcessorFamily: 4; @@ -58,7 +58,7 @@ SMBIOS_TABLE_TYPE4 mCpuSmbiosType4 = { 0, // ProcessorXFamily: 8; 0, // ProcessorReserved2: 4; }, - { // PROCESSOR_FEATURE_FLAGS + { // PROCESSOR_FEATURE_FLAGS 0, // ProcessorFpu :1; 0, // ProcessorVme :1; 0, // ProcessorDe :1; @@ -93,7 +93,7 @@ SMBIOS_TABLE_TYPE4 mCpuSmbiosType4 = { } }, 3, // ProcessorVersion String; - { // Voltage; + { // Voltage; 1, // ProcessorVoltageCapability5V :1; 1, // ProcessorVoltageCapability3_3V :1; 1, // ProcessorVoltageCapability2_9V :1; @@ -119,7 +119,7 @@ SMBIOS_TABLE_TYPE4 mCpuSmbiosType4 = { 0, // ProcessorFamily2; }; -CHAR8 *mCpuSmbiosType4Strings[] = { +CHAR8 *mCpuSmbiosType4Strings[] = { "Socket", "http://www.tianocore.org/edk2/", "Emulated Processor", @@ -129,7 +129,6 @@ CHAR8 *mCpuSmbiosType4Strings[] = { NULL }; - /** Create SMBIOS record. @@ -159,18 +158,18 @@ CHAR8 *mCpuSmbiosType4Strings[] = { **/ EFI_STATUS LogSmbiosData ( - IN EFI_SMBIOS_TABLE_HEADER *Template, - IN CHAR8 **StringPack + IN EFI_SMBIOS_TABLE_HEADER *Template, + IN CHAR8 **StringPack ) { - EFI_STATUS Status; - EFI_SMBIOS_PROTOCOL *Smbios; - EFI_SMBIOS_HANDLE SmbiosHandle; - EFI_SMBIOS_TABLE_HEADER *Record; - UINTN Index; - UINTN StringSize; - UINTN Size; - CHAR8 *Str; + EFI_STATUS Status; + EFI_SMBIOS_PROTOCOL *Smbios; + EFI_SMBIOS_HANDLE SmbiosHandle; + EFI_SMBIOS_TABLE_HEADER *Record; + UINTN Index; + UINTN StringSize; + UINTN Size; + CHAR8 *Str; // // Locate Smbios protocol. @@ -188,12 +187,14 @@ LogSmbiosData ( } else { for (Index = 0; StringPack[Index] != NULL; Index++) { StringSize = AsciiStrSize (StringPack[Index]); - Size += StringSize; + Size += StringSize; } + if (StringPack[0] == NULL) { // At least a double null is required Size += 1; } + // Don't forget the terminating double null Size += 1; } @@ -203,6 +204,7 @@ LogSmbiosData ( if (Record == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (Record, Template, Template->Length); // Append string pack @@ -212,32 +214,30 @@ LogSmbiosData ( CopyMem (Str, StringPack[Index], StringSize); Str += StringSize; } + *Str = 0; SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED; - Status = Smbios->Add ( - Smbios, - gImageHandle, - &SmbiosHandle, - Record - ); + Status = Smbios->Add ( + Smbios, + gImageHandle, + &SmbiosHandle, + Record + ); ASSERT_EFI_ERROR (Status); FreePool (Record); return Status; } - - - VOID CpuUpdateSmbios ( IN UINTN MaxCpus ) { - mCpuSmbiosType4.CoreCount = (UINT8) MaxCpus; - mCpuSmbiosType4.EnabledCoreCount = (UINT8) MaxCpus; - mCpuSmbiosType4.ThreadCount = (UINT8) MaxCpus; + mCpuSmbiosType4.CoreCount = (UINT8)MaxCpus; + mCpuSmbiosType4.EnabledCoreCount = (UINT8)MaxCpus; + mCpuSmbiosType4.ThreadCount = (UINT8)MaxCpus; // // The value of 1234 is fake value for CPU frequency // @@ -245,7 +245,6 @@ CpuUpdateSmbios ( LogSmbiosData ((EFI_SMBIOS_TABLE_HEADER *)&mCpuSmbiosType4, mCpuSmbiosType4Strings); } - // // Service routines for the driver // @@ -265,6 +264,7 @@ EmuFlushCpuDataCache ( // return EFI_SUCCESS; } + // // Other flush types are not supported by Emu emulator // @@ -277,7 +277,7 @@ EmuEnableInterrupt ( IN EFI_CPU_ARCH_PROTOCOL *This ) { - CPU_ARCH_PROTOCOL_PRIVATE *Private; + CPU_ARCH_PROTOCOL_PRIVATE *Private; Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); Private->InterruptState = TRUE; @@ -291,7 +291,7 @@ EmuDisableInterrupt ( IN EFI_CPU_ARCH_PROTOCOL *This ) { - CPU_ARCH_PROTOCOL_PRIVATE *Private; + CPU_ARCH_PROTOCOL_PRIVATE *Private; Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); Private->InterruptState = FALSE; @@ -306,7 +306,7 @@ EmuGetInterruptState ( OUT BOOLEAN *State ) { - CPU_ARCH_PROTOCOL_PRIVATE *Private; + CPU_ARCH_PROTOCOL_PRIVATE *Private; if (State == NULL) { return EFI_INVALID_PARAMETER; @@ -338,9 +338,10 @@ EmuRegisterInterruptHandler ( // // Do parameter checking for EFI spec conformance // - if (InterruptType < 0 || InterruptType > 0xff) { + if ((InterruptType < 0) || (InterruptType > 0xff)) { return EFI_UNSUPPORTED; } + // // Do nothing for Emu emulation // @@ -350,10 +351,10 @@ EmuRegisterInterruptHandler ( EFI_STATUS EFIAPI EmuGetTimerValue ( - IN EFI_CPU_ARCH_PROTOCOL *This, - IN UINT32 TimerIndex, - OUT UINT64 *TimerValue, - OUT UINT64 *TimerPeriod OPTIONAL + IN EFI_CPU_ARCH_PROTOCOL *This, + IN UINT32 TimerIndex, + OUT UINT64 *TimerValue, + OUT UINT64 *TimerPeriod OPTIONAL ) { if (TimerValue == NULL) { @@ -373,7 +374,6 @@ EmuGetTimerValue ( return EFI_SUCCESS; } - EFI_STATUS EFIAPI EmuSetMemoryAttributes ( @@ -396,9 +396,6 @@ EmuSetMemoryAttributes ( return EFI_UNSUPPORTED; } - - - /** Callback function for idle events. @@ -410,14 +407,13 @@ EmuSetMemoryAttributes ( VOID EFIAPI IdleLoopEventCallback ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { gEmuThunk->CpuSleep (); } - EFI_STATUS EFIAPI InitializeCpu ( @@ -425,10 +421,10 @@ InitializeCpu ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; - UINT64 Frequency; - EFI_EVENT IdleLoopEvent; - UINTN MaxCpu; + EFI_STATUS Status; + UINT64 Frequency; + EFI_EVENT IdleLoopEvent; + UINTN MaxCpu; // // Retrieve the frequency of the performance counter in Hz. @@ -444,7 +440,6 @@ InitializeCpu ( CpuUpdateSmbios (MaxCpu); - Status = gBS->CreateEventEx ( EVT_NOTIFY_SIGNAL, TPL_NOTIFY, @@ -455,11 +450,12 @@ InitializeCpu ( ); ASSERT_EFI_ERROR (Status); - Status = gBS->InstallMultipleProtocolInterfaces ( &mCpuTemplate.Handle, - &gEfiCpuArchProtocolGuid, &mCpuTemplate.Cpu, - &gEfiCpuIo2ProtocolGuid, &mCpuTemplate.CpuIo, + &gEfiCpuArchProtocolGuid, + &mCpuTemplate.Cpu, + &gEfiCpuIo2ProtocolGuid, + &mCpuTemplate.CpuIo, NULL ); ASSERT_EFI_ERROR (Status); diff --git a/EmulatorPkg/CpuRuntimeDxe/CpuDriver.h b/EmulatorPkg/CpuRuntimeDxe/CpuDriver.h index b191cbd048..cec82a1b6f 100644 --- a/EmulatorPkg/CpuRuntimeDxe/CpuDriver.h +++ b/EmulatorPkg/CpuRuntimeDxe/CpuDriver.h @@ -10,7 +10,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_ #define _CPU_ARCHITECTURAL_PROTOCOL_DRIVER_H_ - #include #include @@ -32,25 +31,22 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - - // // Internal Data Structures // -#define CPU_ARCH_PROT_PRIVATE_SIGNATURE SIGNATURE_32 ('c', 'a', 'p', 'd') +#define CPU_ARCH_PROT_PRIVATE_SIGNATURE SIGNATURE_32 ('c', 'a', 'p', 'd') typedef struct { - UINTN Signature; - EFI_HANDLE Handle; + UINTN Signature; + EFI_HANDLE Handle; - EFI_CPU_ARCH_PROTOCOL Cpu; - EFI_CPU_IO2_PROTOCOL CpuIo; + EFI_CPU_ARCH_PROTOCOL Cpu; + EFI_CPU_IO2_PROTOCOL CpuIo; // // Local Data for CPU interface goes here // - BOOLEAN InterruptState; - + BOOLEAN InterruptState; } CPU_ARCH_PROTOCOL_PRIVATE; #define CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS(a) \ @@ -60,8 +56,6 @@ typedef struct { CPU_ARCH_PROT_PRIVATE_SIGNATURE \ ) - - typedef enum { CPU_STATE_IDLE, CPU_STATE_BLOCKED, @@ -70,84 +64,78 @@ typedef enum { CPU_STATE_FINISHED } PROCESSOR_STATE; - // // Define Individual Processor Data block. // typedef struct { - EFI_PROCESSOR_INFORMATION Info; - EFI_AP_PROCEDURE Procedure; - VOID *Parameter; - VOID *StateLock; - VOID *ProcedureLock; - PROCESSOR_STATE State; - EFI_EVENT CheckThisAPEvent; + EFI_PROCESSOR_INFORMATION Info; + EFI_AP_PROCEDURE Procedure; + VOID *Parameter; + VOID *StateLock; + VOID *ProcedureLock; + PROCESSOR_STATE State; + EFI_EVENT CheckThisAPEvent; } PROCESSOR_DATA_BLOCK; - // // Define MP data block which consumes individual processor block. // typedef struct { - UINTN NumberOfProcessors; - UINTN NumberOfEnabledProcessors; - EFI_EVENT CheckAllAPsEvent; - EFI_EVENT WaitEvent; - UINTN FinishCount; - UINTN StartCount; - EFI_AP_PROCEDURE Procedure; - VOID *ProcedureArgument; - BOOLEAN SingleThread; - UINTN StartedNumber; - PROCESSOR_DATA_BLOCK *ProcessorData; - UINTN Timeout; - UINTN *FailedList; - UINTN FailedListIndex; - BOOLEAN TimeoutActive; + UINTN NumberOfProcessors; + UINTN NumberOfEnabledProcessors; + EFI_EVENT CheckAllAPsEvent; + EFI_EVENT WaitEvent; + UINTN FinishCount; + UINTN StartCount; + EFI_AP_PROCEDURE Procedure; + VOID *ProcedureArgument; + BOOLEAN SingleThread; + UINTN StartedNumber; + PROCESSOR_DATA_BLOCK *ProcessorData; + UINTN Timeout; + UINTN *FailedList; + UINTN FailedListIndex; + BOOLEAN TimeoutActive; } MP_SYSTEM_DATA; - - - - EFI_STATUS EFIAPI CpuMemoryServiceRead ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer ); EFI_STATUS EFIAPI CpuMemoryServiceWrite ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer ); EFI_STATUS EFIAPI CpuIoServiceRead ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 UserAddress, - IN UINTN Count, - IN OUT VOID *UserBuffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 UserAddress, + IN UINTN Count, + IN OUT VOID *UserBuffer ); EFI_STATUS EFIAPI CpuIoServiceWrite ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 UserAddress, - IN UINTN Count, - IN OUT VOID *UserBuffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 UserAddress, + IN UINTN Count, + IN OUT VOID *UserBuffer ); EFI_STATUS @@ -203,10 +191,10 @@ EmuRegisterInterruptHandler ( EFI_STATUS EFIAPI EmuGetTimerValue ( - IN EFI_CPU_ARCH_PROTOCOL *This, - IN UINT32 TimerIndex, - OUT UINT64 *TimerValue, - OUT UINT64 *TimerPeriod OPTIONAL + IN EFI_CPU_ARCH_PROTOCOL *This, + IN UINT32 TimerIndex, + OUT UINT64 *TimerValue, + OUT UINT64 *TimerPeriod OPTIONAL ); EFI_STATUS @@ -220,7 +208,7 @@ EmuSetMemoryAttributes ( EFI_STATUS CpuMpServicesInit ( - OUT UINTN *MaxCores + OUT UINTN *MaxCores ); EFI_STATUS @@ -232,5 +220,4 @@ CpuMpServicesWhoAmI ( extern EFI_MP_SERVICES_PROTOCOL mMpServicesTemplate; - #endif diff --git a/EmulatorPkg/CpuRuntimeDxe/CpuIo.c b/EmulatorPkg/CpuRuntimeDxe/CpuIo.c index 152c260451..417b225b7e 100644 --- a/EmulatorPkg/CpuRuntimeDxe/CpuIo.c +++ b/EmulatorPkg/CpuRuntimeDxe/CpuIo.c @@ -31,22 +31,23 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS CpuIoCheckAddressRange ( - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN VOID *Buffer, - IN UINT64 Limit + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN VOID *Buffer, + IN UINT64 Limit ); EFI_STATUS EFIAPI CpuMemoryServiceRead ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer ) + /*++ Routine Description: @@ -95,12 +96,13 @@ Returns: EFI_STATUS EFIAPI CpuMemoryServiceWrite ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer ) + /*++ Routine Description: @@ -148,12 +150,13 @@ Returns: EFI_STATUS EFIAPI CpuIoServiceRead ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 UserAddress, - IN UINTN Count, - IN OUT VOID *UserBuffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 UserAddress, + IN UINTN Count, + IN OUT VOID *UserBuffer ) + /*++ Routine Description: @@ -186,7 +189,7 @@ Returns: return EFI_INVALID_PARAMETER; } - Address = (UINTN) UserAddress; + Address = (UINTN)UserAddress; if (Width >= EfiCpuIoWidthMaximum) { return EFI_INVALID_PARAMETER; @@ -206,12 +209,13 @@ Returns: EFI_STATUS EFIAPI CpuIoServiceWrite ( - IN EFI_CPU_IO2_PROTOCOL *This, - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 UserAddress, - IN UINTN Count, - IN OUT VOID *UserBuffer + IN EFI_CPU_IO2_PROTOCOL *This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 UserAddress, + IN UINTN Count, + IN OUT VOID *UserBuffer ) + /*++ Routine Description: @@ -248,7 +252,7 @@ Returns: return EFI_INVALID_PARAMETER; } - Address = (UINTN) UserAddress; + Address = (UINTN)UserAddress; if (Width >= EfiCpuIoWidthMaximum) { return EFI_INVALID_PARAMETER; @@ -265,7 +269,6 @@ Returns: return EFI_SUCCESS; } - /*++ Routine Description: @@ -288,14 +291,14 @@ Returns: **/ EFI_STATUS CpuIoCheckAddressRange ( - IN EFI_CPU_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN VOID *Buffer, - IN UINT64 Limit + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN VOID *Buffer, + IN UINT64 Limit ) { - UINTN AlignMask; + UINTN AlignMask; if (Address > Limit) { return EFI_UNSUPPORTED; @@ -304,7 +307,7 @@ CpuIoCheckAddressRange ( // // For FiFo type, the target address won't increase during the access, so treat count as 1 // - if (Width >= EfiCpuIoWidthFifoUint8 && Width <= EfiCpuIoWidthFifoUint64) { + if ((Width >= EfiCpuIoWidthFifoUint8) && (Width <= EfiCpuIoWidthFifoUint64)) { Count = 1; } @@ -314,11 +317,9 @@ CpuIoCheckAddressRange ( } AlignMask = (1 << Width) - 1; - if ((UINTN) Buffer & AlignMask) { + if ((UINTN)Buffer & AlignMask) { return EFI_UNSUPPORTED; } return EFI_SUCCESS; } - - diff --git a/EmulatorPkg/CpuRuntimeDxe/MpService.c b/EmulatorPkg/CpuRuntimeDxe/MpService.c index 42f94ada27..122019f04e 100644 --- a/EmulatorPkg/CpuRuntimeDxe/MpService.c +++ b/EmulatorPkg/CpuRuntimeDxe/MpService.c @@ -37,13 +37,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "CpuDriver.h" - -MP_SYSTEM_DATA gMPSystem; -EMU_THREAD_THUNK_PROTOCOL *gThread = NULL; -EFI_EVENT gReadToBootEvent; -BOOLEAN gReadToBoot = FALSE; -UINTN gPollInterval; - +MP_SYSTEM_DATA gMPSystem; +EMU_THREAD_THUNK_PROTOCOL *gThread = NULL; +EFI_EVENT gReadToBootEvent; +BOOLEAN gReadToBoot = FALSE; +UINTN gPollInterval; BOOLEAN IsBSP ( @@ -61,7 +59,6 @@ IsBSP ( return (gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag & PROCESSOR_AS_BSP_BIT) != 0; } - VOID SetApProcedure ( IN PROCESSOR_DATA_BLOCK *Processor, @@ -70,15 +67,14 @@ SetApProcedure ( ) { gThread->MutexLock (Processor->ProcedureLock); - Processor->Parameter = ProcedureArgument; - Processor->Procedure = Procedure; + Processor->Parameter = ProcedureArgument; + Processor->Procedure = Procedure; gThread->MutexUnlock (Processor->ProcedureLock); } - EFI_STATUS GetNextBlockedNumber ( - OUT UINTN *NextNumber + OUT UINTN *NextNumber ) { UINTN Number; @@ -116,16 +112,17 @@ GetNextBlockedNumber ( **/ UINTN CalculateAndStallInterval ( - IN UINTN Timeout + IN UINTN Timeout ) { - UINTN StallTime; + UINTN StallTime; - if (Timeout < gPollInterval && Timeout != 0) { + if ((Timeout < gPollInterval) && (Timeout != 0)) { StallTime = Timeout; } else { StallTime = gPollInterval; } + gBS->Stall (StallTime); return StallTime; @@ -188,8 +185,6 @@ CpuMpServicesGetNumberOfProcessors ( return EFI_SUCCESS; } - - /** Gets detailed MP-related information on the requested processor at the instant this call is made. This service may only be called from the BSP. @@ -240,7 +235,6 @@ CpuMpServicesGetProcessorInfo ( return EFI_SUCCESS; } - /** This service executes a caller provided function on all enabled APs. APs can run either simultaneously or one at a time in sequence. This service supports @@ -397,7 +391,6 @@ CpuMpServicesStartupAllAps ( PROCESSOR_STATE ProcessorState; UINTN Timeout; - if (!IsBSP ()) { return EFI_DEVICE_ERROR; } @@ -425,12 +418,14 @@ CpuMpServicesStartupAllAps ( // Skip Disabled processors continue; } - gThread->MutexLock(ProcessorData->StateLock); + + gThread->MutexLock (ProcessorData->StateLock); if (ProcessorData->State != CPU_STATE_IDLE) { gThread->MutexUnlock (ProcessorData->StateLock); return EFI_NOT_READY; } - gThread->MutexUnlock(ProcessorData->StateLock); + + gThread->MutexUnlock (ProcessorData->StateLock); } if (FailedCpuList != NULL) { @@ -438,19 +433,20 @@ CpuMpServicesStartupAllAps ( if (gMPSystem.FailedList == NULL) { return EFI_OUT_OF_RESOURCES; } + SetMemN (gMPSystem.FailedList, (gMPSystem.NumberOfProcessors + 1) * sizeof (UINTN), END_OF_CPU_LIST); gMPSystem.FailedListIndex = 0; - *FailedCpuList = gMPSystem.FailedList; + *FailedCpuList = gMPSystem.FailedList; } Timeout = TimeoutInMicroseconds; - ProcessorData = NULL; + ProcessorData = NULL; - gMPSystem.FinishCount = 0; - gMPSystem.StartCount = 0; - gMPSystem.SingleThread = SingleThread; - APInitialState = CPU_STATE_READY; + gMPSystem.FinishCount = 0; + gMPSystem.StartCount = 0; + gMPSystem.SingleThread = SingleThread; + APInitialState = CPU_STATE_READY; for (Number = 0; Number < gMPSystem.NumberOfProcessors; Number++) { ProcessorData = &gMPSystem.ProcessorData[Number]; @@ -472,7 +468,7 @@ CpuMpServicesStartupAllAps ( // state 1 by 1, until the previous 1 finished its task // if not "SingleThread", all APs are put to ready state from the beginning // - gThread->MutexLock(ProcessorData->StateLock); + gThread->MutexLock (ProcessorData->StateLock); ASSERT (ProcessorData->State == CPU_STATE_IDLE); ProcessorData->State = APInitialState; gThread->MutexUnlock (ProcessorData->StateLock); @@ -487,7 +483,7 @@ CpuMpServicesStartupAllAps ( for (Number = 0; Number < gMPSystem.NumberOfProcessors; Number++) { ProcessorData = &gMPSystem.ProcessorData[Number]; if ((ProcessorData->Info.StatusFlag & PROCESSOR_AS_BSP_BIT) == PROCESSOR_AS_BSP_BIT) { - // Skip BSP + // Skip BSP continue; } @@ -513,20 +509,19 @@ CpuMpServicesStartupAllAps ( gMPSystem.WaitEvent = WaitEvent; gMPSystem.Timeout = TimeoutInMicroseconds; gMPSystem.TimeoutActive = (BOOLEAN)(TimeoutInMicroseconds != 0); - Status = gBS->SetTimer ( - gMPSystem.CheckAllAPsEvent, - TimerPeriodic, - gPollInterval - ); + Status = gBS->SetTimer ( + gMPSystem.CheckAllAPsEvent, + TimerPeriodic, + gPollInterval + ); return Status; - } while (TRUE) { for (Number = 0; Number < gMPSystem.NumberOfProcessors; Number++) { ProcessorData = &gMPSystem.ProcessorData[Number]; if ((ProcessorData->Info.StatusFlag & PROCESSOR_AS_BSP_BIT) == PROCESSOR_AS_BSP_BIT) { - // Skip BSP + // Skip BSP continue; } @@ -540,29 +535,29 @@ CpuMpServicesStartupAllAps ( gThread->MutexUnlock (ProcessorData->StateLock); switch (ProcessorState) { - case CPU_STATE_READY: - SetApProcedure (ProcessorData, Procedure, ProcedureArgument); - break; - - case CPU_STATE_FINISHED: - gMPSystem.FinishCount++; - if (SingleThread) { - Status = GetNextBlockedNumber (&NextNumber); - if (!EFI_ERROR (Status)) { - gThread->MutexLock (gMPSystem.ProcessorData[NextNumber].StateLock); - gMPSystem.ProcessorData[NextNumber].State = CPU_STATE_READY; - gThread->MutexUnlock (gMPSystem.ProcessorData[NextNumber].StateLock); + case CPU_STATE_READY: + SetApProcedure (ProcessorData, Procedure, ProcedureArgument); + break; + + case CPU_STATE_FINISHED: + gMPSystem.FinishCount++; + if (SingleThread) { + Status = GetNextBlockedNumber (&NextNumber); + if (!EFI_ERROR (Status)) { + gThread->MutexLock (gMPSystem.ProcessorData[NextNumber].StateLock); + gMPSystem.ProcessorData[NextNumber].State = CPU_STATE_READY; + gThread->MutexUnlock (gMPSystem.ProcessorData[NextNumber].StateLock); + } } - } - gThread->MutexLock (ProcessorData->StateLock); - ProcessorData->State = CPU_STATE_IDLE; - gThread->MutexUnlock (ProcessorData->StateLock); + gThread->MutexLock (ProcessorData->StateLock); + ProcessorData->State = CPU_STATE_IDLE; + gThread->MutexUnlock (ProcessorData->StateLock); - break; + break; - default: - break; + default: + break; } } @@ -590,7 +585,6 @@ Done: return EFI_SUCCESS; } - /** This service lets the caller get one enabled AP to execute a caller-provided function. The caller can request the BSP to either wait for the completion @@ -689,7 +683,7 @@ CpuMpServicesStartupThisAP ( OUT BOOLEAN *Finished OPTIONAL ) { - UINTN Timeout; + UINTN Timeout; if (!IsBSP ()) { return EFI_DEVICE_ERROR; @@ -711,12 +705,13 @@ CpuMpServicesStartupThisAP ( return EFI_INVALID_PARAMETER; } - gThread->MutexLock(gMPSystem.ProcessorData[ProcessorNumber].StateLock); + gThread->MutexLock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); if (gMPSystem.ProcessorData[ProcessorNumber].State != CPU_STATE_IDLE) { - gThread->MutexUnlock(gMPSystem.ProcessorData[ProcessorNumber].StateLock); + gThread->MutexUnlock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); return EFI_NOT_READY; } - gThread->MutexUnlock(gMPSystem.ProcessorData[ProcessorNumber].StateLock); + + gThread->MutexUnlock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); if ((WaitEvent != NULL) && gReadToBoot) { return EFI_UNSUPPORTED; @@ -724,8 +719,8 @@ CpuMpServicesStartupThisAP ( Timeout = TimeoutInMicroseconds; - gMPSystem.StartCount = 1; - gMPSystem.FinishCount = 0; + gMPSystem.StartCount = 1; + gMPSystem.FinishCount = 0; SetApProcedure (&gMPSystem.ProcessorData[ProcessorNumber], Procedure, ProcedureArgument); @@ -759,10 +754,8 @@ CpuMpServicesStartupThisAP ( } return EFI_SUCCESS; - } - /** This service switches the requested AP to be the BSP from that point onward. This service changes the BSP for all purposes. This call can only be performed @@ -806,7 +799,7 @@ CpuMpServicesSwitchBSP ( IN BOOLEAN EnableOldBSP ) { - UINTN Index; + UINTN Index; if (!IsBSP ()) { return EFI_DEVICE_ERROR; @@ -829,6 +822,7 @@ CpuMpServicesSwitchBSP ( break; } } + ASSERT (Index != gMPSystem.NumberOfProcessors); gThread->MutexLock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); @@ -836,6 +830,7 @@ CpuMpServicesSwitchBSP ( gThread->MutexUnlock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); return EFI_NOT_READY; } + gThread->MutexUnlock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); // Skip for now as we need switch a bunch of stack stuff around and it's complex @@ -843,7 +838,6 @@ CpuMpServicesSwitchBSP ( return EFI_NOT_READY; } - /** This service lets the caller enable or disable an AP from this point onward. This service may only be called from the BSP. @@ -911,17 +905,20 @@ CpuMpServicesEnableDisableAP ( gThread->MutexUnlock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); return EFI_UNSUPPORTED; } + gThread->MutexUnlock (gMPSystem.ProcessorData[ProcessorNumber].StateLock); if (EnableAP) { if ((gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag & PROCESSOR_ENABLED_BIT) == 0 ) { gMPSystem.NumberOfEnabledProcessors++; } + gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag |= PROCESSOR_ENABLED_BIT; } else { if ((gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag & PROCESSOR_ENABLED_BIT) == PROCESSOR_ENABLED_BIT ) { gMPSystem.NumberOfEnabledProcessors--; } + gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag &= ~PROCESSOR_ENABLED_BIT; } @@ -933,7 +930,6 @@ CpuMpServicesEnableDisableAP ( return EFI_SUCCESS; } - /** This return the handle number for the calling processor. This service may be called from the BSP and APs. @@ -983,8 +979,6 @@ CpuMpServicesWhoAmI ( return EFI_SUCCESS; } - - EFI_MP_SERVICES_PROTOCOL mMpServicesTemplate = { CpuMpServicesGetNumberOfProcessors, CpuMpServicesGetProcessorInfo, @@ -995,8 +989,6 @@ EFI_MP_SERVICES_PROTOCOL mMpServicesTemplate = { CpuMpServicesWhoAmI }; - - /*++ If timeout occurs in StartupAllAps(), a timer is set, which invokes this procedure periodically to check whether all APs have finished. @@ -1006,8 +998,8 @@ EFI_MP_SERVICES_PROTOCOL mMpServicesTemplate = { VOID EFIAPI CpuCheckAllAPsStatus ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { UINTN ProcessorNumber; @@ -1026,7 +1018,7 @@ CpuCheckAllAPsStatus ( for (ProcessorNumber = 0; ProcessorNumber < gMPSystem.NumberOfProcessors; ProcessorNumber++) { ProcessorData = &gMPSystem.ProcessorData[ProcessorNumber]; if ((ProcessorData->Info.StatusFlag & PROCESSOR_AS_BSP_BIT) == PROCESSOR_AS_BSP_BIT) { - // Skip BSP + // Skip BSP continue; } @@ -1041,39 +1033,40 @@ CpuCheckAllAPsStatus ( // So, try lock it. If we can get it, cool, do our thing. // otherwise, just dump out & try again on the next iteration. Status = gThread->MutexTryLock (ProcessorData->StateLock); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return; } + ProcessorState = ProcessorData->State; gThread->MutexUnlock (ProcessorData->StateLock); switch (ProcessorState) { - case CPU_STATE_FINISHED: - if (gMPSystem.SingleThread) { - Status = GetNextBlockedNumber (&NextNumber); - if (!EFI_ERROR (Status)) { - NextData = &gMPSystem.ProcessorData[NextNumber]; + case CPU_STATE_FINISHED: + if (gMPSystem.SingleThread) { + Status = GetNextBlockedNumber (&NextNumber); + if (!EFI_ERROR (Status)) { + NextData = &gMPSystem.ProcessorData[NextNumber]; - gThread->MutexLock (NextData->StateLock); - NextData->State = CPU_STATE_READY; - gThread->MutexUnlock (NextData->StateLock); + gThread->MutexLock (NextData->StateLock); + NextData->State = CPU_STATE_READY; + gThread->MutexUnlock (NextData->StateLock); - SetApProcedure (NextData, gMPSystem.Procedure, gMPSystem.ProcedureArgument); + SetApProcedure (NextData, gMPSystem.Procedure, gMPSystem.ProcedureArgument); + } } - } - gThread->MutexLock (ProcessorData->StateLock); - ProcessorData->State = CPU_STATE_IDLE; - gThread->MutexUnlock (ProcessorData->StateLock); - gMPSystem.FinishCount++; - break; + gThread->MutexLock (ProcessorData->StateLock); + ProcessorData->State = CPU_STATE_IDLE; + gThread->MutexUnlock (ProcessorData->StateLock); + gMPSystem.FinishCount++; + break; - default: - break; + default: + break; } } - if (gMPSystem.TimeoutActive && gMPSystem.Timeout == 0) { + if (gMPSystem.TimeoutActive && (gMPSystem.Timeout == 0)) { // // Timeout // @@ -1081,7 +1074,7 @@ CpuCheckAllAPsStatus ( for (ProcessorNumber = 0; ProcessorNumber < gMPSystem.NumberOfProcessors; ProcessorNumber++) { ProcessorData = &gMPSystem.ProcessorData[ProcessorNumber]; if ((ProcessorData->Info.StatusFlag & PROCESSOR_AS_BSP_BIT) == PROCESSOR_AS_BSP_BIT) { - // Skip BSP + // Skip BSP continue; } @@ -1092,9 +1085,10 @@ CpuCheckAllAPsStatus ( // Mark the Status = gThread->MutexTryLock (ProcessorData->StateLock); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return; } + ProcessorState = ProcessorData->State; gThread->MutexUnlock (ProcessorData->StateLock); @@ -1104,17 +1098,20 @@ CpuCheckAllAPsStatus ( if (gMPSystem.FailedList[Cpu] == END_OF_CPU_LIST) { break; } + if (gMPSystem.FailedList[ProcessorNumber] == Cpu) { Found = TRUE; break; } } + if (!Found) { gMPSystem.FailedList[gMPSystem.FailedListIndex++] = Cpu; } } } } + // Force terminal exit gMPSystem.FinishCount = gMPSystem.StartCount; } @@ -1138,21 +1135,21 @@ CpuCheckAllAPsStatus ( Status = gBS->SignalEvent (gMPSystem.WaitEvent); - return ; + return; } VOID EFIAPI CpuCheckThisAPStatus ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { EFI_STATUS Status; PROCESSOR_DATA_BLOCK *ProcessorData; PROCESSOR_STATE ProcessorState; - ProcessorData = (PROCESSOR_DATA_BLOCK *) Context; + ProcessorData = (PROCESSOR_DATA_BLOCK *)Context; // // This is an Interrupt Service routine. @@ -1162,9 +1159,10 @@ CpuCheckThisAPStatus ( // otherwise, just dump out & try again on the next iteration. // Status = gThread->MutexTryLock (ProcessorData->StateLock); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return; } + ProcessorState = ProcessorData->State; gThread->MutexUnlock (ProcessorData->StateLock); @@ -1180,10 +1178,9 @@ CpuCheckThisAPStatus ( gThread->MutexUnlock (ProcessorData->StateLock); } - return ; + return; } - /*++ This function is called by all processors (both BSP and AP) once and collects MP related data @@ -1195,25 +1192,25 @@ CpuCheckThisAPStatus ( --*/ EFI_STATUS FillInProcessorInformation ( - IN BOOLEAN BSP, - IN UINTN ProcessorNumber + IN BOOLEAN BSP, + IN UINTN ProcessorNumber ) { - gMPSystem.ProcessorData[ProcessorNumber].Info.ProcessorId = gThread->Self (); - gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag = PROCESSOR_ENABLED_BIT | PROCESSOR_HEALTH_STATUS_BIT; + gMPSystem.ProcessorData[ProcessorNumber].Info.ProcessorId = gThread->Self (); + gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag = PROCESSOR_ENABLED_BIT | PROCESSOR_HEALTH_STATUS_BIT; if (BSP) { gMPSystem.ProcessorData[ProcessorNumber].Info.StatusFlag |= PROCESSOR_AS_BSP_BIT; } - gMPSystem.ProcessorData[ProcessorNumber].Info.Location.Package = (UINT32) ProcessorNumber; + gMPSystem.ProcessorData[ProcessorNumber].Info.Location.Package = (UINT32)ProcessorNumber; gMPSystem.ProcessorData[ProcessorNumber].Info.Location.Core = 0; gMPSystem.ProcessorData[ProcessorNumber].Info.Location.Thread = 0; - gMPSystem.ProcessorData[ProcessorNumber].State = BSP ? CPU_STATE_BUSY : CPU_STATE_IDLE; + gMPSystem.ProcessorData[ProcessorNumber].State = BSP ? CPU_STATE_BUSY : CPU_STATE_IDLE; - gMPSystem.ProcessorData[ProcessorNumber].Procedure = NULL; - gMPSystem.ProcessorData[ProcessorNumber].Parameter = NULL; - gMPSystem.ProcessorData[ProcessorNumber].StateLock = gThread->MutexInit (); - gMPSystem.ProcessorData[ProcessorNumber].ProcedureLock = gThread->MutexInit (); + gMPSystem.ProcessorData[ProcessorNumber].Procedure = NULL; + gMPSystem.ProcessorData[ProcessorNumber].Parameter = NULL; + gMPSystem.ProcessorData[ProcessorNumber].StateLock = gThread->MutexInit (); + gMPSystem.ProcessorData[ProcessorNumber].ProcedureLock = gThread->MutexInit (); return EFI_SUCCESS; } @@ -1230,7 +1227,7 @@ CpuDriverApIdolLoop ( PROCESSOR_DATA_BLOCK *ProcessorData; ProcessorNumber = (UINTN)Context; - ProcessorData = &gMPSystem.ProcessorData[ProcessorNumber]; + ProcessorData = &gMPSystem.ProcessorData[ProcessorNumber]; ProcessorData->Info.ProcessorId = gThread->Self (); @@ -1267,15 +1264,13 @@ CpuDriverApIdolLoop ( return 0; } - EFI_STATUS InitializeMpSystemData ( - IN UINTN NumberOfProcessors + IN UINTN NumberOfProcessors ) { - EFI_STATUS Status; - UINTN Index; - + EFI_STATUS Status; + UINTN Index; // // Clear the data structure area first. @@ -1285,8 +1280,8 @@ InitializeMpSystemData ( // // First BSP fills and inits all known values, including it's own records. // - gMPSystem.NumberOfProcessors = NumberOfProcessors; - gMPSystem.NumberOfEnabledProcessors = NumberOfProcessors; + gMPSystem.NumberOfProcessors = NumberOfProcessors; + gMPSystem.NumberOfEnabledProcessors = NumberOfProcessors; gMPSystem.ProcessorData = AllocateZeroPool (gMPSystem.NumberOfProcessors * sizeof (PROCESSOR_DATA_BLOCK)); ASSERT (gMPSystem.ProcessorData != NULL); @@ -1302,10 +1297,9 @@ InitializeMpSystemData ( ); ASSERT_EFI_ERROR (Status); - for (Index = 0; Index < gMPSystem.NumberOfProcessors; Index++) { if ((gMPSystem.ProcessorData[Index].Info.StatusFlag & PROCESSOR_AS_BSP_BIT) == PROCESSOR_AS_BSP_BIT) { - // Skip BSP + // Skip BSP continue; } @@ -1318,21 +1312,18 @@ InitializeMpSystemData ( (VOID *)Index ); - Status = gBS->CreateEvent ( - EVT_TIMER | EVT_NOTIFY_SIGNAL, - TPL_CALLBACK, - CpuCheckThisAPStatus, - (VOID *) &gMPSystem.ProcessorData[Index], - &gMPSystem.ProcessorData[Index].CheckThisAPEvent - ); + EVT_TIMER | EVT_NOTIFY_SIGNAL, + TPL_CALLBACK, + CpuCheckThisAPStatus, + (VOID *)&gMPSystem.ProcessorData[Index], + &gMPSystem.ProcessorData[Index].CheckThisAPEvent + ); } return EFI_SUCCESS; } - - /** Invoke a notification event @@ -1344,32 +1335,30 @@ InitializeMpSystemData ( VOID EFIAPI CpuReadToBootFunction ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { gReadToBoot = TRUE; } - - EFI_STATUS CpuMpServicesInit ( - OUT UINTN *MaxCpus + OUT UINTN *MaxCpus ) { - EFI_STATUS Status; - EFI_HANDLE Handle; - EMU_IO_THUNK_PROTOCOL *IoThunk; + EFI_STATUS Status; + EFI_HANDLE Handle; + EMU_IO_THUNK_PROTOCOL *IoThunk; *MaxCpus = 1; // BSP - IoThunk = GetIoThunkInstance (&gEmuThreadThunkProtocolGuid, 0); + IoThunk = GetIoThunkInstance (&gEmuThreadThunkProtocolGuid, 0); if (IoThunk != NULL) { Status = IoThunk->Open (IoThunk); if (!EFI_ERROR (Status)) { if (IoThunk->ConfigString != NULL) { *MaxCpus += StrDecimalToUintn (IoThunk->ConfigString); - gThread = IoThunk->Interface; + gThread = IoThunk->Interface; } } } @@ -1379,9 +1368,9 @@ CpuMpServicesInit ( return EFI_SUCCESS; } - gPollInterval = (UINTN) PcdGet64 (PcdEmuMpServicesPollingInterval); + gPollInterval = (UINTN)PcdGet64 (PcdEmuMpServicesPollingInterval); - Status = InitializeMpSystemData (*MaxCpus); + Status = InitializeMpSystemData (*MaxCpus); if (EFI_ERROR (Status)) { return Status; } @@ -1395,10 +1384,9 @@ CpuMpServicesInit ( Handle = NULL; Status = gBS->InstallMultipleProtocolInterfaces ( &Handle, - &gEfiMpServiceProtocolGuid, &mMpServicesTemplate, + &gEfiMpServiceProtocolGuid, + &mMpServicesTemplate, NULL ); return Status; } - - diff --git a/EmulatorPkg/EmuBlockIoDxe/ComponentName.c b/EmulatorPkg/EmuBlockIoDxe/ComponentName.c index 7c61fdfd78..76533e1fbb 100644 --- a/EmulatorPkg/EmuBlockIoDxe/ComponentName.c +++ b/EmulatorPkg/EmuBlockIoDxe/ComponentName.c @@ -16,6 +16,7 @@ Abstract: // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -63,7 +64,6 @@ EmuBlockIoComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -135,17 +135,17 @@ EmuBlockIoComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuBlockIoComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuBlockIoComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuBlockIoComponentName = { EmuBlockIoComponentNameGetDriverName, EmuBlockIoComponentNameGetControllerName, "eng" @@ -154,16 +154,15 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuBlockIoCompon // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuBlockIoComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) EmuBlockIoComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) EmuBlockIoComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuBlockIoComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)EmuBlockIoComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)EmuBlockIoComponentNameGetControllerName, "en" }; - -EFI_UNICODE_STRING_TABLE mEmuBlockIoDriverNameTable[] = { +EFI_UNICODE_STRING_TABLE mEmuBlockIoDriverNameTable[] = { { "eng;en", L"Emu Block I/O Driver" }, - { NULL , NULL } + { NULL, NULL } }; /** @@ -214,12 +213,12 @@ EmuBlockIoComponentNameGetDriverName ( ) { return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mEmuBlockIoDriverNameTable, - DriverName, + Language, + This->SupportedLanguages, + mEmuBlockIoDriverNameTable, + DriverName, (BOOLEAN)(This == &gEmuBlockIoComponentName) - ); + ); } /** @@ -293,16 +292,16 @@ EmuBlockIoComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuBlockIoComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - EMU_BLOCK_IO_PRIVATE *Private; + EFI_STATUS Status; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EMU_BLOCK_IO_PRIVATE *Private; // // This is a device driver, so ChildHandle must be NULL. @@ -310,6 +309,7 @@ EmuBlockIoComponentNameGetControllerName ( if (ChildHandle != NULL) { return EFI_UNSUPPORTED; } + // // Make sure this driver is currently managing ControllerHandle // @@ -321,6 +321,7 @@ EmuBlockIoComponentNameGetControllerName ( if (EFI_ERROR (Status)) { return EFI_UNSUPPORTED; } + // // Get our context back // @@ -339,10 +340,10 @@ EmuBlockIoComponentNameGetControllerName ( Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (BlockIo); return LookupUnicodeString2 ( - Language, + Language, This->SupportedLanguages, Private->ControllerNameTable, ControllerName, (BOOLEAN)(This == &gEmuBlockIoComponentName) - ); + ); } diff --git a/EmulatorPkg/EmuBlockIoDxe/DriverConfiguration.c b/EmulatorPkg/EmuBlockIoDxe/DriverConfiguration.c index 86648dd445..a3ec1a5412 100644 --- a/EmulatorPkg/EmuBlockIoDxe/DriverConfiguration.c +++ b/EmulatorPkg/EmuBlockIoDxe/DriverConfiguration.c @@ -19,35 +19,35 @@ Abstract: EFI_STATUS EFIAPI EmuBlockIoDriverConfigurationSetOptions ( - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired + IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired ); EFI_STATUS EFIAPI EmuBlockIoDriverConfigurationOptionsValid ( - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL + IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL ); EFI_STATUS EFIAPI EmuBlockIoDriverConfigurationForceDefaults ( - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN UINT32 DefaultType, - OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired + IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN UINT32 DefaultType, + OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired ); // // EFI Driver Configuration Protocol // -EFI_DRIVER_CONFIGURATION_PROTOCOL gEmuBlockIoDriverConfiguration = { +EFI_DRIVER_CONFIGURATION_PROTOCOL gEmuBlockIoDriverConfiguration = { EmuBlockIoDriverConfigurationSetOptions, EmuBlockIoDriverConfigurationOptionsValid, EmuBlockIoDriverConfigurationForceDefaults, @@ -103,20 +103,20 @@ EFI_DRIVER_CONFIGURATION_PROTOCOL gEmuBlockIoDriverConfiguration = { EFI_STATUS EFIAPI EmuBlockIoDriverConfigurationSetOptions ( - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired + IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired ) { - EFI_STATUS Status; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - CHAR8 *SupportedLanguage; + EFI_STATUS Status; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + CHAR8 *SupportedLanguage; SupportedLanguage = This->SupportedLanguages; - Status = EFI_UNSUPPORTED; + Status = EFI_UNSUPPORTED; while (*SupportedLanguage != 0) { if (AsciiStrnCmp (Language, SupportedLanguage, 3) == 0) { Status = EFI_SUCCESS; @@ -129,7 +129,7 @@ EmuBlockIoDriverConfigurationSetOptions ( return Status; } - if (ActionRequired == NULL || ControllerHandle == NULL) { + if ((ActionRequired == NULL) || (ControllerHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -151,11 +151,11 @@ EmuBlockIoDriverConfigurationSetOptions ( if (!EFI_ERROR (Status)) { gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - gEmuBlockIoDriverBinding.DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuIoThunkProtocolGuid, + gEmuBlockIoDriverBinding.DriverBindingHandle, + ControllerHandle + ); return EFI_UNSUPPORTED; } @@ -206,13 +206,13 @@ EmuBlockIoDriverConfigurationSetOptions ( EFI_STATUS EFIAPI EmuBlockIoDriverConfigurationOptionsValid ( - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL + IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL ) { - EFI_STATUS Status; - EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_STATUS Status; + EFI_BLOCK_IO_PROTOCOL *BlockIo; if (ChildHandle != NULL) { return EFI_UNSUPPORTED; @@ -236,11 +236,11 @@ EmuBlockIoDriverConfigurationOptionsValid ( if (!EFI_ERROR (Status)) { gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - gEmuBlockIoDriverBinding.DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuIoThunkProtocolGuid, + gEmuBlockIoDriverBinding.DriverBindingHandle, + ControllerHandle + ); return EFI_UNSUPPORTED; } @@ -280,21 +280,21 @@ EmuBlockIoDriverConfigurationOptionsValid ( EFI_STATUS EFIAPI EmuBlockIoDriverConfigurationForceDefaults ( - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN UINT32 DefaultType, - OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired + IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN UINT32 DefaultType, + OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired ) { - EFI_STATUS Status; - EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_STATUS Status; + EFI_BLOCK_IO_PROTOCOL *BlockIo; if (ChildHandle != NULL) { return EFI_UNSUPPORTED; } - if (ActionRequired == NULL || ControllerHandle == NULL) { + if ((ActionRequired == NULL) || (ControllerHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -312,11 +312,11 @@ EmuBlockIoDriverConfigurationForceDefaults ( if (!EFI_ERROR (Status)) { gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - gEmuBlockIoDriverBinding.DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuIoThunkProtocolGuid, + gEmuBlockIoDriverBinding.DriverBindingHandle, + ControllerHandle + ); return EFI_UNSUPPORTED; } diff --git a/EmulatorPkg/EmuBlockIoDxe/DriverDiagnostics.c b/EmulatorPkg/EmuBlockIoDxe/DriverDiagnostics.c index 84e6b19329..b107dba37b 100644 --- a/EmulatorPkg/EmuBlockIoDxe/DriverDiagnostics.c +++ b/EmulatorPkg/EmuBlockIoDxe/DriverDiagnostics.c @@ -19,20 +19,20 @@ Abstract: EFI_STATUS EFIAPI EmuBlockIoDriverDiagnosticsRunDiagnostics ( - IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, - IN CHAR8 *Language, - OUT EFI_GUID **ErrorType, - OUT UINTN *BufferSize, - OUT CHAR16 **Buffer + IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, + IN CHAR8 *Language, + OUT EFI_GUID **ErrorType, + OUT UINTN *BufferSize, + OUT CHAR16 **Buffer ); // // EFI Driver Diagnostics Protocol // -EFI_DRIVER_DIAGNOSTICS_PROTOCOL gEmuBlockIoDriverDiagnostics = { +EFI_DRIVER_DIAGNOSTICS_PROTOCOL gEmuBlockIoDriverDiagnostics = { EmuBlockIoDriverDiagnosticsRunDiagnostics, "eng" }; @@ -40,23 +40,24 @@ EFI_DRIVER_DIAGNOSTICS_PROTOCOL gEmuBlockIoDriverDiagnostics = { // // EFI Driver Diagnostics 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gEmuBlockIoDriverDiagnostics2 = { - (EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS) EmuBlockIoDriverDiagnosticsRunDiagnostics, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gEmuBlockIoDriverDiagnostics2 = { + (EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS)EmuBlockIoDriverDiagnosticsRunDiagnostics, "en" }; EFI_STATUS EFIAPI EmuBlockIoDriverDiagnosticsRunDiagnostics ( - IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, - IN CHAR8 *Language, - OUT EFI_GUID **ErrorType, - OUT UINTN *BufferSize, - OUT CHAR16 **Buffer + IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, + IN CHAR8 *Language, + OUT EFI_GUID **ErrorType, + OUT UINTN *BufferSize, + OUT CHAR16 **Buffer ) + /*++ Routine Description: @@ -117,24 +118,24 @@ EmuBlockIoDriverDiagnosticsRunDiagnostics ( --*/ { - EFI_STATUS Status; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - CHAR8 *SupportedLanguages; - BOOLEAN Iso639Language; - BOOLEAN Found; - UINTN Index; - - if (Language == NULL || - ErrorType == NULL || - Buffer == NULL || - ControllerHandle == NULL || - BufferSize == NULL) { - + EFI_STATUS Status; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + CHAR8 *SupportedLanguages; + BOOLEAN Iso639Language; + BOOLEAN Found; + UINTN Index; + + if ((Language == NULL) || + (ErrorType == NULL) || + (Buffer == NULL) || + (ControllerHandle == NULL) || + (BufferSize == NULL)) + { return EFI_INVALID_PARAMETER; } SupportedLanguages = This->SupportedLanguages; - Iso639Language = (BOOLEAN)(This == &gEmuBlockIoDriverDiagnostics); + Iso639Language = (BOOLEAN)(This == &gEmuBlockIoDriverDiagnostics); // // Make sure Language is in the set of Supported Languages // @@ -143,19 +144,25 @@ EmuBlockIoDriverDiagnosticsRunDiagnostics ( if (Iso639Language) { if (CompareMem (Language, SupportedLanguages, 3) == 0) { Found = TRUE; - break; - } + break; + } + SupportedLanguages += 3; } else { - for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++); - if ((AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) { + for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++) { + } + + if ((AsciiStrnCmp (SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) { Found = TRUE; break; - } + } + SupportedLanguages += Index; - for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++); + for ( ; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++) { + } } } + // // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED // @@ -168,7 +175,7 @@ EmuBlockIoDriverDiagnosticsRunDiagnostics ( if (DiagnosticType != EfiDriverDiagnosticTypeStandard) { *ErrorType = &gEfiBlockIoProtocolGuid; *BufferSize = 0x60; - Buffer = AllocatePool ((UINTN) (*BufferSize)); + Buffer = AllocatePool ((UINTN)(*BufferSize)); CopyMem (*Buffer, L"Windows Block I/O Driver Diagnostics Failed\n", *BufferSize); return EFI_DEVICE_ERROR; } @@ -194,11 +201,11 @@ EmuBlockIoDriverDiagnosticsRunDiagnostics ( if (!EFI_ERROR (Status)) { gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - gEmuBlockIoDriverBinding.DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuIoThunkProtocolGuid, + gEmuBlockIoDriverBinding.DriverBindingHandle, + ControllerHandle + ); return EFI_UNSUPPORTED; } diff --git a/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.c b/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.c index 96424a82ae..4e8caf2514 100644 --- a/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.c +++ b/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.c @@ -7,7 +7,6 @@ bbe #include "EmuBlockIo.h" - /** Reset the block device hardware. @@ -28,9 +27,9 @@ EmuBlockIo2Reset ( IN BOOLEAN ExtendedVerification ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This); @@ -78,17 +77,17 @@ EmuBlockIo2Reset ( EFI_STATUS EFIAPI EmuBlockIo2ReadBlocksEx ( - IN EFI_BLOCK_IO2_PROTOCOL *This, - IN UINT32 MediaId, - IN EFI_LBA LBA, - IN OUT EFI_BLOCK_IO2_TOKEN *Token, - IN UINTN BufferSize, - OUT VOID *Buffer + IN EFI_BLOCK_IO2_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA LBA, + IN OUT EFI_BLOCK_IO2_TOKEN *Token, + IN UINTN BufferSize, + OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This); @@ -100,7 +99,6 @@ EmuBlockIo2ReadBlocksEx ( return Status; } - /** Write BufferSize bytes from Lba into Buffer. @@ -136,16 +134,16 @@ EFI_STATUS EFIAPI EmuBlockIo2WriteBlocksEx ( IN EFI_BLOCK_IO2_PROTOCOL *This, - IN UINT32 MediaId, - IN EFI_LBA LBA, - IN OUT EFI_BLOCK_IO2_TOKEN *Token, - IN UINTN BufferSize, - IN VOID *Buffer + IN UINT32 MediaId, + IN EFI_LBA LBA, + IN OUT EFI_BLOCK_IO2_TOKEN *Token, + IN UINTN BufferSize, + IN VOID *Buffer ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This); @@ -157,8 +155,6 @@ EmuBlockIo2WriteBlocksEx ( return Status; } - - /** Flush the Block Device. @@ -184,13 +180,13 @@ EmuBlockIo2WriteBlocksEx ( EFI_STATUS EFIAPI EmuBlockIo2Flush ( - IN EFI_BLOCK_IO2_PROTOCOL *This, - IN OUT EFI_BLOCK_IO2_TOKEN *Token + IN EFI_BLOCK_IO2_PROTOCOL *This, + IN OUT EFI_BLOCK_IO2_TOKEN *Token ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; Private = EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS (This); @@ -202,8 +198,6 @@ EmuBlockIo2Flush ( return Status; } - - /** Reset the Block Device. @@ -218,13 +212,13 @@ EmuBlockIo2Flush ( EFI_STATUS EFIAPI EmuBlockIoReset ( - IN EFI_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EFI_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -236,7 +230,6 @@ EmuBlockIoReset ( return Status; } - /** Read BufferSize bytes from Lba into Buffer. @@ -259,30 +252,29 @@ EmuBlockIoReset ( EFI_STATUS EFIAPI EmuBlockIoReadBlocks ( - IN EFI_BLOCK_IO_PROTOCOL *This, - IN UINT32 MediaId, - IN EFI_LBA Lba, - IN UINTN BufferSize, - OUT VOID *Buffer + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; - EFI_BLOCK_IO2_TOKEN Token; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; + EFI_BLOCK_IO2_TOKEN Token; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Token.Event = NULL; - Status = Private->Io->ReadBlocks (Private->Io, MediaId, Lba, &Token, BufferSize, Buffer); + Status = Private->Io->ReadBlocks (Private->Io, MediaId, Lba, &Token, BufferSize, Buffer); gBS->RestoreTPL (OldTpl); return Status; } - /** Write BufferSize bytes from Lba into Buffer. @@ -306,24 +298,24 @@ EmuBlockIoReadBlocks ( EFI_STATUS EFIAPI EmuBlockIoWriteBlocks ( - IN EFI_BLOCK_IO_PROTOCOL *This, - IN UINT32 MediaId, - IN EFI_LBA Lba, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + IN VOID *Buffer ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; - EFI_BLOCK_IO2_TOKEN Token; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; + EFI_BLOCK_IO2_TOKEN Token; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Token.Event = NULL; - Status = Private->Io->WriteBlocks (Private->Io, MediaId, Lba, &Token, BufferSize, Buffer); + Status = Private->Io->WriteBlocks (Private->Io, MediaId, Lba, &Token, BufferSize, Buffer); gBS->RestoreTPL (OldTpl); return Status; @@ -345,24 +337,22 @@ EmuBlockIoFlushBlocks ( IN EFI_BLOCK_IO_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - EFI_TPL OldTpl; - EFI_BLOCK_IO2_TOKEN Token; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + EFI_TPL OldTpl; + EFI_BLOCK_IO2_TOKEN Token; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Token.Event = NULL; - Status = Private->Io->FlushBlocks (Private->Io, &Token); + Status = Private->Io->FlushBlocks (Private->Io, &Token); gBS->RestoreTPL (OldTpl); return Status; } - - /** Tests to see if this driver supports a given controller. If a child device is provided, it further tests to see if this driver supports creating a handle for the specified child device. @@ -413,8 +403,8 @@ EmuBlockIoDriverBindingSupported ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; // // Open the IO Abstraction(s) needed to perform the supported test @@ -443,15 +433,14 @@ EmuBlockIoDriverBindingSupported ( // Close the I/O Abstraction(s) used to perform the supported test // gBS->CloseProtocol ( - Handle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - Handle - ); + Handle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + Handle + ); return Status; } - /** Starts a device controller or a bus controller. @@ -490,14 +479,14 @@ EmuBlockIoDriverBindingSupported ( EFI_STATUS EFIAPI EmuBlockIoDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Handle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - EMU_BLOCK_IO_PRIVATE *Private = NULL; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EMU_BLOCK_IO_PRIVATE *Private = NULL; // // Grab the protocols we need @@ -573,8 +562,10 @@ EmuBlockIoDriverBindingStart ( Status = gBS->InstallMultipleProtocolInterfaces ( &Handle, - &gEfiBlockIoProtocolGuid, &Private->BlockIo, - &gEfiBlockIo2ProtocolGuid, &Private->BlockIo2, + &gEfiBlockIoProtocolGuid, + &Private->BlockIo, + &gEfiBlockIo2ProtocolGuid, + &Private->BlockIo2, NULL ); @@ -586,21 +577,19 @@ Done: } gBS->FreePool (Private); - } gBS->CloseProtocol ( - Handle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - Handle - ); + Handle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + Handle + ); } return Status; } - /** Stops a device controller or a bus controller. @@ -636,9 +625,9 @@ EmuBlockIoDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_BLOCK_IO_PROTOCOL *BlockIo; - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; // // Get our context back @@ -659,8 +648,10 @@ EmuBlockIoDriverBindingStop ( Status = gBS->UninstallMultipleProtocolInterfaces ( Private->EfiHandle, - &gEfiBlockIoProtocolGuid, &Private->BlockIo, - &gEfiBlockIo2ProtocolGuid, &Private->BlockIo2, + &gEfiBlockIoProtocolGuid, + &Private->BlockIo, + &gEfiBlockIo2ProtocolGuid, + &Private->BlockIo2, NULL ); if (!EFI_ERROR (Status)) { @@ -686,11 +677,7 @@ EmuBlockIoDriverBindingStop ( return Status; } - - - - -EFI_DRIVER_BINDING_PROTOCOL gEmuBlockIoDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gEmuBlockIoDriverBinding = { EmuBlockIoDriverBindingSupported, EmuBlockIoDriverBindingStart, EmuBlockIoDriverBindingStop, @@ -699,9 +686,6 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuBlockIoDriverBinding = { NULL }; - - - /** The user Entry Point for module EmuBlockIo . The user code starts with this function. @@ -715,11 +699,11 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuBlockIoDriverBinding = { EFI_STATUS EFIAPI InitializeEmuBlockIo ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EfiLibInstallAllDriverProtocols2 ( ImageHandle, @@ -735,9 +719,5 @@ InitializeEmuBlockIo ( ); ASSERT_EFI_ERROR (Status); - return Status; } - - - diff --git a/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.h b/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.h index e1e859326b..ac7d8356fa 100644 --- a/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.h +++ b/EmulatorPkg/EmuBlockIoDxe/EmuBlockIo.h @@ -38,12 +38,11 @@ Abstract: #include #include - // // Language supported for driverconfiguration protocol // -#define EMU_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'b', 'k') +#define EMU_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'b', 'k') typedef struct { UINTN Signature; EMU_IO_THUNK_PROTOCOL *IoThunk; @@ -55,7 +54,6 @@ typedef struct { EFI_BLOCK_IO_MEDIA Media; EFI_UNICODE_STRING_TABLE *ControllerNameTable; - } EMU_BLOCK_IO_PRIVATE; #define EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \ @@ -64,7 +62,6 @@ typedef struct { #define EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS(a) \ CR(a, EMU_BLOCK_IO_PRIVATE, BlockIo2, EMU_BLOCK_IO_PRIVATE_SIGNATURE) - // // Block I/O Global Variables // diff --git a/EmulatorPkg/EmuBusDriverDxe/ComponentName.c b/EmulatorPkg/EmuBusDriverDxe/ComponentName.c index f1b0fa5f22..a79b0946c1 100644 --- a/EmulatorPkg/EmuBusDriverDxe/ComponentName.c +++ b/EmulatorPkg/EmuBusDriverDxe/ComponentName.c @@ -21,17 +21,17 @@ EmuBusDriverComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuBusDriverComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName = { EmuBusDriverComponentNameGetDriverName, EmuBusDriverComponentNameGetControllerName, "eng" @@ -40,15 +40,15 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverCompo // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) EmuBusDriverComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) EmuBusDriverComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)EmuBusDriverComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)EmuBusDriverComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mEmuBusDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mEmuBusDriverNameTable[] = { { "eng", L"Emu Bus Driver" }, - { NULL , NULL } + { NULL, NULL } }; /** @@ -99,12 +99,12 @@ EmuBusDriverComponentNameGetDriverName ( ) { return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mEmuBusDriverNameTable, - DriverName, - (BOOLEAN)(This == &gEmuBusDriverComponentName) - ); + Language, + This->SupportedLanguages, + mEmuBusDriverNameTable, + DriverName, + (BOOLEAN)(This == &gEmuBusDriverComponentName) + ); } /** @@ -178,16 +178,16 @@ EmuBusDriverComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuBusDriverComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIo; - EMU_IO_DEVICE *Private; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIo; + EMU_IO_DEVICE *Private; // // Make sure this driver is currently managing ControllHandle @@ -223,7 +223,7 @@ EmuBusDriverComponentNameGetControllerName ( Status = gBS->OpenProtocol ( ChildHandle, &gEmuIoThunkProtocolGuid, - (VOID**)&EmuIo, + (VOID **)&EmuIo, gEmuBusDriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -240,5 +240,5 @@ EmuBusDriverComponentNameGetControllerName ( Private->ControllerNameTable, ControllerName, (BOOLEAN)(This == &gEmuBusDriverComponentName) - ); + ); } diff --git a/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c b/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c index d8380f2be9..2feb158186 100644 --- a/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c +++ b/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c @@ -10,12 +10,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "EmuBusDriverDxe.h" - - // // DriverBinding protocol global // -EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding = { EmuBusDriverBindingSupported, EmuBusDriverBindingStart, EmuBusDriverBindingStop, @@ -24,8 +22,6 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding = { NULL }; - - EFI_STATUS EFIAPI EmuBusDriverBindingSupported ( @@ -52,9 +48,10 @@ EmuBusDriverBindingSupported ( // If RemainingDevicePath isn't the End of Device Path Node, // check its validation // - if (RemainingDevicePath->Type != HARDWARE_DEVICE_PATH || - RemainingDevicePath->SubType != HW_VENDOR_DP || - DevicePathNodeLength(RemainingDevicePath) != sizeof(EMU_VENDOR_DEVICE_PATH_NODE)) { + if ((RemainingDevicePath->Type != HARDWARE_DEVICE_PATH) || + (RemainingDevicePath->SubType != HW_VENDOR_DP) || + (DevicePathNodeLength (RemainingDevicePath) != sizeof (EMU_VENDOR_DEVICE_PATH_NODE))) + { return EFI_UNSUPPORTED; } } @@ -66,7 +63,7 @@ EmuBusDriverBindingSupported ( Status = gBS->OpenProtocol ( ControllerHandle, &gEmuThunkProtocolGuid, - (VOID **)&EmuThunk , + (VOID **)&EmuThunk, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -83,11 +80,11 @@ EmuBusDriverBindingSupported ( // Close the I/O Abstraction(s) used to perform the supported test // gBS->CloseProtocol ( - ControllerHandle, - &gEmuThunkProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuThunkProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); // // Open the EFI Device Path protocol needed to perform the supported test @@ -108,21 +105,19 @@ EmuBusDriverBindingSupported ( return Status; } - // // Close protocol, don't use device path protocol in the Support() function // gBS->CloseProtocol ( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEfiDevicePathProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); return Status; } - EFI_STATUS EFIAPI EmuBusDriverBindingStart ( @@ -131,19 +126,19 @@ EmuBusDriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EFI_STATUS InstallStatus; - EMU_THUNK_PROTOCOL *EmuThunk; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; - EMU_IO_DEVICE *EmuDevice; - EMU_BUS_DEVICE *EmuBusDevice; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - UINT16 ComponentName[512]; - EMU_VENDOR_DEVICE_PATH_NODE *Node; - BOOLEAN CreateDevice; + EFI_STATUS Status; + EFI_STATUS InstallStatus; + EMU_THUNK_PROTOCOL *EmuThunk; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EMU_IO_DEVICE *EmuDevice; + EMU_BUS_DEVICE *EmuBusDevice; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + UINT16 ComponentName[512]; + EMU_VENDOR_DEVICE_PATH_NODE *Node; + BOOLEAN CreateDevice; InstallStatus = EFI_UNSUPPORTED; - Status = EFI_UNSUPPORTED; + Status = EFI_UNSUPPORTED; // // Grab the protocols we need @@ -156,7 +151,7 @@ EmuBusDriverBindingStart ( ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER ); - if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) { + if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { return Status; } @@ -168,7 +163,7 @@ EmuBusDriverBindingStart ( ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER ); - if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) { + if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { return Status; } @@ -196,10 +191,10 @@ EmuBusDriverBindingStart ( FALSE ); - Status = gBS->InstallMultipleProtocolInterfaces ( &ControllerHandle, - &gEfiCallerIdGuid, EmuBusDevice, + &gEfiCallerIdGuid, + EmuBusDevice, NULL ); if (EFI_ERROR (Status)) { @@ -209,7 +204,6 @@ EmuBusDriverBindingStart ( } } - for (Status = EFI_SUCCESS, EmuIoThunk = NULL; !EFI_ERROR (Status); ) { Status = EmuThunk->GetNextProtocol (TRUE, &EmuIoThunk); if (EFI_ERROR (Status)) { @@ -218,7 +212,7 @@ EmuBusDriverBindingStart ( CreateDevice = TRUE; if (RemainingDevicePath != NULL) { - CreateDevice = FALSE; + CreateDevice = FALSE; // // Check if RemainingDevicePath is the End of Device Path Node, // if yes, don't create any child device @@ -228,12 +222,13 @@ EmuBusDriverBindingStart ( // If RemainingDevicePath isn't the End of Device Path Node, // check its validation // - Node = (EMU_VENDOR_DEVICE_PATH_NODE *) RemainingDevicePath; - if (Node->VendorDevicePath.Header.Type == HARDWARE_DEVICE_PATH && - Node->VendorDevicePath.Header.SubType == HW_VENDOR_DP && - DevicePathNodeLength (&Node->VendorDevicePath.Header) == sizeof (EMU_VENDOR_DEVICE_PATH_NODE) - ) { - if (CompareGuid (&Node->VendorDevicePath.Guid, EmuIoThunk->Protocol) && Node->Instance == EmuIoThunk->Instance) { + Node = (EMU_VENDOR_DEVICE_PATH_NODE *)RemainingDevicePath; + if ((Node->VendorDevicePath.Header.Type == HARDWARE_DEVICE_PATH) && + (Node->VendorDevicePath.Header.SubType == HW_VENDOR_DP) && + (DevicePathNodeLength (&Node->VendorDevicePath.Header) == sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) + ) + { + if (CompareGuid (&Node->VendorDevicePath.Guid, EmuIoThunk->Protocol) && (Node->Instance == EmuIoThunk->Instance)) { CreateDevice = TRUE; } } @@ -249,9 +244,9 @@ EmuBusDriverBindingStart ( return EFI_OUT_OF_RESOURCES; } - EmuDevice->Handle = NULL; - EmuDevice->ControllerHandle = ControllerHandle; - EmuDevice->ParentDevicePath = ParentDevicePath; + EmuDevice->Handle = NULL; + EmuDevice->ControllerHandle = ControllerHandle; + EmuDevice->ParentDevicePath = ParentDevicePath; CopyMem (&EmuDevice->EmuIoThunk, EmuIoThunk, sizeof (EMU_IO_THUNK_PROTOCOL)); EmuDevice->ControllerNameTable = NULL; @@ -264,10 +259,10 @@ EmuBusDriverBindingStart ( ); EmuDevice->DevicePath = EmuBusCreateDevicePath ( - ParentDevicePath, - EmuIoThunk->Protocol, - EmuIoThunk->Instance - ); + ParentDevicePath, + EmuIoThunk->Protocol, + EmuIoThunk->Instance + ); if (EmuDevice->DevicePath == NULL) { gBS->FreePool (EmuDevice); return EFI_OUT_OF_RESOURCES; @@ -283,11 +278,13 @@ EmuBusDriverBindingStart ( EmuDevice->Signature = EMU_IO_DEVICE_SIGNATURE; InstallStatus = gBS->InstallMultipleProtocolInterfaces ( - &EmuDevice->Handle, - &gEfiDevicePathProtocolGuid, EmuDevice->DevicePath, - &gEmuIoThunkProtocolGuid, &EmuDevice->EmuIoThunk, - NULL - ); + &EmuDevice->Handle, + &gEfiDevicePathProtocolGuid, + EmuDevice->DevicePath, + &gEmuIoThunkProtocolGuid, + &EmuDevice->EmuIoThunk, + NULL + ); if (EFI_ERROR (InstallStatus)) { FreeUnicodeStringTable (EmuDevice->ControllerNameTable); gBS->FreePool (EmuDevice); @@ -298,7 +295,7 @@ EmuBusDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEmuThunkProtocolGuid, - (VOID **)&EmuThunk , + (VOID **)&EmuThunk, This->DriverBindingHandle, EmuDevice->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -313,7 +310,6 @@ EmuBusDriverBindingStart ( return InstallStatus; } - EFI_STATUS EFIAPI EmuBusDriverBindingStop ( @@ -323,13 +319,13 @@ EmuBusDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_STATUS Status; - UINTN Index; - BOOLEAN AllChildrenStopped; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - EMU_BUS_DEVICE *EmuBusDevice; - EMU_IO_DEVICE *EmuDevice; - EMU_THUNK_PROTOCOL *EmuThunk; + EFI_STATUS Status; + UINTN Index; + BOOLEAN AllChildrenStopped; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EMU_BUS_DEVICE *EmuBusDevice; + EMU_IO_DEVICE *EmuDevice; + EMU_THUNK_PROTOCOL *EmuThunk; // // Complete all outstanding transactions to Controller. @@ -353,35 +349,35 @@ EmuBusDriverBindingStop ( } gBS->UninstallMultipleProtocolInterfaces ( - ControllerHandle, - &gEfiCallerIdGuid, EmuBusDevice, - NULL - ); + ControllerHandle, + &gEfiCallerIdGuid, + EmuBusDevice, + NULL + ); FreeUnicodeStringTable (EmuBusDevice->ControllerNameTable); gBS->FreePool (EmuBusDevice); gBS->CloseProtocol ( - ControllerHandle, - &gEmuThunkProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuThunkProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); gBS->CloseProtocol ( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEfiDevicePathProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); return EFI_SUCCESS; } AllChildrenStopped = TRUE; for (Index = 0; Index < NumberOfChildren; Index++) { - Status = gBS->OpenProtocol ( ChildHandleBuffer[Index], &gEmuIoThunkProtocolGuid, @@ -402,20 +398,22 @@ EmuBusDriverBindingStop ( Status = gBS->UninstallMultipleProtocolInterfaces ( EmuDevice->Handle, - &gEfiDevicePathProtocolGuid, EmuDevice->DevicePath, - &gEmuIoThunkProtocolGuid, &EmuDevice->EmuIoThunk, + &gEfiDevicePathProtocolGuid, + EmuDevice->DevicePath, + &gEmuIoThunkProtocolGuid, + &EmuDevice->EmuIoThunk, NULL ); if (EFI_ERROR (Status)) { gBS->OpenProtocol ( - ControllerHandle, - &gEmuThunkProtocolGuid, - (VOID **) &EmuThunk , - This->DriverBindingHandle, - EmuDevice->Handle, - EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER - ); + ControllerHandle, + &gEmuThunkProtocolGuid, + (VOID **)&EmuThunk, + This->DriverBindingHandle, + EmuDevice->Handle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER + ); } else { // // Close the child handle @@ -437,7 +435,6 @@ EmuBusDriverBindingStop ( return EFI_SUCCESS; } - /*++ Routine Description: @@ -466,8 +463,8 @@ EmuBusCreateDevicePath ( { EMU_VENDOR_DEVICE_PATH_NODE DevicePath; - DevicePath.VendorDevicePath.Header.Type = HARDWARE_DEVICE_PATH; - DevicePath.VendorDevicePath.Header.SubType = HW_VENDOR_DP; + DevicePath.VendorDevicePath.Header.Type = HARDWARE_DEVICE_PATH; + DevicePath.VendorDevicePath.Header.SubType = HW_VENDOR_DP; SetDevicePathNodeLength (&DevicePath.VendorDevicePath.Header, sizeof (EMU_VENDOR_DEVICE_PATH_NODE)); // @@ -482,13 +479,11 @@ EmuBusCreateDevicePath ( DevicePath.Instance = InstanceNumber; return AppendDevicePathNode ( - RootDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &DevicePath - ); + RootDevicePath, + (EFI_DEVICE_PATH_PROTOCOL *)&DevicePath + ); } - - /** The user Entry Point for module EmuBusDriver. The user code starts with this function. @@ -502,11 +497,11 @@ EmuBusCreateDevicePath ( EFI_STATUS EFIAPI InitializeEmuBusDriver ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EfiLibInstallAllDriverProtocols ( ImageHandle, @@ -519,10 +514,5 @@ InitializeEmuBusDriver ( ); ASSERT_EFI_ERROR (Status); - return Status; } - - - - diff --git a/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.h b/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.h index 632d706606..b9617a0bfa 100644 --- a/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.h +++ b/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.h @@ -25,19 +25,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -extern EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2; - +extern EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2; // // Unix Bus Controller Structure // -#define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D') +#define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D') typedef struct { - UINT64 Signature; - EFI_UNICODE_STRING_TABLE *ControllerNameTable; + UINT64 Signature; + EFI_UNICODE_STRING_TABLE *ControllerNameTable; } EMU_BUS_DEVICE; // @@ -46,47 +45,42 @@ typedef struct { #define EMU_IO_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'V', 'D') typedef struct { - UINT64 Signature; - EFI_HANDLE Handle; - EMU_IO_THUNK_PROTOCOL EmuIoThunk; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINT64 Signature; + EFI_HANDLE Handle; + EMU_IO_THUNK_PROTOCOL EmuIoThunk; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; // // Private data about the parent // - EFI_HANDLE ControllerHandle; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; - - EFI_UNICODE_STRING_TABLE *ControllerNameTable; + EFI_HANDLE ControllerHandle; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EFI_UNICODE_STRING_TABLE *ControllerNameTable; } EMU_IO_DEVICE; #define EMU_IO_DEVICE_FROM_THIS(a) \ CR(a, EMU_IO_DEVICE, EmuIoThunk, EMU_IO_DEVICE_SIGNATURE) - - // // Driver Binding Protocol function prototypes // EFI_STATUS EFIAPI EmuBusDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Handle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); - EFI_STATUS EFIAPI EmuBusDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ParentHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ParentHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); - EFI_STATUS EFIAPI EmuBusDriverBindingStop ( @@ -106,5 +100,4 @@ EmuBusCreateDevicePath ( IN UINT16 InstanceNumber ); - #endif diff --git a/EmulatorPkg/EmuGopDxe/ComponentName.c b/EmulatorPkg/EmuGopDxe/ComponentName.c index d096a2405f..b288c26a5b 100644 --- a/EmulatorPkg/EmuGopDxe/ComponentName.c +++ b/EmulatorPkg/EmuGopDxe/ComponentName.c @@ -28,17 +28,17 @@ EmuGopComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuGopComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // // EFI Component Name Protocol // -EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName = { +EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName = { EmuGopComponentNameGetDriverName, EmuGopComponentNameGetControllerName, "eng" @@ -47,19 +47,17 @@ EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName = { // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) EmuGopComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) EmuGopComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)EmuGopComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)EmuGopComponentNameGetControllerName, "en" }; - -EFI_UNICODE_STRING_TABLE mEmuGopDriverNameTable[] = { +EFI_UNICODE_STRING_TABLE mEmuGopDriverNameTable[] = { { "eng", L"Emulator GOP Driver" }, - { NULL , NULL } + { NULL, NULL } }; - /** Retrieves a Unicode string that is the user readable name of the driver. @@ -116,7 +114,6 @@ EmuGopComponentNameGetDriverName ( ); } - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -188,11 +185,11 @@ EmuGopComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuGopComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { EFI_STATUS Status; @@ -217,6 +214,7 @@ EmuGopComponentNameGetControllerName ( if (EFI_ERROR (Status)) { return EFI_UNSUPPORTED; } + // // Get our context back // diff --git a/EmulatorPkg/EmuGopDxe/Gop.h b/EmulatorPkg/EmuGopDxe/Gop.h index 3896663276..7f7dc4e8eb 100644 --- a/EmulatorPkg/EmuGopDxe/Gop.h +++ b/EmulatorPkg/EmuGopDxe/Gop.h @@ -29,78 +29,73 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - -#define MAX_Q 256 +#define MAX_Q 256 typedef struct { - UINTN Front; - UINTN Rear; - UINTN Count; - EFI_INPUT_KEY Q[MAX_Q]; + UINTN Front; + UINTN Rear; + UINTN Count; + EFI_INPUT_KEY Q[MAX_Q]; } GOP_QUEUE_FIXED; -#define EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('U', 'g', 'S', 'n') +#define EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('U', 'g', 'S', 'n') typedef struct _EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY { - UINTN Signature; - EFI_HANDLE NotifyHandle; - EFI_KEY_DATA KeyData; - EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn; - EFI_EVENT Event; - LIST_ENTRY NotifyEntry; + UINTN Signature; + EFI_HANDLE NotifyHandle; + EFI_KEY_DATA KeyData; + EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn; + EFI_EVENT Event; + LIST_ENTRY NotifyEntry; } EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY; -#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff +#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff typedef struct { - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - UINT32 ColorDepth; - UINT32 RefreshRate; + UINT32 HorizontalResolution; + UINT32 VerticalResolution; + UINT32 ColorDepth; + UINT32 RefreshRate; } GOP_MODE_DATA; +extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName; - -extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName; - -#define EMU_UGA_CLASS_NAME L"EmuGopWindow" +#define EMU_UGA_CLASS_NAME L"EmuGopWindow" #define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('G', 'o', 'p', 'N') typedef struct { - UINT64 Signature; + UINT64 Signature; - EFI_HANDLE Handle; - EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput; - EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn; - EFI_SIMPLE_POINTER_PROTOCOL SimplePointer; + EFI_HANDLE Handle; + EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput; + EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn; + EFI_SIMPLE_POINTER_PROTOCOL SimplePointer; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - EMU_GRAPHICS_WINDOW_PROTOCOL *EmuGraphicsWindow; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EMU_GRAPHICS_WINDOW_PROTOCOL *EmuGraphicsWindow; - EFI_UNICODE_STRING_TABLE *ControllerNameTable; + EFI_UNICODE_STRING_TABLE *ControllerNameTable; - EFI_SIMPLE_POINTER_MODE PointerMode; + EFI_SIMPLE_POINTER_MODE PointerMode; // // GOP Private Data for QueryMode () // - GOP_MODE_DATA *ModeData; - + GOP_MODE_DATA *ModeData; // // UGA Private Data knowing when to start hardware // - BOOLEAN HardwareNeedsStarting; + BOOLEAN HardwareNeedsStarting; - CHAR16 *WindowName; + CHAR16 *WindowName; - GOP_QUEUE_FIXED Queue; + GOP_QUEUE_FIXED Queue; - EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx; - EFI_KEY_STATE KeyState; - LIST_ENTRY NotifyList; + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx; + EFI_KEY_STATE KeyState; + LIST_ENTRY NotifyList; } GOP_PRIVATE_DATA; - #define GOP_PRIVATE_DATA_FROM_THIS(a) \ CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE) @@ -113,13 +108,12 @@ typedef struct { #define GOP_PRIVATE_DATA_FROM_POINTER_MODE_THIS(a) \ CR(a, GOP_PRIVATE_DATA, SimplePointer, GOP_PRIVATE_DATA_SIGNATURE) - // // Global Protocol Variables // -extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2; +extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2; // // Gop Hardware abstraction internal worker functions @@ -131,38 +125,37 @@ EmuGopSupported ( EFI_STATUS EmuGopConstructor ( - IN GOP_PRIVATE_DATA *Private + IN GOP_PRIVATE_DATA *Private ); EFI_STATUS EmuGopDestructor ( - IN GOP_PRIVATE_DATA *Private + IN GOP_PRIVATE_DATA *Private ); - EFI_STATUS GopPrivateAddQ ( - IN GOP_PRIVATE_DATA *Private, - IN EFI_INPUT_KEY Key + IN GOP_PRIVATE_DATA *Private, + IN EFI_INPUT_KEY Key ); EFI_STATUS EmuGopInitializeSimpleTextInForWindow ( - IN GOP_PRIVATE_DATA *Private + IN GOP_PRIVATE_DATA *Private ); EFI_STATUS EmuGopInitializeSimplePointerForWindow ( - IN GOP_PRIVATE_DATA *Private + IN GOP_PRIVATE_DATA *Private ); EFI_STATUS EmuGopStartWindow ( - IN GOP_PRIVATE_DATA *Private, - IN UINT32 HorizontalResolution, - IN UINT32 VerticalResolution, - IN UINT32 ColorDepth, - IN UINT32 RefreshRate + IN GOP_PRIVATE_DATA *Private, + IN UINT32 HorizontalResolution, + IN UINT32 VerticalResolution, + IN UINT32 ColorDepth, + IN UINT32 RefreshRate ); VOID @@ -175,15 +168,15 @@ ShutdownGopEvent ( VOID EFIAPI GopPrivateMakeCallbackFunction ( - IN VOID *Context, - IN EFI_KEY_DATA *KeyData + IN VOID *Context, + IN EFI_KEY_DATA *KeyData ); VOID EFIAPI GopPrivateBreakCallbackFunction ( - IN VOID *Context, - IN EFI_KEY_DATA *KeyData + IN VOID *Context, + IN EFI_KEY_DATA *KeyData ); #endif diff --git a/EmulatorPkg/EmuGopDxe/GopDriver.c b/EmulatorPkg/EmuGopDxe/GopDriver.c index d0215c33e7..4b716e35e1 100644 --- a/EmulatorPkg/EmuGopDxe/GopDriver.c +++ b/EmulatorPkg/EmuGopDxe/GopDriver.c @@ -9,11 +9,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Gop.h" - EFI_STATUS FreeNotifyList ( - IN OUT LIST_ENTRY *ListHead + IN OUT LIST_ENTRY *ListHead ) + /*++ Routine Description: @@ -29,11 +29,12 @@ Returns: **/ { - EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *NotifyNode; + EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *NotifyNode; if (ListHead == NULL) { return EFI_INVALID_PARAMETER; } + while (!IsListEmpty (ListHead)) { NotifyNode = CR ( ListHead->ForwardLink, @@ -48,7 +49,6 @@ Returns: return EFI_SUCCESS; } - /** Tests to see if this driver supports a given controller. If a child device is provided, it further tests to see if this driver supports creating a handle for the specified child device. @@ -94,13 +94,13 @@ Returns: EFI_STATUS EFIAPI EmuGopDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Handle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; // // Open the IO Abstraction(s) needed to perform the supported test @@ -123,16 +123,15 @@ EmuGopDriverBindingSupported ( // Close the I/O Abstraction(s) used to perform the supported test // gBS->CloseProtocol ( - Handle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - Handle - ); + Handle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + Handle + ); return Status; } - /** Starts a device controller or a bus controller. @@ -171,14 +170,14 @@ EmuGopDriverBindingSupported ( EFI_STATUS EFIAPI EmuGopDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Handle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - EFI_STATUS Status; - GOP_PRIVATE_DATA *Private; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EFI_STATUS Status; + GOP_PRIVATE_DATA *Private; // // Grab the protocols we need @@ -199,14 +198,15 @@ EmuGopDriverBindingStart ( // Allocate Private context data for SGO inteface. // Private = NULL; - Status = gBS->AllocatePool ( - EfiBootServicesData, - sizeof (GOP_PRIVATE_DATA), - (VOID **)&Private - ); + Status = gBS->AllocatePool ( + EfiBootServicesData, + sizeof (GOP_PRIVATE_DATA), + (VOID **)&Private + ); if (EFI_ERROR (Status)) { goto Done; } + // // Set up context record // @@ -234,27 +234,31 @@ EmuGopDriverBindingStart ( if (EFI_ERROR (Status)) { goto Done; } + // // Publish the Gop interface to the world // Status = gBS->InstallMultipleProtocolInterfaces ( &Private->Handle, - &gEfiGraphicsOutputProtocolGuid, &Private->GraphicsOutput, - &gEfiSimpleTextInProtocolGuid, &Private->SimpleTextIn, - &gEfiSimplePointerProtocolGuid, &Private->SimplePointer, - &gEfiSimpleTextInputExProtocolGuid, &Private->SimpleTextInEx, + &gEfiGraphicsOutputProtocolGuid, + &Private->GraphicsOutput, + &gEfiSimpleTextInProtocolGuid, + &Private->SimpleTextIn, + &gEfiSimplePointerProtocolGuid, + &Private->SimplePointer, + &gEfiSimpleTextInputExProtocolGuid, + &Private->SimpleTextInEx, NULL ); Done: if (EFI_ERROR (Status)) { - gBS->CloseProtocol ( - Handle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - Handle - ); + Handle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + Handle + ); if (Private != NULL) { // @@ -263,12 +267,15 @@ Done: if (Private->ControllerNameTable != NULL) { FreeUnicodeStringTable (Private->ControllerNameTable); } + if (Private->SimpleTextIn.WaitForKey != NULL) { gBS->CloseEvent (Private->SimpleTextIn.WaitForKey); } + if (Private->SimpleTextInEx.WaitForKeyEx != NULL) { gBS->CloseEvent (Private->SimpleTextInEx.WaitForKeyEx); } + FreeNotifyList (&Private->NotifyList); gBS->FreePool (Private); @@ -278,8 +285,6 @@ Done: return Status; } - - /** Stops a device controller or a bus controller. @@ -315,9 +320,9 @@ EmuGopDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EFI_STATUS Status; - GOP_PRIVATE_DATA *Private; + EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; + EFI_STATUS Status; + GOP_PRIVATE_DATA *Private; Status = gBS->OpenProtocol ( Handle, @@ -344,10 +349,14 @@ EmuGopDriverBindingStop ( // Status = gBS->UninstallMultipleProtocolInterfaces ( Private->Handle, - &gEfiGraphicsOutputProtocolGuid, &Private->GraphicsOutput, - &gEfiSimpleTextInProtocolGuid, &Private->SimpleTextIn, - &gEfiSimplePointerProtocolGuid, &Private->SimplePointer, - &gEfiSimpleTextInputExProtocolGuid, &Private->SimpleTextInEx, + &gEfiGraphicsOutputProtocolGuid, + &Private->GraphicsOutput, + &gEfiSimpleTextInProtocolGuid, + &Private->SimpleTextIn, + &gEfiSimplePointerProtocolGuid, + &Private->SimplePointer, + &gEfiSimpleTextInputExProtocolGuid, + &Private->SimpleTextInEx, NULL ); if (!EFI_ERROR (Status)) { @@ -360,11 +369,11 @@ EmuGopDriverBindingStop ( } gBS->CloseProtocol ( - Handle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - Handle - ); + Handle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + Handle + ); // // Free our instance data @@ -380,18 +389,16 @@ EmuGopDriverBindingStop ( FreeNotifyList (&Private->NotifyList); gBS->FreePool (Private); - } return Status; } - /// /// This protocol provides the services required to determine if a driver supports a given controller. /// If a controller is supported, then it also provides routines to start and stop the controller. /// -EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding = { EmuGopDriverBindingSupported, EmuGopDriverBindingStart, EmuGopDriverBindingStop, @@ -400,8 +407,6 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding = { NULL }; - - /** The user Entry Point for module EmuGop. The user code starts with this function. @@ -415,11 +420,11 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding = { EFI_STATUS EFIAPI InitializeEmuGop ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EfiLibInstallDriverBindingComponentName2 ( ImageHandle, @@ -431,7 +436,5 @@ InitializeEmuGop ( ); ASSERT_EFI_ERROR (Status); - return Status; } - diff --git a/EmulatorPkg/EmuGopDxe/GopInput.c b/EmulatorPkg/EmuGopDxe/GopInput.c index 2a23564a21..a48293912d 100644 --- a/EmulatorPkg/EmuGopDxe/GopInput.c +++ b/EmulatorPkg/EmuGopDxe/GopInput.c @@ -9,12 +9,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Gop.h" - BOOLEAN GopPrivateIsKeyRegistered ( IN EFI_KEY_DATA *RegsiteredData, IN EFI_KEY_DATA *InputData ) + /*++ Routine Description: @@ -35,37 +35,39 @@ Returns: ASSERT (RegsiteredData != NULL && InputData != NULL); if ((RegsiteredData->Key.ScanCode != InputData->Key.ScanCode) || - (RegsiteredData->Key.UnicodeChar != InputData->Key.UnicodeChar)) { + (RegsiteredData->Key.UnicodeChar != InputData->Key.UnicodeChar)) + { return FALSE; } // // Assume KeyShiftState/KeyToggleState = 0 in Registered key data means these state could be ignored. // - if (RegsiteredData->KeyState.KeyShiftState != 0 && - RegsiteredData->KeyState.KeyShiftState != InputData->KeyState.KeyShiftState) { + if ((RegsiteredData->KeyState.KeyShiftState != 0) && + (RegsiteredData->KeyState.KeyShiftState != InputData->KeyState.KeyShiftState)) + { return FALSE; } - if (RegsiteredData->KeyState.KeyToggleState != 0 && - RegsiteredData->KeyState.KeyToggleState != InputData->KeyState.KeyToggleState) { + + if ((RegsiteredData->KeyState.KeyToggleState != 0) && + (RegsiteredData->KeyState.KeyToggleState != InputData->KeyState.KeyToggleState)) + { return FALSE; } return TRUE; - } - VOID EFIAPI GopPrivateMakeCallbackFunction ( - IN VOID *Context, - IN EFI_KEY_DATA *KeyData + IN VOID *Context, + IN EFI_KEY_DATA *KeyData ) { - LIST_ENTRY *Link; + LIST_ENTRY *Link; EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify; - GOP_PRIVATE_DATA *Private = (GOP_PRIVATE_DATA *)Context; + GOP_PRIVATE_DATA *Private = (GOP_PRIVATE_DATA *)Context; KeyMapMake (KeyData); @@ -84,19 +86,16 @@ GopPrivateMakeCallbackFunction ( } } - VOID EFIAPI GopPrivateBreakCallbackFunction ( - IN VOID *Context, - IN EFI_KEY_DATA *KeyData + IN VOID *Context, + IN EFI_KEY_DATA *KeyData ) { KeyMapBreak (KeyData); } - - // // Simple Text In implementation. // @@ -114,8 +113,8 @@ GopPrivateBreakCallbackFunction ( EFI_STATUS EFIAPI EmuGopSimpleTextInReset ( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { GOP_PRIVATE_DATA *Private; @@ -135,8 +134,8 @@ EmuGopSimpleTextInReset ( // // A reset is draining the Queue // - while (Private->EmuGraphicsWindow->GetKey (Private->EmuGraphicsWindow, &KeyData) == EFI_SUCCESS) - ; + while (Private->EmuGraphicsWindow->GetKey (Private->EmuGraphicsWindow, &KeyData) == EFI_SUCCESS) { + } // // Leave critical section and return @@ -145,7 +144,6 @@ EmuGopSimpleTextInReset ( return EFI_SUCCESS; } - /** Reads the next keystroke from the input device. The WaitForKey Event can be used to test for existence of a keystroke via WaitForEvent () call. @@ -163,8 +161,8 @@ EmuGopSimpleTextInReset ( EFI_STATUS EFIAPI EmuGopSimpleTextInReadKeyStroke ( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, - OUT EFI_INPUT_KEY *Key + IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, + OUT EFI_INPUT_KEY *Key ) { GOP_PRIVATE_DATA *Private; @@ -180,9 +178,9 @@ EmuGopSimpleTextInReadKeyStroke ( // // Enter critical section // - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); + OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = Private->EmuGraphicsWindow->GetKey (Private->EmuGraphicsWindow, &KeyData); + Status = Private->EmuGraphicsWindow->GetKey (Private->EmuGraphicsWindow, &KeyData); if (!EFI_ERROR (Status)) { if ((KeyData.Key.ScanCode == 0) && (KeyData.Key.UnicodeChar == 0)) { // Modifier key was pressed @@ -200,8 +198,6 @@ EmuGopSimpleTextInReadKeyStroke ( return Status; } - - /** SimpleTextIn and SimpleTextInEx Notify Wait Event @@ -212,15 +208,15 @@ EmuGopSimpleTextInReadKeyStroke ( VOID EFIAPI EmuGopSimpleTextInWaitForKey ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { GOP_PRIVATE_DATA *Private; EFI_STATUS Status; EFI_TPL OldTpl; - Private = (GOP_PRIVATE_DATA *) Context; + Private = (GOP_PRIVATE_DATA *)Context; if (Private->EmuGraphicsWindow == NULL) { return; } @@ -228,27 +224,26 @@ EmuGopSimpleTextInWaitForKey ( // // Enter critical section // - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); + OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = Private->EmuGraphicsWindow->CheckKey (Private->EmuGraphicsWindow); + Status = Private->EmuGraphicsWindow->CheckKey (Private->EmuGraphicsWindow); if (!EFI_ERROR (Status)) { // // If a there is a key in the queue signal our event. // gBS->SignalEvent (Event); } + // // Leave critical section and return // gBS->RestoreTPL (OldTpl); } - // // Simple Text Input Ex protocol functions // - /** The Reset() function resets the input device hardware. As part of initialization process, the firmware/device will make a quick @@ -280,6 +275,7 @@ EmuGopSimpleTextInExResetEx ( IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN BOOLEAN ExtendedVerification ) + /*++ Routine Description: @@ -297,8 +293,6 @@ EmuGopSimpleTextInExResetEx ( return EFI_SUCCESS; } - - /** The function reads the next keystroke from the input device. If there is no pending keystroke the function returns @@ -351,9 +345,10 @@ EmuGopSimpleTextInExResetEx ( EFI_STATUS EFIAPI EmuGopSimpleTextInExReadKeyStrokeEx ( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - OUT EFI_KEY_DATA *KeyData + IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, + OUT EFI_KEY_DATA *KeyData ) + /*++ Routine Description: @@ -378,7 +373,6 @@ EmuGopSimpleTextInExReadKeyStrokeEx ( GOP_PRIVATE_DATA *Private; EFI_TPL OldTpl; - if (KeyData == NULL) { return EFI_INVALID_PARAMETER; } @@ -391,9 +385,9 @@ EmuGopSimpleTextInExReadKeyStrokeEx ( // // Enter critical section // - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); + OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = Private->EmuGraphicsWindow->GetKey(Private->EmuGraphicsWindow, KeyData); + Status = Private->EmuGraphicsWindow->GetKey (Private->EmuGraphicsWindow, KeyData); // // Leave critical section and return @@ -403,8 +397,6 @@ EmuGopSimpleTextInExReadKeyStrokeEx ( return Status; } - - /** The SetState() function allows the input device hardware to have state settings adjusted. @@ -446,16 +438,17 @@ EmuGopSimpleTextInExSetState ( } if (((Private->KeyState.KeyToggleState & EFI_TOGGLE_STATE_VALID) != EFI_TOGGLE_STATE_VALID) || - ((*KeyToggleState & EFI_TOGGLE_STATE_VALID) != EFI_TOGGLE_STATE_VALID)) { + ((*KeyToggleState & EFI_TOGGLE_STATE_VALID) != EFI_TOGGLE_STATE_VALID)) + { return EFI_UNSUPPORTED; } // // Enter critical section // - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); + OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = Private->EmuGraphicsWindow->KeySetState (Private->EmuGraphicsWindow, KeyToggleState); + Status = Private->EmuGraphicsWindow->KeySetState (Private->EmuGraphicsWindow, KeyToggleState); // // Leave critical section and return // @@ -464,7 +457,6 @@ EmuGopSimpleTextInExSetState ( return Status; } - /** SimpleTextIn and SimpleTextInEx Notify Wait Event @@ -475,17 +467,15 @@ EmuGopSimpleTextInExSetState ( VOID EFIAPI EmuGopRegisterKeyCallback ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *ExNotify = (EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *)Context; + EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *ExNotify = (EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *)Context; ExNotify->KeyNotificationFn (&ExNotify->KeyData); } - - /** The RegisterKeystrokeNotify() function registers a function which will be called when a specified keystroke will occur. @@ -520,13 +510,13 @@ EmuGopSimpleTextInExRegisterKeyNotify ( OUT VOID **NotifyHandle ) { - EFI_STATUS Status; - GOP_PRIVATE_DATA *Private; - EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify; - LIST_ENTRY *Link; - EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *NewNotify; + EFI_STATUS Status; + GOP_PRIVATE_DATA *Private; + EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify; + LIST_ENTRY *Link; + EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *NewNotify; - if (KeyData == NULL || KeyNotificationFunction == NULL || NotifyHandle == NULL) { + if ((KeyData == NULL) || (KeyNotificationFunction == NULL) || (NotifyHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -553,14 +543,14 @@ EmuGopSimpleTextInExRegisterKeyNotify ( // // Allocate resource to save the notification function // - NewNotify = (EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *) AllocateZeroPool (sizeof (EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY)); + NewNotify = (EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *)AllocateZeroPool (sizeof (EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY)); if (NewNotify == NULL) { return EFI_OUT_OF_RESOURCES; } NewNotify->Signature = EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE; NewNotify->KeyNotificationFn = KeyNotificationFunction; - NewNotify->NotifyHandle = (EFI_HANDLE) NewNotify; + NewNotify->NotifyHandle = (EFI_HANDLE)NewNotify; CopyMem (&NewNotify->KeyData, KeyData, sizeof (KeyData)); InsertTailList (&Private->NotifyList, &NewNotify->NotifyEntry); @@ -573,14 +563,11 @@ EmuGopSimpleTextInExRegisterKeyNotify ( ); ASSERT_EFI_ERROR (Status); - *NotifyHandle = NewNotify->NotifyHandle; return EFI_SUCCESS; - } - /** The UnregisterKeystrokeNotify() function removes the notification which was previously registered. @@ -602,6 +589,7 @@ EmuGopSimpleTextInExUnregisterKeyNotify ( IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN VOID *NotificationHandle ) + /*++ Routine Description: @@ -617,15 +605,15 @@ EmuGopSimpleTextInExUnregisterKeyNotify ( **/ { - GOP_PRIVATE_DATA *Private; - LIST_ENTRY *Link; - EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify; + GOP_PRIVATE_DATA *Private; + LIST_ENTRY *Link; + EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify; if (NotificationHandle == NULL) { return EFI_INVALID_PARAMETER; } - if (((EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *) NotificationHandle)->Signature != EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE) { + if (((EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY *)NotificationHandle)->Signature != EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE) { return EFI_INVALID_PARAMETER; } @@ -657,8 +645,6 @@ EmuGopSimpleTextInExUnregisterKeyNotify ( return EFI_INVALID_PARAMETER; } - - /** Initialize SimplelTextIn and SimpleTextInEx protocols in the Private context structure. @@ -670,7 +656,7 @@ EmuGopSimpleTextInExUnregisterKeyNotify ( **/ EFI_STATUS EmuGopInitializeSimpleTextInForWindow ( - IN GOP_PRIVATE_DATA *Private + IN GOP_PRIVATE_DATA *Private ) { EFI_STATUS Status; @@ -690,7 +676,6 @@ EmuGopInitializeSimpleTextInForWindow ( ); ASSERT_EFI_ERROR (Status); - // // Initialize Simple Text In Ex // @@ -714,21 +699,13 @@ EmuGopInitializeSimpleTextInForWindow ( ); ASSERT_EFI_ERROR (Status); - return Status; } - - - - - - // // Simple Pointer implementation. // - /** Resets the pointer device hardware. @@ -744,13 +721,13 @@ EmuGopInitializeSimpleTextInForWindow ( EFI_STATUS EFIAPI EmuGopSimplePointerReset ( - IN EFI_SIMPLE_POINTER_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EFI_SIMPLE_POINTER_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - GOP_PRIVATE_DATA *Private; - EFI_SIMPLE_POINTER_STATE State; - EFI_TPL OldTpl; + GOP_PRIVATE_DATA *Private; + EFI_SIMPLE_POINTER_STATE State; + EFI_TPL OldTpl; Private = GOP_PRIVATE_DATA_FROM_POINTER_MODE_THIS (This); if (Private->EmuGraphicsWindow == NULL) { @@ -765,8 +742,8 @@ EmuGopSimplePointerReset ( // // A reset is draining the Queue // - while (Private->EmuGraphicsWindow->GetPointerState (Private->EmuGraphicsWindow, &State) == EFI_SUCCESS) - ; + while (Private->EmuGraphicsWindow->GetPointerState (Private->EmuGraphicsWindow, &State) == EFI_SUCCESS) { + } // // Leave critical section and return @@ -775,7 +752,6 @@ EmuGopSimplePointerReset ( return EFI_SUCCESS; } - /** Retrieves the current state of a pointer device. @@ -793,8 +769,8 @@ EmuGopSimplePointerReset ( EFI_STATUS EFIAPI EmuGopSimplePointerGetState ( - IN EFI_SIMPLE_POINTER_PROTOCOL *This, - IN OUT EFI_SIMPLE_POINTER_STATE *State + IN EFI_SIMPLE_POINTER_PROTOCOL *This, + IN OUT EFI_SIMPLE_POINTER_STATE *State ) { GOP_PRIVATE_DATA *Private; @@ -809,9 +785,9 @@ EmuGopSimplePointerGetState ( // // Enter critical section // - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); + OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = Private->EmuGraphicsWindow->GetPointerState (Private->EmuGraphicsWindow, State); + Status = Private->EmuGraphicsWindow->GetPointerState (Private->EmuGraphicsWindow, State); // // Leave critical section and return // @@ -820,7 +796,6 @@ EmuGopSimplePointerGetState ( return Status; } - /** SimplePointer Notify Wait Event @@ -831,15 +806,15 @@ EmuGopSimplePointerGetState ( VOID EFIAPI EmuGopSimplePointerWaitForInput ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { GOP_PRIVATE_DATA *Private; EFI_STATUS Status; EFI_TPL OldTpl; - Private = (GOP_PRIVATE_DATA *) Context; + Private = (GOP_PRIVATE_DATA *)Context; if (Private->EmuGraphicsWindow == NULL) { return; } @@ -847,22 +822,22 @@ EmuGopSimplePointerWaitForInput ( // // Enter critical section // - OldTpl = gBS->RaiseTPL (TPL_NOTIFY); + OldTpl = gBS->RaiseTPL (TPL_NOTIFY); - Status = Private->EmuGraphicsWindow->CheckPointer (Private->EmuGraphicsWindow); + Status = Private->EmuGraphicsWindow->CheckPointer (Private->EmuGraphicsWindow); if (!EFI_ERROR (Status)) { // // If the pointer state has changed, signal our event. // gBS->SignalEvent (Event); } + // // Leave critical section and return // gBS->RestoreTPL (OldTpl); } - /** SimplePointer constructor @@ -873,7 +848,7 @@ EmuGopSimplePointerWaitForInput ( **/ EFI_STATUS EmuGopInitializeSimplePointerForWindow ( - IN GOP_PRIVATE_DATA *Private + IN GOP_PRIVATE_DATA *Private ) { EFI_STATUS Status; @@ -887,9 +862,9 @@ EmuGopInitializeSimplePointerForWindow ( Private->PointerMode.LeftButton = TRUE; Private->PointerMode.RightButton = TRUE; - Private->SimplePointer.Reset = EmuGopSimplePointerReset; - Private->SimplePointer.GetState = EmuGopSimplePointerGetState; - Private->SimplePointer.Mode = &Private->PointerMode; + Private->SimplePointer.Reset = EmuGopSimplePointerReset; + Private->SimplePointer.GetState = EmuGopSimplePointerGetState; + Private->SimplePointer.Mode = &Private->PointerMode; Status = gBS->CreateEvent ( EVT_NOTIFY_WAIT, diff --git a/EmulatorPkg/EmuGopDxe/GopScreen.c b/EmulatorPkg/EmuGopDxe/GopScreen.c index 05fd236151..41f748bc64 100644 --- a/EmulatorPkg/EmuGopDxe/GopScreen.c +++ b/EmulatorPkg/EmuGopDxe/GopScreen.c @@ -18,17 +18,15 @@ Abstract: #include "Gop.h" +EFI_EVENT mGopScreenExitBootServicesEvent; -EFI_EVENT mGopScreenExitBootServicesEvent; - -GOP_MODE_DATA mGopModeData[] = { - { 800, 600, 0, 0 }, - { 640, 480, 0, 0 }, - { 720, 400, 0, 0 }, - {1024, 768, 0, 0 }, - {1280, 1024, 0, 0 } - }; - +GOP_MODE_DATA mGopModeData[] = { + { 800, 600, 0, 0 }, + { 640, 480, 0, 0 }, + { 720, 400, 0, 0 }, + { 1024, 768, 0, 0 }, + { 1280, 1024, 0, 0 } +}; /** Returns information for an available graphics mode that the graphics device @@ -59,7 +57,7 @@ EmuGopQuerytMode ( Private = GOP_PRIVATE_DATA_FROM_THIS (This); - if (Info == NULL || SizeOfInfo == NULL || (UINTN) ModeNumber >= This->Mode->MaxMode) { + if ((Info == NULL) || (SizeOfInfo == NULL) || ((UINTN)ModeNumber >= This->Mode->MaxMode)) { return EFI_INVALID_PARAMETER; } @@ -70,17 +68,15 @@ EmuGopQuerytMode ( *SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); - (*Info)->Version = 0; + (*Info)->Version = 0; (*Info)->HorizontalResolution = Private->ModeData[ModeNumber].HorizontalResolution; (*Info)->VerticalResolution = Private->ModeData[ModeNumber].VerticalResolution; - (*Info)->PixelFormat = PixelBltOnly; - (*Info)->PixelsPerScanLine = (*Info)->HorizontalResolution; + (*Info)->PixelFormat = PixelBltOnly; + (*Info)->PixelsPerScanLine = (*Info)->HorizontalResolution; return EFI_SUCCESS; } - - /** Set the video device into the specified mode and clears the visible portions of the output display to black. @@ -100,10 +96,10 @@ EmuGopSetMode ( IN UINT32 ModeNumber ) { - EFI_STATUS Status; - GOP_PRIVATE_DATA *Private; - GOP_MODE_DATA *ModeData; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Fill; + EFI_STATUS Status; + GOP_PRIVATE_DATA *Private; + GOP_MODE_DATA *ModeData; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL Fill; Private = GOP_PRIVATE_DATA_FROM_THIS (This); @@ -111,20 +107,20 @@ EmuGopSetMode ( return EFI_UNSUPPORTED; } - ModeData = &Private->ModeData[ModeNumber]; - This->Mode->Mode = ModeNumber; + ModeData = &Private->ModeData[ModeNumber]; + This->Mode->Mode = ModeNumber; Private->GraphicsOutput.Mode->Info->HorizontalResolution = ModeData->HorizontalResolution; - Private->GraphicsOutput.Mode->Info->VerticalResolution = ModeData->VerticalResolution; - Private->GraphicsOutput.Mode->Info->PixelsPerScanLine = ModeData->HorizontalResolution; + Private->GraphicsOutput.Mode->Info->VerticalResolution = ModeData->VerticalResolution; + Private->GraphicsOutput.Mode->Info->PixelsPerScanLine = ModeData->HorizontalResolution; if (Private->HardwareNeedsStarting) { Status = EmuGopStartWindow ( - Private, - ModeData->HorizontalResolution, - ModeData->VerticalResolution, - ModeData->ColorDepth, - ModeData->RefreshRate - ); + Private, + ModeData->HorizontalResolution, + ModeData->VerticalResolution, + ModeData->ColorDepth, + ModeData->RefreshRate + ); if (EFI_ERROR (Status)) { return EFI_DEVICE_ERROR; } @@ -132,13 +128,11 @@ EmuGopSetMode ( Private->HardwareNeedsStarting = FALSE; } - - Status = Private->EmuGraphicsWindow->Size( - Private->EmuGraphicsWindow, - ModeData->HorizontalResolution, - ModeData->VerticalResolution - ); - + Status = Private->EmuGraphicsWindow->Size ( + Private->EmuGraphicsWindow, + ModeData->HorizontalResolution, + ModeData->VerticalResolution + ); Fill.Red = 0; Fill.Green = 0; @@ -158,8 +152,6 @@ EmuGopSetMode ( return EFI_SUCCESS; } - - /** Blt a rectangle of pixels on the graphics screen. Blt stands for BLock Transfer. @@ -183,22 +175,22 @@ EmuGopSetMode ( EFI_STATUS EFIAPI EmuGopBlt ( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL, - IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, - IN UINTN SourceX, - IN UINTN SourceY, - IN UINTN DestinationX, - IN UINTN DestinationY, - IN UINTN Width, - IN UINTN Height, - IN UINTN Delta OPTIONAL + IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, + IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL, + IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, + IN UINTN SourceX, + IN UINTN SourceY, + IN UINTN DestinationX, + IN UINTN DestinationY, + IN UINTN Width, + IN UINTN Height, + IN UINTN Delta OPTIONAL ) { - GOP_PRIVATE_DATA *Private; - EFI_TPL OriginalTPL; - EFI_STATUS Status; - EMU_GRAPHICS_WINDOWS__BLT_ARGS GopBltArgs; + GOP_PRIVATE_DATA *Private; + EFI_TPL OriginalTPL; + EFI_STATUS Status; + EMU_GRAPHICS_WINDOWS__BLT_ARGS GopBltArgs; Private = GOP_PRIVATE_DATA_FROM_THIS (This); @@ -206,9 +198,10 @@ EmuGopBlt ( return EFI_INVALID_PARAMETER; } - if (Width == 0 || Height == 0) { + if ((Width == 0) || (Height == 0)) { return EFI_INVALID_PARAMETER; } + // // If Delta is zero, then the entire BltBuffer is being used, so Delta // is the number of bytes in each row of BltBuffer. Since BltBuffer is Width pixels size, @@ -236,19 +229,18 @@ EmuGopBlt ( GopBltArgs.SourceX = SourceX; GopBltArgs.SourceY = SourceY; GopBltArgs.Delta = Delta; - Status = Private->EmuGraphicsWindow->Blt ( - Private->EmuGraphicsWindow, - (EFI_UGA_PIXEL *)BltBuffer, - (EFI_UGA_BLT_OPERATION)BltOperation, - &GopBltArgs - ); + Status = Private->EmuGraphicsWindow->Blt ( + Private->EmuGraphicsWindow, + (EFI_UGA_PIXEL *)BltBuffer, + (EFI_UGA_BLT_OPERATION)BltOperation, + &GopBltArgs + ); gBS->RestoreTPL (OriginalTPL); return Status; } - // // Construction and Destruction functions // @@ -270,17 +262,16 @@ EmuGopSupported ( return EFI_SUCCESS; } - EFI_STATUS EmuGopStartWindow ( - IN GOP_PRIVATE_DATA *Private, - IN UINT32 HorizontalResolution, - IN UINT32 VerticalResolution, - IN UINT32 ColorDepth, - IN UINT32 RefreshRate + IN GOP_PRIVATE_DATA *Private, + IN UINT32 HorizontalResolution, + IN UINT32 VerticalResolution, + IN UINT32 ColorDepth, + IN UINT32 RefreshRate ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Register to be notified on exit boot services so we can destroy the window. @@ -298,27 +289,28 @@ EmuGopStartWindow ( Private->EmuGraphicsWindow = Private->EmuIoThunk->Interface; // Register callback to support RegisterKeyNotify() - Status = Private->EmuGraphicsWindow->RegisterKeyNotify ( - Private->EmuGraphicsWindow, - GopPrivateMakeCallbackFunction, - GopPrivateBreakCallbackFunction, - Private - ); + Status = Private->EmuGraphicsWindow->RegisterKeyNotify ( + Private->EmuGraphicsWindow, + GopPrivateMakeCallbackFunction, + GopPrivateBreakCallbackFunction, + Private + ); ASSERT_EFI_ERROR (Status); } + return Status; } EFI_STATUS EmuGopConstructor ( - GOP_PRIVATE_DATA *Private + GOP_PRIVATE_DATA *Private ) { Private->ModeData = mGopModeData; - Private->GraphicsOutput.QueryMode = EmuGopQuerytMode; - Private->GraphicsOutput.SetMode = EmuGopSetMode; - Private->GraphicsOutput.Blt = EmuGopBlt; + Private->GraphicsOutput.QueryMode = EmuGopQuerytMode; + Private->GraphicsOutput.SetMode = EmuGopSetMode; + Private->GraphicsOutput.Blt = EmuGopBlt; // // Allocate buffer for Graphics Output Protocol mode information @@ -327,26 +319,27 @@ EmuGopConstructor ( if (Private->GraphicsOutput.Mode == NULL) { return EFI_OUT_OF_RESOURCES; } + Private->GraphicsOutput.Mode->Info = AllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION)); if (Private->GraphicsOutput.Mode->Info == NULL) { return EFI_OUT_OF_RESOURCES; } - Private->GraphicsOutput.Mode->MaxMode = sizeof(mGopModeData) / sizeof(GOP_MODE_DATA); + Private->GraphicsOutput.Mode->MaxMode = sizeof (mGopModeData) / sizeof (GOP_MODE_DATA); // // Till now, we have no idea about the window size. // - Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER; - Private->GraphicsOutput.Mode->Info->Version = 0; + Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER; + Private->GraphicsOutput.Mode->Info->Version = 0; Private->GraphicsOutput.Mode->Info->HorizontalResolution = 0; - Private->GraphicsOutput.Mode->Info->VerticalResolution = 0; - Private->GraphicsOutput.Mode->Info->PixelFormat = PixelBltOnly; - Private->GraphicsOutput.Mode->SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); - Private->GraphicsOutput.Mode->FrameBufferBase = (EFI_PHYSICAL_ADDRESS) (UINTN) NULL; - Private->GraphicsOutput.Mode->FrameBufferSize = 0; + Private->GraphicsOutput.Mode->Info->VerticalResolution = 0; + Private->GraphicsOutput.Mode->Info->PixelFormat = PixelBltOnly; + Private->GraphicsOutput.Mode->SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION); + Private->GraphicsOutput.Mode->FrameBufferBase = (EFI_PHYSICAL_ADDRESS)(UINTN)NULL; + Private->GraphicsOutput.Mode->FrameBufferSize = 0; - Private->HardwareNeedsStarting = TRUE; - Private->EmuGraphicsWindow = NULL; + Private->HardwareNeedsStarting = TRUE; + Private->EmuGraphicsWindow = NULL; EmuGopInitializeSimpleTextInForWindow (Private); @@ -355,11 +348,9 @@ EmuGopConstructor ( return EFI_SUCCESS; } - - EFI_STATUS EmuGopDestructor ( - GOP_PRIVATE_DATA *Private + GOP_PRIVATE_DATA *Private ) { if (!Private->HardwareNeedsStarting) { @@ -374,19 +365,20 @@ EmuGopDestructor ( if (Private->GraphicsOutput.Mode->Info != NULL) { FreePool (Private->GraphicsOutput.Mode->Info); } + FreePool (Private->GraphicsOutput.Mode); } return EFI_SUCCESS; } - VOID EFIAPI ShutdownGopEvent ( IN EFI_EVENT Event, IN VOID *Context ) + /*++ Routine Description: diff --git a/EmulatorPkg/EmuSimpleFileSystemDxe/ComponentName.c b/EmulatorPkg/EmuSimpleFileSystemDxe/ComponentName.c index b8a3cd14b7..188ee8dd32 100644 --- a/EmulatorPkg/EmuSimpleFileSystemDxe/ComponentName.c +++ b/EmulatorPkg/EmuSimpleFileSystemDxe/ComponentName.c @@ -21,11 +21,11 @@ EmuSimpleFileSystemComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuSimpleFileSystemComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // @@ -43,7 +43,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuSimpleFileSystem "en" }; -EFI_UNICODE_STRING_TABLE mEmuSimpleFileSystemDriverNameTable[] = { +EFI_UNICODE_STRING_TABLE mEmuSimpleFileSystemDriverNameTable[] = { { "eng;en", L"Emu Simple File System Driver" @@ -102,15 +102,14 @@ EmuSimpleFileSystemComponentNameGetDriverName ( ) { return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mEmuSimpleFileSystemDriverNameTable, - DriverName, - (BOOLEAN)(This == &gEmuSimpleFileSystemComponentName) - ); + Language, + This->SupportedLanguages, + mEmuSimpleFileSystemDriverNameTable, + DriverName, + (BOOLEAN)(This == &gEmuSimpleFileSystemComponentName) + ); } - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -182,16 +181,16 @@ EmuSimpleFileSystemComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuSimpleFileSystemComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; + EFI_STATUS Status; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; // // This is a device driver, so ChildHandle must be NULL. @@ -211,13 +210,14 @@ EmuSimpleFileSystemComponentNameGetControllerName ( if (EFI_ERROR (Status)) { return EFI_UNSUPPORTED; } + // // Get our context back // Status = gBS->OpenProtocol ( ControllerHandle, &gEfiSimpleFileSystemProtocolGuid, - (VOID**)&SimpleFileSystem, + (VOID **)&SimpleFileSystem, gEmuSimpleFileSystemDriverBinding.DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -229,10 +229,10 @@ EmuSimpleFileSystemComponentNameGetControllerName ( Private = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (SimpleFileSystem); return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - Private->ControllerNameTable, - ControllerName, - (BOOLEAN)(This == &gEmuSimpleFileSystemComponentName) - ); + Language, + This->SupportedLanguages, + Private->ControllerNameTable, + ControllerName, + (BOOLEAN)(This == &gEmuSimpleFileSystemComponentName) + ); } diff --git a/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.c b/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.c index 6cea25b140..42cd3fcf94 100644 --- a/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.c +++ b/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.c @@ -12,9 +12,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "EmuSimpleFileSystem.h" - - - /** Opens a new file relative to the source file's location. @@ -38,44 +35,44 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI EmuSimpleFileSystemOpen ( - IN EFI_FILE_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes + IN EFI_FILE_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **NewHandle, + IN CHAR16 *FileName, + IN UINT64 OpenMode, + IN UINT64 Attributes ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EMU_EFI_FILE_PRIVATE *NewPrivateFile; + EFI_STATUS Status; + EFI_TPL OldTpl; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EMU_EFI_FILE_PRIVATE *NewPrivateFile; // // Check for obvious invalid parameters. // - if (This == NULL || NewHandle == NULL || FileName == NULL) { + if ((This == NULL) || (NewHandle == NULL) || (FileName == NULL)) { return EFI_INVALID_PARAMETER; } switch (OpenMode) { - case EFI_FILE_MODE_CREATE | EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE: - if (Attributes &~EFI_FILE_VALID_ATTR) { - return EFI_INVALID_PARAMETER; - } + case EFI_FILE_MODE_CREATE | EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE: + if (Attributes &~EFI_FILE_VALID_ATTR) { + return EFI_INVALID_PARAMETER; + } - if (Attributes & EFI_FILE_READ_ONLY) { - return EFI_INVALID_PARAMETER; - } + if (Attributes & EFI_FILE_READ_ONLY) { + return EFI_INVALID_PARAMETER; + } - // - // fall through - // - case EFI_FILE_MODE_READ: - case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE: - break; + // + // fall through + // + case EFI_FILE_MODE_READ: + case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE: + break; - default: - return EFI_INVALID_PARAMETER; + default: + return EFI_INVALID_PARAMETER; } OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -88,7 +85,6 @@ EmuSimpleFileSystemOpen ( goto Done; } - Status = PrivateFile->Io->Open (PrivateFile->Io, &NewPrivateFile->Io, FileName, OpenMode, Attributes); if (!EFI_ERROR (Status)) { *NewHandle = &NewPrivateFile->EfiFile; @@ -103,8 +99,6 @@ Done: return Status; } - - /** Close the file handle @@ -119,9 +113,9 @@ EmuSimpleFileSystemClose ( IN EFI_FILE_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -141,7 +135,6 @@ EmuSimpleFileSystemClose ( return Status; } - /** Close and delete the file handle. @@ -157,9 +150,9 @@ EmuSimpleFileSystemDelete ( IN EFI_FILE_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -179,7 +172,6 @@ EmuSimpleFileSystemDelete ( return Status; } - /** Read data from the file. @@ -202,11 +194,11 @@ EmuSimpleFileSystemRead ( OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; - if (This == NULL || BufferSize == NULL) { + if ((This == NULL) || (BufferSize == NULL)) { return EFI_INVALID_PARAMETER; } @@ -225,7 +217,6 @@ EmuSimpleFileSystemRead ( return Status; } - /** Write data to a file. @@ -253,10 +244,10 @@ EmuSimpleFileSystemWrite ( ) { EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; + EMU_EFI_FILE_PRIVATE *PrivateFile; EFI_TPL OldTpl; - if (This == NULL || BufferSize == NULL || Buffer == NULL) { + if ((This == NULL) || (BufferSize == NULL) || (Buffer == NULL)) { return EFI_INVALID_PARAMETER; } @@ -270,7 +261,6 @@ EmuSimpleFileSystemWrite ( return Status; } - /** Get a file's current position @@ -284,21 +274,21 @@ EmuSimpleFileSystemWrite ( EFI_STATUS EFIAPI EmuSimpleFileSystemGetPosition ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position + IN EFI_FILE_PROTOCOL *This, + OUT UINT64 *Position ) { EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; + EMU_EFI_FILE_PRIVATE *PrivateFile; EFI_TPL OldTpl; - if (This == NULL || Position == NULL) { + if ((This == NULL) || (Position == NULL)) { return EFI_INVALID_PARAMETER; } OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); + PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); Status = PrivateFile->Io->GetPosition (PrivateFile->Io, Position); @@ -306,8 +296,6 @@ EmuSimpleFileSystemGetPosition ( return Status; } - - /** Set file's current position @@ -325,9 +313,9 @@ EmuSimpleFileSystemSetPosition ( IN UINT64 Position ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -343,7 +331,6 @@ EmuSimpleFileSystemSetPosition ( return Status; } - /** Get information about a file. @@ -371,11 +358,11 @@ EmuSimpleFileSystemGetInfo ( OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; - if (This == NULL || InformationType == NULL || BufferSize == NULL) { + if ((This == NULL) || (InformationType == NULL) || (BufferSize == NULL)) { return EFI_INVALID_PARAMETER; } @@ -389,7 +376,6 @@ EmuSimpleFileSystemGetInfo ( return Status; } - /** Set information about a file @@ -410,26 +396,26 @@ EmuSimpleFileSystemGetInfo ( EFI_STATUS EFIAPI EmuSimpleFileSystemSetInfo ( - IN EFI_FILE_PROTOCOL*This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN UINTN BufferSize, + IN VOID *Buffer ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; // // Check for invalid parameters. // - if (This == NULL || InformationType == NULL || BufferSize == 0 || Buffer == NULL) { + if ((This == NULL) || (InformationType == NULL) || (BufferSize == 0) || (Buffer == NULL)) { return EFI_INVALID_PARAMETER; } OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); + PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); Status = PrivateFile->Io->SetInfo (PrivateFile->Io, InformationType, BufferSize, Buffer); @@ -437,7 +423,6 @@ EmuSimpleFileSystemSetInfo ( return Status; } - /** Flush data back for the file handle. @@ -459,9 +444,9 @@ EmuSimpleFileSystemFlush ( IN EFI_FILE_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -477,8 +462,6 @@ EmuSimpleFileSystemFlush ( return Status; } - - /** Open the root directory on a volume. @@ -501,14 +484,14 @@ EmuSimpleFileSystemOpenVolume ( OUT EFI_FILE_PROTOCOL **Root ) { - EFI_STATUS Status; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_TPL OldTpl; + EFI_STATUS Status; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_TPL OldTpl; Status = EFI_UNSUPPORTED; - if (This == NULL || Root == NULL) { + if ((This == NULL) || (Root == NULL)) { return EFI_INVALID_PARAMETER; } @@ -522,22 +505,22 @@ EmuSimpleFileSystemOpenVolume ( goto Done; } - PrivateFile->Signature = EMU_EFI_FILE_PRIVATE_SIGNATURE; - PrivateFile->IoThunk = Private->IoThunk; - PrivateFile->SimpleFileSystem = This; + PrivateFile->Signature = EMU_EFI_FILE_PRIVATE_SIGNATURE; + PrivateFile->IoThunk = Private->IoThunk; + PrivateFile->SimpleFileSystem = This; ZeroMem (&PrivateFile->EfiFile, sizeof (PrivateFile->EfiFile)); - PrivateFile->EfiFile.Revision = EFI_FILE_PROTOCOL_REVISION; - PrivateFile->EfiFile.Open = EmuSimpleFileSystemOpen; - PrivateFile->EfiFile.Close = EmuSimpleFileSystemClose; - PrivateFile->EfiFile.Delete = EmuSimpleFileSystemDelete; - PrivateFile->EfiFile.Read = EmuSimpleFileSystemRead; - PrivateFile->EfiFile.Write = EmuSimpleFileSystemWrite; - PrivateFile->EfiFile.GetPosition = EmuSimpleFileSystemGetPosition; - PrivateFile->EfiFile.SetPosition = EmuSimpleFileSystemSetPosition; - PrivateFile->EfiFile.GetInfo = EmuSimpleFileSystemGetInfo; - PrivateFile->EfiFile.SetInfo = EmuSimpleFileSystemSetInfo; - PrivateFile->EfiFile.Flush = EmuSimpleFileSystemFlush; + PrivateFile->EfiFile.Revision = EFI_FILE_PROTOCOL_REVISION; + PrivateFile->EfiFile.Open = EmuSimpleFileSystemOpen; + PrivateFile->EfiFile.Close = EmuSimpleFileSystemClose; + PrivateFile->EfiFile.Delete = EmuSimpleFileSystemDelete; + PrivateFile->EfiFile.Read = EmuSimpleFileSystemRead; + PrivateFile->EfiFile.Write = EmuSimpleFileSystemWrite; + PrivateFile->EfiFile.GetPosition = EmuSimpleFileSystemGetPosition; + PrivateFile->EfiFile.SetPosition = EmuSimpleFileSystemSetPosition; + PrivateFile->EfiFile.GetInfo = EmuSimpleFileSystemGetInfo; + PrivateFile->EfiFile.SetInfo = EmuSimpleFileSystemSetInfo; + PrivateFile->EfiFile.Flush = EmuSimpleFileSystemFlush; *Root = &PrivateFile->EfiFile; @@ -562,7 +545,6 @@ EmuSimpleFileSystemOpenVolume ( FALSE ); - Done: if (EFI_ERROR (Status)) { if (PrivateFile) { @@ -627,7 +609,7 @@ EmuSimpleFileSystemDriverBindingSupported ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; + EFI_STATUS Status; EMU_IO_THUNK_PROTOCOL *EmuIoThunk; // @@ -657,17 +639,15 @@ EmuSimpleFileSystemDriverBindingSupported ( // Close the I/O Abstraction(s) used to perform the supported test // gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); return Status; } - - /** Starts a device controller or a bus controller. @@ -706,14 +686,14 @@ EmuSimpleFileSystemDriverBindingSupported ( EFI_STATUS EFIAPI EmuSimpleFileSystemDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; Private = NULL; @@ -755,8 +735,8 @@ EmuSimpleFileSystemDriverBindingStart ( Private->IoThunk = EmuIoThunk; Private->Io = EmuIoThunk->Interface; - Private->SimpleFileSystem.Revision = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION; - Private->SimpleFileSystem.OpenVolume = EmuSimpleFileSystemOpenVolume; + Private->SimpleFileSystem.Revision = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION; + Private->SimpleFileSystem.OpenVolume = EmuSimpleFileSystemOpenVolume; Private->ControllerNameTable = NULL; @@ -778,7 +758,8 @@ EmuSimpleFileSystemDriverBindingStart ( Status = gBS->InstallMultipleProtocolInterfaces ( &ControllerHandle, - &gEfiSimpleFileSystemProtocolGuid, &Private->SimpleFileSystem, + &gEfiSimpleFileSystemProtocolGuid, + &Private->SimpleFileSystem, NULL ); @@ -790,21 +771,19 @@ Done: } gBS->FreePool (Private); - } gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); } return Status; } - /** Stops a device controller or a bus controller. @@ -840,9 +819,9 @@ EmuSimpleFileSystemDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_STATUS Status; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; + EFI_STATUS Status; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; // // Get our context back @@ -866,7 +845,8 @@ EmuSimpleFileSystemDriverBindingStop ( // Status = gBS->UninstallMultipleProtocolInterfaces ( ControllerHandle, - &gEfiSimpleFileSystemProtocolGuid, &Private->SimpleFileSystem, + &gEfiSimpleFileSystemProtocolGuid, + &Private->SimpleFileSystem, NULL ); if (!EFI_ERROR (Status)) { @@ -892,8 +872,7 @@ EmuSimpleFileSystemDriverBindingStop ( return Status; } - -EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding = { EmuSimpleFileSystemDriverBindingSupported, EmuSimpleFileSystemDriverBindingStart, EmuSimpleFileSystemDriverBindingStop, @@ -902,9 +881,6 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding = { NULL }; - - - /** The user Entry Point for module EmuSimpleFileSystem. The user code starts with this function. @@ -917,12 +893,12 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding = { **/ EFI_STATUS EFIAPI -InitializeEmuSimpleFileSystem( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable +InitializeEmuSimpleFileSystem ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EfiLibInstallDriverBindingComponentName2 ( ImageHandle, diff --git a/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.h b/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.h index c87ff653a2..61964137a4 100644 --- a/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.h +++ b/EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystem.h @@ -30,19 +30,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include +extern EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gEmuSimpleFileSystemComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSimpleFileSystemComponentName2; -extern EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gEmuSimpleFileSystemComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSimpleFileSystemComponentName2; - -#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'f', 's') +#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'f', 's') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *IoThunk; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Io; - EFI_UNICODE_STRING_TABLE *ControllerNameTable; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *IoThunk; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Io; + EFI_UNICODE_STRING_TABLE *ControllerNameTable; } EMU_SIMPLE_FILE_SYSTEM_PRIVATE; #define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS(a) \ @@ -52,14 +51,14 @@ typedef struct { EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE \ ) -#define EMU_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('e', 'm', 'f', 's') +#define EMU_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('e', 'm', 'f', 's') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *IoThunk; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; - EFI_FILE_PROTOCOL EfiFile; - EFI_FILE_PROTOCOL *Io; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *IoThunk; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; + EFI_FILE_PROTOCOL EfiFile; + EFI_FILE_PROTOCOL *Io; } EMU_EFI_FILE_PRIVATE; #define EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS(a) \ @@ -69,6 +68,4 @@ typedef struct { EMU_EFI_FILE_PRIVATE_SIGNATURE \ ) - - #endif diff --git a/EmulatorPkg/EmuSnpDxe/ComponentName.c b/EmulatorPkg/EmuSnpDxe/ComponentName.c index 19424bb34b..b6c04e02c6 100644 --- a/EmulatorPkg/EmuSnpDxe/ComponentName.c +++ b/EmulatorPkg/EmuSnpDxe/ComponentName.c @@ -17,6 +17,7 @@ Abstract: // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -64,7 +65,6 @@ EmuSnpDriverComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -136,14 +136,13 @@ EmuSnpDriverComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuSnpDriverComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // @@ -156,14 +155,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gEmuSnpDriverComponen // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuSnpDriverComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) EmuSnpDriverComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) EmuSnpDriverComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gEmuSnpDriverComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)EmuSnpDriverComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)EmuSnpDriverComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mEmuSnpDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mEmuSnpDriverNameTable[] = { { "eng;en", L"Emu SNP Driver" @@ -301,11 +299,11 @@ EmuSnpDriverComponentNameGetDriverName ( EFI_STATUS EFIAPI EmuSnpDriverComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { return EFI_UNSUPPORTED; diff --git a/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.c b/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.c index 8e7c5331ff..5b98961c20 100644 --- a/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.c +++ b/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.c @@ -15,9 +15,7 @@ Abstract: #include "EmuSnpDxe.h" - - -EFI_SIMPLE_NETWORK_PROTOCOL gEmuSnpTemplate = { +EFI_SIMPLE_NETWORK_PROTOCOL gEmuSnpTemplate = { EFI_SIMPLE_NETWORK_PROTOCOL_REVISION, EmuSnpStart, EmuSnpStop, @@ -34,9 +32,9 @@ EFI_SIMPLE_NETWORK_PROTOCOL gEmuSnpTemplate = { EmuSnpReceive, NULL, // WaitForPacket NULL // Mode - }; +}; -EFI_SIMPLE_NETWORK_MODE gEmuSnpModeTemplate = { +EFI_SIMPLE_NETWORK_MODE gEmuSnpModeTemplate = { EfiSimpleNetworkStopped, // State NET_ETHER_ADDR_LEN, // HwAddressSize NET_ETHER_HEADER_SIZE, // MediaHeaderSize @@ -48,7 +46,9 @@ EFI_SIMPLE_NETWORK_MODE gEmuSnpModeTemplate = { MAX_MCAST_FILTER_CNT, // MaxMCastFilterCount 0, // MCastFilterCount { - { { 0 } } + { + { 0 } + } }, // MCastFilter { { 0 } @@ -66,7 +66,6 @@ EFI_SIMPLE_NETWORK_MODE gEmuSnpModeTemplate = { TRUE // MediaPresent }; - /** Changes the state of a network interface from "stopped" to "started". @@ -77,12 +76,12 @@ EFI_SIMPLE_NETWORK_MODE gEmuSnpModeTemplate = { **/ EFI_STATUS EFIAPI -EmuSnpStart( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This +EmuSnpStart ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -90,7 +89,6 @@ EmuSnpStart( return Status; } - /** Changes the state of a network interface from "started" to "stopped". @@ -102,11 +100,11 @@ EmuSnpStart( EFI_STATUS EFIAPI EmuSnpStop ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -114,7 +112,6 @@ EmuSnpStop ( return Status; } - /** Resets a network adapter and allocates the transmit and receive buffers required by the network interface; optionally, also requests allocation @@ -138,13 +135,13 @@ EmuSnpStop ( EFI_STATUS EFIAPI EmuSnpInitialize ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -167,12 +164,12 @@ EmuSnpInitialize ( EFI_STATUS EFIAPI EmuSnpReset ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -192,11 +189,11 @@ EmuSnpReset ( EFI_STATUS EFIAPI EmuSnpShutdown ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -228,16 +225,16 @@ EmuSnpShutdown ( EFI_STATUS EFIAPI EmuSnpReceiveFilters ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINT32 EnableBits, - IN UINT32 DisableBits, - IN BOOLEAN ResetMcastFilter, - IN UINTN McastFilterCount OPTIONAL, - IN EFI_MAC_ADDRESS *McastFilter OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINT32 EnableBits, + IN UINT32 DisableBits, + IN BOOLEAN ResetMcastFilter, + IN UINTN McastFilterCount OPTIONAL, + IN EFI_MAC_ADDRESS *McastFilter OPTIONAL ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -266,13 +263,13 @@ EmuSnpReceiveFilters ( EFI_STATUS EFIAPI EmuSnpStationAddress ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *NewMacAddr OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *NewMacAddr OPTIONAL ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -302,14 +299,14 @@ EmuSnpStationAddress ( EFI_STATUS EFIAPI EmuSnpStatistics ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -339,14 +336,14 @@ EmuSnpStatistics ( EFI_STATUS EFIAPI EmuSnpMcastIptoMac ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Ipv6, - IN EFI_IP_ADDRESS *Ip, - OUT EFI_MAC_ADDRESS *Mac + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Ipv6, + IN EFI_IP_ADDRESS *Ip, + OUT EFI_MAC_ADDRESS *Mac ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -354,7 +351,6 @@ EmuSnpMcastIptoMac ( return Status; } - /** Performs read and write operations on the NVRAM device attached to a network interface. @@ -374,15 +370,15 @@ EmuSnpMcastIptoMac ( EFI_STATUS EFIAPI EmuSnpNvdata ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN ReadOrWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ReadOrWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -390,7 +386,6 @@ EmuSnpNvdata ( return Status; } - /** Reads the current interrupt status and recycled transmit buffer status from a network interface. @@ -415,13 +410,13 @@ EmuSnpNvdata ( EFI_STATUS EFIAPI EmuSnpGetStatus ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - OUT UINT32 *InterruptStatus, - OUT VOID **TxBuffer + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINT32 *InterruptStatus, + OUT VOID **TxBuffer ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -429,7 +424,6 @@ EmuSnpGetStatus ( return Status; } - /** Places a packet in the transmit queue of a network interface. @@ -463,17 +457,17 @@ EmuSnpGetStatus ( EFI_STATUS EFIAPI EmuSnpTransmit ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID* Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -522,17 +516,17 @@ EmuSnpTransmit ( EFI_STATUS EFIAPI EmuSnpReceive ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BuffSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SourceAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestinationAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BuffSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SourceAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestinationAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS (This); @@ -548,8 +542,6 @@ EmuSnpReceive ( return Status; } - - /** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -583,15 +575,15 @@ EmuSnpDriverBindingSupported ( if (RemainingDevicePath != NULL) { if (!IsDevicePathEnd (RemainingDevicePath)) { Node = (MAC_ADDR_DEVICE_PATH *)RemainingDevicePath; - if (Node->Header.Type != MESSAGING_DEVICE_PATH || - Node->Header.SubType != MSG_MAC_ADDR_DP) { + if ((Node->Header.Type != MESSAGING_DEVICE_PATH) || + (Node->Header.SubType != MSG_MAC_ADDR_DP)) + { // If the remaining device path does not match we don't support the request return EFI_UNSUPPORTED; } } } - // // Open the IO Abstraction(s) needed to perform the supported test // @@ -611,12 +603,11 @@ EmuSnpDriverBindingSupported ( // Close the I/O Abstraction(s) used to perform the supported test // gBS->CloseProtocol ( - ControllerHandle, - &gEmuIoThunkProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); - + ControllerHandle, + &gEmuIoThunkProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); // // Open the EFI Device Path protocol needed to perform the supported test @@ -624,7 +615,7 @@ EmuSnpDriverBindingSupported ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &ParentDevicePath, + (VOID **)&ParentDevicePath, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -649,16 +640,15 @@ EmuSnpDriverBindingSupported ( // Close protocol, don't use device path protocol in the Support() function // gBS->CloseProtocol ( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + ControllerHandle, + &gEfiDevicePathProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); return Status; } - /** Start this driver on ControllerHandle. This service is called by the EFI boot service ConnectController(). In order to make @@ -683,21 +673,21 @@ EmuSnpDriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; - EMU_SNP_PRIVATE_DATA *Private; - MAC_ADDR_DEVICE_PATH Node; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EMU_SNP_PRIVATE_DATA *Private; + MAC_ADDR_DEVICE_PATH Node; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; Private = NULL; // // Grab the protocols we need // - Status = gBS->OpenProtocol( + Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - ( VOID ** ) &ParentDevicePath, + (VOID **)&ParentDevicePath, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -739,15 +729,14 @@ EmuSnpDriverBindingStart ( CopyMem (&Private->Snp, &gEmuSnpTemplate, sizeof (EFI_SIMPLE_NETWORK_PROTOCOL)); CopyMem (&Private->Mode, &gEmuSnpModeTemplate, sizeof (EFI_SIMPLE_NETWORK_MODE)); - Private->Signature = EMU_SNP_PRIVATE_DATA_SIGNATURE; - Private->IoThunk = EmuIoThunk; - Private->Io = EmuIoThunk->Interface; - Private->EfiHandle = ControllerHandle; - Private->DeviceHandle = NULL; - Private->Snp.Mode = &Private->Mode; + Private->Signature = EMU_SNP_PRIVATE_DATA_SIGNATURE; + Private->IoThunk = EmuIoThunk; + Private->Io = EmuIoThunk->Interface; + Private->EfiHandle = ControllerHandle; + Private->DeviceHandle = NULL; + Private->Snp.Mode = &Private->Mode; Private->ControllerNameTable = NULL; - Status = Private->Io->CreateMapping (Private->Io, &Private->Mode); if (EFI_ERROR (Status)) { goto Done; @@ -759,11 +748,11 @@ EmuSnpDriverBindingStart ( // ZeroMem (&Node, sizeof (MAC_ADDR_DEVICE_PATH)); - Node.Header.Type = MESSAGING_DEVICE_PATH; - Node.Header.SubType = MSG_MAC_ADDR_DP; - Node.IfType = Private->Mode.IfType; + Node.Header.Type = MESSAGING_DEVICE_PATH; + Node.Header.SubType = MSG_MAC_ADDR_DP; + Node.IfType = Private->Mode.IfType; - SetDevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL * )&Node, sizeof (MAC_ADDR_DEVICE_PATH)); + SetDevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *)&Node, sizeof (MAC_ADDR_DEVICE_PATH)); CopyMem (&Node.MacAddress, &Private->Mode.CurrentAddress, sizeof (EFI_MAC_ADDRESS)); @@ -795,10 +784,12 @@ EmuSnpDriverBindingStart ( // // Create Child Handle // - Status = gBS->InstallMultipleProtocolInterfaces( + Status = gBS->InstallMultipleProtocolInterfaces ( &Private->DeviceHandle, - &gEfiSimpleNetworkProtocolGuid, &Private->Snp, - &gEfiDevicePathProtocolGuid, Private->DevicePath, + &gEfiSimpleNetworkProtocolGuid, + &Private->Snp, + &gEfiDevicePathProtocolGuid, + Private->DevicePath, NULL ); if (EFI_ERROR (Status)) { @@ -822,13 +813,14 @@ Done: if (Private != NULL) { FreePool (Private); } + if (ParentDevicePath != NULL) { - gBS->CloseProtocol( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); + gBS->CloseProtocol ( + ControllerHandle, + &gEfiDevicePathProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); } } @@ -855,16 +847,16 @@ Done: EFI_STATUS EFIAPI EmuSnpDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE_DATA *Private = NULL; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - VOID *EmuIoThunk; + EFI_STATUS Status; + EMU_SNP_PRIVATE_DATA *Private = NULL; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + VOID *EmuIoThunk; // // Complete all outstanding transactions to Controller. @@ -892,14 +884,13 @@ EmuSnpDriverBindingStop ( ASSERT (NumberOfChildren == 1); - // // Get our context back. // - Status = gBS->OpenProtocol( + Status = gBS->OpenProtocol ( ChildHandleBuffer[0], &gEfiSimpleNetworkProtocolGuid, - ( VOID ** ) &Snp, + (VOID **)&Snp, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -912,7 +903,7 @@ EmuSnpDriverBindingStop ( ASSERT (Private->DeviceHandle == ChildHandleBuffer[0]); ASSERT (Private->EfiHandle == ControllerHandle); - Status = gBS->CloseProtocol( + Status = gBS->CloseProtocol ( ControllerHandle, &gEmuIoThunkProtocolGuid, This->DriverBindingHandle, @@ -920,10 +911,12 @@ EmuSnpDriverBindingStop ( ); ASSERT_EFI_ERROR (Status); - Status = gBS->UninstallMultipleProtocolInterfaces( + Status = gBS->UninstallMultipleProtocolInterfaces ( Private->DeviceHandle, - &gEfiSimpleNetworkProtocolGuid, &Private->Snp, - &gEfiDevicePathProtocolGuid, Private->DevicePath, + &gEfiSimpleNetworkProtocolGuid, + &Private->Snp, + &gEfiDevicePathProtocolGuid, + Private->DevicePath, NULL ); if (EFI_ERROR (Status)) { @@ -947,8 +940,7 @@ EmuSnpDriverBindingStop ( return Status; } - -EFI_DRIVER_BINDING_PROTOCOL gEmuSnpDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gEmuSnpDriverBinding = { EmuSnpDriverBindingSupported, EmuSnpDriverBindingStart, EmuSnpDriverBindingStop, @@ -957,8 +949,6 @@ EFI_DRIVER_BINDING_PROTOCOL gEmuSnpDriverBinding = { NULL }; - - /** This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including @@ -975,22 +965,22 @@ EFI_STATUS EFIAPI InitializeEmuSnpDriver ( IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Install the Driver Protocols // - Status = EfiLibInstallDriverBindingComponentName2( - ImageHandle, - SystemTable, - &gEmuSnpDriverBinding, - ImageHandle, - &gEmuSnpDriverComponentName, - &gEmuSnpDriverComponentName2 - ); + Status = EfiLibInstallDriverBindingComponentName2 ( + ImageHandle, + SystemTable, + &gEmuSnpDriverBinding, + ImageHandle, + &gEmuSnpDriverComponentName, + &gEmuSnpDriverComponentName2 + ); return Status; } diff --git a/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.h b/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.h index 6eb9a740b2..2d66eb748e 100644 --- a/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.h +++ b/EmulatorPkg/EmuSnpDxe/EmuSnpDxe.h @@ -22,7 +22,6 @@ Abstract: #include #include - #include #include #include @@ -32,35 +31,34 @@ Abstract: #include #include -#define NET_ETHER_HEADER_SIZE 14 +#define NET_ETHER_HEADER_SIZE 14 // // Private data for driver. // -#define EMU_SNP_PRIVATE_DATA_SIGNATURE SIGNATURE_32( 'U', 'S', 'N', 'P' ) +#define EMU_SNP_PRIVATE_DATA_SIGNATURE SIGNATURE_32( 'U', 'S', 'N', 'P' ) typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *IoThunk; - EMU_SNP_PROTOCOL *Io; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - - EFI_HANDLE EfiHandle; - EFI_HANDLE DeviceHandle; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *IoThunk; + EMU_SNP_PROTOCOL *Io; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_SIMPLE_NETWORK_PROTOCOL Snp; - EFI_SIMPLE_NETWORK_MODE Mode; + EFI_HANDLE EfiHandle; + EFI_HANDLE DeviceHandle; - EFI_UNICODE_STRING_TABLE *ControllerNameTable; + EFI_SIMPLE_NETWORK_PROTOCOL Snp; + EFI_SIMPLE_NETWORK_MODE Mode; + EFI_UNICODE_STRING_TABLE *ControllerNameTable; } EMU_SNP_PRIVATE_DATA; #define EMU_SNP_PRIVATE_DATA_FROM_SNP_THIS(a) \ CR( a, EMU_SNP_PRIVATE_DATA, Snp, EMU_SNP_PRIVATE_DATA_SIGNATURE ) -extern EFI_DRIVER_BINDING_PROTOCOL gEmuSnpDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gEmuSnpDriverComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSnpDriverComponentName2; +extern EFI_DRIVER_BINDING_PROTOCOL gEmuSnpDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gEmuSnpDriverComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSnpDriverComponentName2; /** Test to see if this driver supports ControllerHandle. This service @@ -82,9 +80,9 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSnpDriverComponentName2; EFI_STATUS EFIAPI EmuSnpDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, + IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -106,9 +104,9 @@ EmuSnpDriverBindingSupported ( EFI_STATUS EFIAPI EmuSnpDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, + IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -147,8 +145,8 @@ EmuSnpDriverBindingStop ( **/ EFI_STATUS EFIAPI -EmuSnpStart( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This +EmuSnpStart ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ); /** @@ -161,8 +159,8 @@ EmuSnpStart( **/ EFI_STATUS EFIAPI -EmuSnpStop( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This +EmuSnpStop ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ); /** @@ -187,10 +185,10 @@ EmuSnpStop( **/ EFI_STATUS EFIAPI -EmuSnpInitialize( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL +EmuSnpInitialize ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ); /** @@ -207,9 +205,9 @@ EmuSnpInitialize( **/ EFI_STATUS EFIAPI -EmuSnpReset( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN BOOLEAN ExtendedVerification +EmuSnpReset ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ); /** @@ -223,8 +221,8 @@ EmuSnpReset( **/ EFI_STATUS EFIAPI -EmuSnpShutdown( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This +EmuSnpShutdown ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ); /** @@ -250,13 +248,13 @@ EmuSnpShutdown( **/ EFI_STATUS EFIAPI -EmuSnpReceiveFilters( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN UINT32 EnableBits, - IN UINT32 DisableBits, - IN BOOLEAN ResetMcastFilter, - IN UINTN McastFilterCount OPTIONAL, - IN EFI_MAC_ADDRESS* McastFilter OPTIONAL +EmuSnpReceiveFilters ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINT32 EnableBits, + IN UINT32 DisableBits, + IN BOOLEAN ResetMcastFilter, + IN UINTN McastFilterCount OPTIONAL, + IN EFI_MAC_ADDRESS *McastFilter OPTIONAL ); /** @@ -272,10 +270,10 @@ EmuSnpReceiveFilters( **/ EFI_STATUS EFIAPI -EmuSnpStationAddress( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS* NewMacAddr OPTIONAL +EmuSnpStationAddress ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *NewMacAddr OPTIONAL ); /** @@ -299,11 +297,11 @@ EmuSnpStationAddress( **/ EFI_STATUS EFIAPI -EmuSnpStatistics( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN BOOLEAN Reset, - IN OUT UINTN* StatisticsSize OPTIONAL, - OUT EFI_NETWORK_STATISTICS* StatisticsTable OPTIONAL +EmuSnpStatistics ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ); /** @@ -327,11 +325,11 @@ EmuSnpStatistics( **/ EFI_STATUS EFIAPI -EmuSnpMcastIptoMac( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN BOOLEAN Ipv6, - IN EFI_IP_ADDRESS* Ip, - OUT EFI_MAC_ADDRESS* Mac +EmuSnpMcastIptoMac ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Ipv6, + IN EFI_IP_ADDRESS *Ip, + OUT EFI_MAC_ADDRESS *Mac ); /** @@ -352,12 +350,12 @@ EmuSnpMcastIptoMac( **/ EFI_STATUS EFIAPI -EmuSnpNvdata( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN BOOLEAN ReadOrWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID* Buffer +EmuSnpNvdata ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ReadOrWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ); /** @@ -383,10 +381,10 @@ EmuSnpNvdata( **/ EFI_STATUS EFIAPI -EmuSnpGetStatus( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - OUT UINT32* InterruptStatus, - OUT VOID** TxBuffer +EmuSnpGetStatus ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINT32 *InterruptStatus, + OUT VOID **TxBuffer ); /** @@ -420,14 +418,14 @@ EmuSnpGetStatus( **/ EFI_STATUS EFIAPI -EmuSnpTransmit( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID* Buffer, - IN EFI_MAC_ADDRESS* SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS* DestAddr OPTIONAL, - IN UINT16* Protocol OPTIONAL +EmuSnpTransmit ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ); /** @@ -462,21 +460,21 @@ EmuSnpTransmit( **/ EFI_STATUS EFIAPI -EmuSnpReceive( - IN EFI_SIMPLE_NETWORK_PROTOCOL* This, - OUT UINTN* HeaderSize OPTIONAL, - IN OUT UINTN* BuffSize, - OUT VOID* Buffer, - OUT EFI_MAC_ADDRESS* SourceAddr OPTIONAL, - OUT EFI_MAC_ADDRESS* DestinationAddr OPTIONAL, - OUT UINT16* Protocol OPTIONAL +EmuSnpReceive ( + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BuffSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SourceAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestinationAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ); VOID EFIAPI -EmuSnpWaitForPacketNotify( - IN EFI_EVENT Event, - IN VOID* Private +EmuSnpWaitForPacketNotify ( + IN EFI_EVENT Event, + IN VOID *Private ); -#endif // _EMU_SNP_H_ +#endif // _EMU_SNP_H_ diff --git a/EmulatorPkg/EmuThunkDxe/EmuThunk.c b/EmulatorPkg/EmuThunkDxe/EmuThunk.c index d26d52ae36..97cdf16975 100644 --- a/EmulatorPkg/EmuThunkDxe/EmuThunk.c +++ b/EmulatorPkg/EmuThunkDxe/EmuThunk.c @@ -22,15 +22,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EmuThunk Device Path Protocol Instance // -EMU_THUNK_DEVICE_PATH mEmuThunkDevicePath = { +EMU_THUNK_DEVICE_PATH mEmuThunkDevicePath = { { { { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), - (UINT8) ((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) + (UINT8)(sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), + (UINT8)((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) } }, EMU_THUNK_PROTOCOL_GUID @@ -47,13 +47,13 @@ EMU_THUNK_DEVICE_PATH mEmuThunkDevicePath = { } }; - EFI_STATUS EFIAPI InitializeEmuThunk ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) + /*++ Routine Description: @@ -74,8 +74,10 @@ Returns: Handle = NULL; Status = gBS->InstallMultipleProtocolInterfaces ( &Handle, - &gEmuThunkProtocolGuid, gEmuThunk, - &gEfiDevicePathProtocolGuid, &mEmuThunkDevicePath, + &gEmuThunkProtocolGuid, + gEmuThunk, + &gEfiDevicePathProtocolGuid, + &mEmuThunkDevicePath, NULL ); diff --git a/EmulatorPkg/FirmwareVolumePei/FirmwareVolumePei.c b/EmulatorPkg/FirmwareVolumePei/FirmwareVolumePei.c index 4a3bfb226c..12b223e321 100644 --- a/EmulatorPkg/FirmwareVolumePei/FirmwareVolumePei.c +++ b/EmulatorPkg/FirmwareVolumePei/FirmwareVolumePei.c @@ -18,9 +18,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI PeimInitializeFirmwareVolumePei ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) + /*++ Routine Description: @@ -50,11 +51,11 @@ Returns: // Get the Fwh Information PPI // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, // GUID - 0, // INSTANCE - &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR - (VOID **)&Thunk // PPI - ); + &gEmuThunkPpiGuid, // GUID + 0, // INSTANCE + &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR + (VOID **)&Thunk // PPI + ); ASSERT_EFI_ERROR (Status); Index = 0; @@ -67,7 +68,7 @@ Returns: // // Assume the FD starts with an FV header // - FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) FdBase; + FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FdBase; // // Make an FV Hob for the first FV in the FD @@ -85,19 +86,19 @@ Returns: (EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_INITIALIZED | EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE), FdBase, ( - FvHeader->FvLength + - PcdGet32 (PcdFlashNvStorageVariableSize) + - PcdGet32 (PcdFlashNvStorageFtwWorkingSize) + - PcdGet32 (PcdFlashNvStorageFtwSpareSize) + - PcdGet32 (PcdEmuFlashNvStorageEventLogSize) + FvHeader->FvLength + + PcdGet32 (PcdFlashNvStorageVariableSize) + + PcdGet32 (PcdFlashNvStorageFtwWorkingSize) + + PcdGet32 (PcdFlashNvStorageFtwSpareSize) + + PcdGet32 (PcdEmuFlashNvStorageEventLogSize) ) - ); + ); // // Hard code the address of the spare block and variable services. // Assume it's a hard coded offset from FV0 in FD0. // - FdSize = + FdSize = PcdGet32 (PcdFlashNvStorageVariableSize) + PcdGet32 (PcdFlashNvStorageFtwWorkingSize) + PcdGet32 (PcdFlashNvStorageFtwSpareSize) + diff --git a/EmulatorPkg/FlashMapPei/FlashMapPei.c b/EmulatorPkg/FlashMapPei/FlashMapPei.c index 2be0627fd9..65674d1787 100644 --- a/EmulatorPkg/FlashMapPei/FlashMapPei.c +++ b/EmulatorPkg/FlashMapPei/FlashMapPei.c @@ -7,7 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "PiPei.h" #include @@ -24,9 +23,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI PeimInitializeFlashMap ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) + /*++ Routine Description: @@ -54,11 +54,11 @@ Returns: // Get the Fwh Information PPI // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, // GUID - 0, // INSTANCE - &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR - (VOID **)&Thunk // PPI - ); + &gEmuThunkPpiGuid, // GUID + 0, // INSTANCE + &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR + (VOID **)&Thunk // PPI + ); ASSERT_EFI_ERROR (Status); // diff --git a/EmulatorPkg/FvbServicesRuntimeDxe/FWBlockService.c b/EmulatorPkg/FvbServicesRuntimeDxe/FWBlockService.c index db028c9e92..1c4d8120c1 100644 --- a/EmulatorPkg/FvbServicesRuntimeDxe/FWBlockService.c +++ b/EmulatorPkg/FvbServicesRuntimeDxe/FWBlockService.c @@ -25,11 +25,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "FwBlockService.h" -ESAL_FWB_GLOBAL *mFvbModuleGlobal; +ESAL_FWB_GLOBAL *mFvbModuleGlobal; -#define EFI_FVB2_STATUS (EFI_FVB2_READ_STATUS | EFI_FVB2_WRITE_STATUS | EFI_FVB2_LOCK_STATUS) +#define EFI_FVB2_STATUS (EFI_FVB2_READ_STATUS | EFI_FVB2_WRITE_STATUS | EFI_FVB2_LOCK_STATUS) -EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = { +EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = { FVB_DEVICE_SIGNATURE, { { @@ -67,14 +67,13 @@ EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = { } }; - - VOID EFIAPI FvbVirtualddressChangeEvent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) + /*++ Routine Description: @@ -97,10 +96,10 @@ Returns: **/ { - EFI_FW_VOL_INSTANCE *FwhInstance; - UINTN Index; + EFI_FW_VOL_INSTANCE *FwhInstance; + UINTN Index; - EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal->FvInstance[FVB_VIRTUAL]); + EfiConvertPointer (0x0, (VOID **)&mFvbModuleGlobal->FvInstance[FVB_VIRTUAL]); // // Convert the base address of all the instances @@ -108,25 +107,26 @@ Returns: Index = 0; FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL]; while (Index < mFvbModuleGlobal->NumFv) { - EfiConvertPointer (0x0, (VOID **) &FwhInstance->FvBase[FVB_VIRTUAL]); + EfiConvertPointer (0x0, (VOID **)&FwhInstance->FvBase[FVB_VIRTUAL]); FwhInstance = (EFI_FW_VOL_INSTANCE *) - ( - (UINTN) ((UINT8 *) FwhInstance) + FwhInstance->VolumeHeader.HeaderLength + - (sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)) - ); + ( + (UINTN)((UINT8 *)FwhInstance) + FwhInstance->VolumeHeader.HeaderLength + + (sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)) + ); Index++; } - EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal); + EfiConvertPointer (0x0, (VOID **)&mFvbModuleGlobal); } EFI_STATUS GetFvbInstance ( - IN UINTN Instance, - IN ESAL_FWB_GLOBAL *Global, - OUT EFI_FW_VOL_INSTANCE **FwhInstance, - IN BOOLEAN Virtual + IN UINTN Instance, + IN ESAL_FWB_GLOBAL *Global, + OUT EFI_FW_VOL_INSTANCE **FwhInstance, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -146,21 +146,22 @@ Returns: **/ { - EFI_FW_VOL_INSTANCE *FwhRecord; + EFI_FW_VOL_INSTANCE *FwhRecord; if (Instance >= Global->NumFv) { return EFI_INVALID_PARAMETER; } + // // Find the right instance of the FVB private data // FwhRecord = Global->FvInstance[Virtual]; while (Instance > 0) { FwhRecord = (EFI_FW_VOL_INSTANCE *) - ( - (UINTN) ((UINT8 *) FwhRecord) + FwhRecord->VolumeHeader.HeaderLength + - (sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)) - ); + ( + (UINTN)((UINT8 *)FwhRecord) + FwhRecord->VolumeHeader.HeaderLength + + (sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)) + ); Instance--; } @@ -171,11 +172,12 @@ Returns: EFI_STATUS FvbGetPhysicalAddress ( - IN UINTN Instance, - OUT EFI_PHYSICAL_ADDRESS *Address, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + OUT EFI_PHYSICAL_ADDRESS *Address, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -197,8 +199,8 @@ Returns: **/ { - EFI_FW_VOL_INSTANCE *FwhInstance = NULL; - EFI_STATUS Status; + EFI_FW_VOL_INSTANCE *FwhInstance = NULL; + EFI_STATUS Status; // // Find the right instance of the FVB private data @@ -212,11 +214,12 @@ Returns: EFI_STATUS FvbGetVolumeAttributes ( - IN UINTN Instance, - OUT EFI_FVB_ATTRIBUTES_2 *Attributes, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + OUT EFI_FVB_ATTRIBUTES_2 *Attributes, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -237,8 +240,8 @@ Returns: **/ { - EFI_FW_VOL_INSTANCE *FwhInstance = NULL; - EFI_STATUS Status; + EFI_FW_VOL_INSTANCE *FwhInstance = NULL; + EFI_STATUS Status; // // Find the right instance of the FVB private data @@ -252,14 +255,15 @@ Returns: EFI_STATUS FvbGetLbaAddress ( - IN UINTN Instance, - IN EFI_LBA Lba, - OUT UINTN *LbaAddress, - OUT UINTN *LbaLength, - OUT UINTN *NumOfBlocks, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + OUT UINTN *LbaAddress, + OUT UINTN *LbaLength, + OUT UINTN *NumOfBlocks, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -300,9 +304,9 @@ Returns: Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual); ASSERT_EFI_ERROR (Status); - StartLba = 0; - Offset = 0; - BlockMap = &(FwhInstance->VolumeHeader.BlockMap[0]); + StartLba = 0; + Offset = 0; + BlockMap = &(FwhInstance->VolumeHeader.BlockMap[0]); // // Parse the blockmap of the FV to find which map entry the Lba belongs to @@ -311,7 +315,7 @@ Returns: NumBlocks = BlockMap->NumBlocks; BlockLength = BlockMap->Length; - if (NumBlocks == 0 || BlockLength == 0) { + if ((NumBlocks == 0) || (BlockLength == 0)) { return EFI_INVALID_PARAMETER; } @@ -320,8 +324,8 @@ Returns: // // The map entry found // - if (Lba >= StartLba && Lba < NextLba) { - Offset = Offset + (UINTN) MultU64x32 ((Lba - StartLba), BlockLength); + if ((Lba >= StartLba) && (Lba < NextLba)) { + Offset = Offset + (UINTN)MultU64x32 ((Lba - StartLba), BlockLength); if (LbaAddress != NULL) { *LbaAddress = FwhInstance->FvBase[Virtual] + Offset; } @@ -331,28 +335,29 @@ Returns: } if (NumOfBlocks != NULL) { - *NumOfBlocks = (UINTN) (NextLba - Lba); + *NumOfBlocks = (UINTN)(NextLba - Lba); } return EFI_SUCCESS; } - StartLba = NextLba; - Offset = Offset + NumBlocks * BlockLength; + StartLba = NextLba; + Offset = Offset + NumBlocks * BlockLength; BlockMap++; } } EFI_STATUS FvbReadBlock ( - IN UINTN Instance, - IN EFI_LBA Lba, - IN UINTN BlockOffset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + IN UINTN BlockOffset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -385,9 +390,9 @@ Returns: **/ { EFI_FVB_ATTRIBUTES_2 Attributes; - UINTN LbaAddress; - UINTN LbaLength; - EFI_STATUS Status; + UINTN LbaAddress; + UINTN LbaLength; + EFI_STATUS Status; // // Check for invalid conditions @@ -404,6 +409,7 @@ Returns: if (EFI_ERROR (Status)) { return Status; } + // // Check if the FV is read enabled // @@ -412,6 +418,7 @@ Returns: if ((Attributes & EFI_FVB2_READ_STATUS) == 0) { return EFI_ACCESS_DENIED; } + // // Perform boundary checks and adjust NumBytes // @@ -420,25 +427,26 @@ Returns: } if (LbaLength < (*NumBytes + BlockOffset)) { - *NumBytes = (UINT32) (LbaLength - BlockOffset); + *NumBytes = (UINT32)(LbaLength - BlockOffset); Status = EFI_BAD_BUFFER_SIZE; } - CopyMem (Buffer, (UINT8 *) (LbaAddress + BlockOffset), (UINTN) (*NumBytes)); + CopyMem (Buffer, (UINT8 *)(LbaAddress + BlockOffset), (UINTN)(*NumBytes)); return Status; } EFI_STATUS FvbWriteBlock ( - IN UINTN Instance, - IN EFI_LBA Lba, - IN UINTN BlockOffset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + IN UINTN BlockOffset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -470,9 +478,9 @@ Returns: **/ { EFI_FVB_ATTRIBUTES_2 Attributes; - UINTN LbaAddress; - UINTN LbaLength; - EFI_STATUS Status; + UINTN LbaAddress; + UINTN LbaLength; + EFI_STATUS Status; // // Check for invalid conditions @@ -489,6 +497,7 @@ Returns: if (EFI_ERROR (Status)) { return Status; } + // // Check if the FV is write enabled // @@ -497,6 +506,7 @@ Returns: if ((Attributes & EFI_FVB2_WRITE_STATUS) == 0) { return EFI_ACCESS_DENIED; } + // // Perform boundary checks and adjust NumBytes // @@ -505,24 +515,26 @@ Returns: } if (LbaLength < (*NumBytes + BlockOffset)) { - *NumBytes = (UINT32) (LbaLength - BlockOffset); + *NumBytes = (UINT32)(LbaLength - BlockOffset); Status = EFI_BAD_BUFFER_SIZE; } + // // Write data // - CopyMem ((UINT8 *) (LbaAddress + BlockOffset), Buffer, (UINTN) (*NumBytes)); + CopyMem ((UINT8 *)(LbaAddress + BlockOffset), Buffer, (UINTN)(*NumBytes)); return Status; } EFI_STATUS FvbEraseBlock ( - IN UINTN Instance, - IN EFI_LBA Lba, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -545,7 +557,6 @@ Returns: **/ { - EFI_FVB_ATTRIBUTES_2 Attributes; UINTN LbaAddress; UINTN LbaLength; @@ -560,6 +571,7 @@ Returns: if ((Attributes & EFI_FVB2_WRITE_STATUS) == 0) { return EFI_ACCESS_DENIED; } + // // Get the starting address of the block for erase. // @@ -575,18 +587,19 @@ Returns: Data = 0x0; } - SetMem ((UINT8 *) LbaAddress, LbaLength, Data); + SetMem ((UINT8 *)LbaAddress, LbaLength, Data); return EFI_SUCCESS; } EFI_STATUS FvbSetVolumeAttributes ( - IN UINTN Instance, - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) + /*++ Routine Description: @@ -622,14 +635,13 @@ Returns: EFI_STATUS Status; EFI_FVB_ATTRIBUTES_2 UnchangedAttributes; - // // Find the right instance of the FVB private data // Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual); ASSERT_EFI_ERROR (Status); - AttribPtr = (EFI_FVB_ATTRIBUTES_2 *) &(FwhInstance->VolumeHeader.Attributes); + AttribPtr = (EFI_FVB_ATTRIBUTES_2 *)&(FwhInstance->VolumeHeader.Attributes); OldAttributes = *AttribPtr; Capabilities = OldAttributes & (EFI_FVB2_READ_DISABLED_CAP | \ EFI_FVB2_READ_ENABLED_CAP | \ @@ -638,8 +650,8 @@ Returns: EFI_FVB2_LOCK_CAP \ ); - OldStatus = OldAttributes & EFI_FVB2_STATUS; - NewStatus = *Attributes & EFI_FVB2_STATUS; + OldStatus = OldAttributes & EFI_FVB2_STATUS; + NewStatus = *Attributes & EFI_FVB2_STATUS; UnchangedAttributes = EFI_FVB2_READ_DISABLED_CAP | \ EFI_FVB2_READ_ENABLED_CAP | \ EFI_FVB2_WRITE_DISABLED_CAP | \ @@ -667,6 +679,7 @@ Returns: return EFI_ACCESS_DENIED; } } + // // Test read disable // @@ -675,6 +688,7 @@ Returns: return EFI_INVALID_PARAMETER; } } + // // Test read enable // @@ -683,6 +697,7 @@ Returns: return EFI_INVALID_PARAMETER; } } + // // Test write disable // @@ -691,6 +706,7 @@ Returns: return EFI_INVALID_PARAMETER; } } + // // Test write enable // @@ -699,6 +715,7 @@ Returns: return EFI_INVALID_PARAMETER; } } + // // Test lock // @@ -714,15 +731,17 @@ Returns: return EFI_SUCCESS; } + // // FVB protocol APIs // EFI_STATUS EFIAPI FvbProtocolGetPhysicalAddress ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - OUT EFI_PHYSICAL_ADDRESS *Address + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + OUT EFI_PHYSICAL_ADDRESS *Address ) + /*++ Routine Description: @@ -741,7 +760,7 @@ Returns: **/ { - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); @@ -751,11 +770,12 @@ Returns: EFI_STATUS EFIAPI FvbProtocolGetBlockSize ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - OUT UINTN *BlockSize, - OUT UINTN *NumOfBlocks + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + OUT UINTN *BlockSize, + OUT UINTN *NumOfBlocks ) + /*++ Routine Description: @@ -777,27 +797,28 @@ Returns: **/ { - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); return FvbGetLbaAddress ( - FvbDevice->Instance, - Lba, - NULL, - BlockSize, - NumOfBlocks, - mFvbModuleGlobal, - EfiGoneVirtual () - ); + FvbDevice->Instance, + Lba, + NULL, + BlockSize, + NumOfBlocks, + mFvbModuleGlobal, + EfiGoneVirtual () + ); } EFI_STATUS EFIAPI FvbProtocolGetAttributes ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - OUT EFI_FVB_ATTRIBUTES_2 *Attributes + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + OUT EFI_FVB_ATTRIBUTES_2 *Attributes ) + /*++ Routine Description: @@ -812,7 +833,7 @@ Returns: **/ { - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); @@ -822,9 +843,10 @@ Returns: EFI_STATUS EFIAPI FvbProtocolSetAttributes ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes ) + /*++ Routine Description: @@ -839,7 +861,7 @@ Returns: **/ { - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); @@ -849,9 +871,10 @@ Returns: EFI_STATUS EFIAPI FvbProtocolEraseBlocks ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, ... ) + /*++ Routine Description: @@ -877,17 +900,17 @@ Returns: **/ { - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; - EFI_FW_VOL_INSTANCE *FwhInstance = NULL; - UINTN NumOfBlocks; - VA_LIST args; - EFI_LBA StartingLba; - UINTN NumOfLba; - EFI_STATUS Status; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_INSTANCE *FwhInstance = NULL; + UINTN NumOfBlocks; + VA_LIST args; + EFI_LBA StartingLba; + UINTN NumOfLba; + EFI_STATUS Status; FvbDevice = FVB_DEVICE_FROM_THIS (This); - Status = GetFvbInstance (FvbDevice->Instance, mFvbModuleGlobal, &FwhInstance, EfiGoneVirtual ()); + Status = GetFvbInstance (FvbDevice->Instance, mFvbModuleGlobal, &FwhInstance, EfiGoneVirtual ()); ASSERT_EFI_ERROR (Status); NumOfBlocks = FwhInstance->NumOfBlocks; @@ -905,7 +928,7 @@ Returns: // // Check input parameters // - if (NumOfLba == 0 || (StartingLba + NumOfLba) > NumOfBlocks) { + if ((NumOfLba == 0) || ((StartingLba + NumOfLba) > NumOfBlocks)) { VA_END (args); return EFI_INVALID_PARAMETER; } @@ -932,7 +955,6 @@ Returns: StartingLba++; NumOfLba--; } - } while (1); VA_END (args); @@ -943,12 +965,13 @@ Returns: EFI_STATUS EFIAPI FvbProtocolWrite ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Offset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer ) + /*++ Routine Description: @@ -980,8 +1003,7 @@ Returns: **/ { - - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); @@ -991,12 +1013,13 @@ Returns: EFI_STATUS EFIAPI FvbProtocolRead ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Offset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer ) + /*++ Routine Description: @@ -1029,17 +1052,18 @@ Returns: **/ { - - EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; + EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); return FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer, mFvbModuleGlobal, EfiGoneVirtual ()); } + EFI_STATUS ValidateFvHeader ( - EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader + EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader ) + /*++ Routine Description: @@ -1065,17 +1089,19 @@ Returns: // if ((FwVolHeader->Revision != EFI_FVH_REVISION) || (FwVolHeader->Signature != EFI_FVH_SIGNATURE) || - (FwVolHeader->FvLength == ((UINTN) -1)) || + (FwVolHeader->FvLength == ((UINTN)-1)) || ((FwVolHeader->HeaderLength & 0x01) != 0) - ) { + ) + { return EFI_NOT_FOUND; } + // // Verify the header checksum // - HeaderLength = (UINT16) (FwVolHeader->HeaderLength / 2); - Ptr = (UINT16 *) FwVolHeader; - Checksum = 0; + HeaderLength = (UINT16)(FwVolHeader->HeaderLength / 2); + Ptr = (UINT16 *)FwVolHeader; + Checksum = 0; while (HeaderLength > 0) { Checksum = Checksum + (*Ptr); HeaderLength--; @@ -1092,9 +1118,10 @@ Returns: EFI_STATUS EFIAPI FvbInitialize ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) + /*++ Routine Description: @@ -1124,7 +1151,7 @@ Returns: UINTN NumOfBlocks; EFI_PEI_HOB_POINTERS FvHob; - // + // // Get the DXE services table // DxeServices = gDS; @@ -1136,14 +1163,14 @@ Returns: Status = gBS->AllocatePool ( EfiRuntimeServicesData, sizeof (ESAL_FWB_GLOBAL), - (VOID**) &mFvbModuleGlobal + (VOID **)&mFvbModuleGlobal ); ASSERT_EFI_ERROR (Status); // // Calculate the total size for all firmware volume block instances // - BufferSize = 0; + BufferSize = 0; FvHob.Raw = GetHobList (); while ((FvHob.Raw = GetNextHob (EFI_HOB_TYPE_FV, FvHob.Raw)) != NULL) { @@ -1165,7 +1192,7 @@ Returns: continue; } - FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; + FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)BaseAddress; Status = ValidateFvHeader (FwVolHeader); if (EFI_ERROR (Status)) { // @@ -1179,7 +1206,7 @@ Returns: } BufferSize += (sizeof (EFI_FW_VOL_INSTANCE) + FwVolHeader->HeaderLength - sizeof (EFI_FIRMWARE_VOLUME_HEADER)); - FvHob.Raw = GET_NEXT_HOB (FvHob); + FvHob.Raw = GET_NEXT_HOB (FvHob); } // @@ -1190,18 +1217,18 @@ Returns: Status = gBS->AllocatePool ( EfiRuntimeServicesData, BufferSize, - (VOID**) &mFvbModuleGlobal->FvInstance[FVB_PHYSICAL] + (VOID **)&mFvbModuleGlobal->FvInstance[FVB_PHYSICAL] ); ASSERT_EFI_ERROR (Status); // // Make a virtual copy of the FvInstance pointer. // - FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL]; + FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL]; mFvbModuleGlobal->FvInstance[FVB_VIRTUAL] = FwhInstance; - mFvbModuleGlobal->NumFv = 0; - MaxLbaSize = 0; + mFvbModuleGlobal->NumFv = 0; + MaxLbaSize = 0; FvHob.Raw = GetHobList (); while (NULL != (FvHob.Raw = GetNextHob (EFI_HOB_TYPE_FV, FvHob.Raw))) { @@ -1223,7 +1250,7 @@ Returns: continue; } - FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; + FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)BaseAddress; Status = ValidateFvHeader (FwVolHeader); if (EFI_ERROR (Status)) { // @@ -1234,20 +1261,21 @@ Returns: FvHob.Raw = GET_NEXT_HOB (FvHob); continue; } + // // Write healthy FV header back. // CopyMem ( - (VOID *) (UINTN) BaseAddress, - (VOID *) FwVolHeader, + (VOID *)(UINTN)BaseAddress, + (VOID *)FwVolHeader, FwVolHeader->HeaderLength ); } - FwhInstance->FvBase[FVB_PHYSICAL] = (UINTN) BaseAddress; - FwhInstance->FvBase[FVB_VIRTUAL] = (UINTN) BaseAddress; + FwhInstance->FvBase[FVB_PHYSICAL] = (UINTN)BaseAddress; + FwhInstance->FvBase[FVB_VIRTUAL] = (UINTN)BaseAddress; - CopyMem ((UINTN *) &(FwhInstance->VolumeHeader), (UINTN *) FwVolHeader, FwVolHeader->HeaderLength); + CopyMem ((UINTN *)&(FwhInstance->VolumeHeader), (UINTN *)FwVolHeader, FwVolHeader->HeaderLength); FwVolHeader = &(FwhInstance->VolumeHeader); EfiInitializeLock (&(FwhInstance->FvbDevLock), TPL_HIGH_LEVEL); @@ -1265,6 +1293,7 @@ Returns: NumOfBlocks = NumOfBlocks + PtrBlockMapEntry->NumBlocks; } + // // The total number of blocks in the FV. // @@ -1276,7 +1305,7 @@ Returns: Status = gBS->AllocatePool ( EfiRuntimeServicesData, sizeof (EFI_FW_VOL_BLOCK_DEVICE), - (VOID**) &FvbDevice + (VOID **)&FvbDevice ); ASSERT_EFI_ERROR (Status); @@ -1294,7 +1323,7 @@ Returns: // // Find a handle with a matching device path that has supports FW Block protocol // - TempFwbDevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &TempFvbDevicePathData; + TempFwbDevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&TempFvbDevicePathData; CopyMem (TempFwbDevicePath, &FvbDevice->DevicePath, sizeof (FV_DEVICE_PATH)); Status = gBS->LocateDevicePath (&gEfiFirmwareVolumeBlockProtocolGuid, &TempFwbDevicePath, &FwbHandle); if (EFI_ERROR (Status)) { @@ -1302,14 +1331,14 @@ Returns: // LocateDevicePath fails so install a new interface and device path // FwbHandle = NULL; - Status = gBS->InstallMultipleProtocolInterfaces ( - &FwbHandle, - &gEfiFirmwareVolumeBlockProtocolGuid, - &FvbDevice->FwVolBlockInstance, - &gEfiDevicePathProtocolGuid, - &FvbDevice->DevicePath, - NULL - ); + Status = gBS->InstallMultipleProtocolInterfaces ( + &FwbHandle, + &gEfiFirmwareVolumeBlockProtocolGuid, + &FvbDevice->FwVolBlockInstance, + &gEfiDevicePathProtocolGuid, + &FvbDevice->DevicePath, + NULL + ); ASSERT_EFI_ERROR (Status); } else if (IsDevicePathEnd (TempFwbDevicePath)) { // @@ -1318,7 +1347,7 @@ Returns: Status = gBS->HandleProtocol ( FwbHandle, &gEfiFirmwareVolumeBlockProtocolGuid, - (VOID**)&OldFwbInterface + (VOID **)&OldFwbInterface ); ASSERT_EFI_ERROR (Status); @@ -1329,7 +1358,6 @@ Returns: &FvbDevice->FwVolBlockInstance ); ASSERT_EFI_ERROR (Status); - } else { // // There was a FVB protocol on an End Device Path node @@ -1338,10 +1366,10 @@ Returns: } FwhInstance = (EFI_FW_VOL_INSTANCE *) - ( - (UINTN) ((UINT8 *) FwhInstance) + FwVolHeader->HeaderLength + - (sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)) - ); + ( + (UINTN)((UINT8 *)FwhInstance) + FwVolHeader->HeaderLength + + (sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)) + ); FvHob.Raw = GET_NEXT_HOB (FvHob); } diff --git a/EmulatorPkg/FvbServicesRuntimeDxe/FvbInfo.c b/EmulatorPkg/FvbServicesRuntimeDxe/FvbInfo.c index af8f9a9831..bf2f0ac980 100644 --- a/EmulatorPkg/FvbServicesRuntimeDxe/FvbInfo.c +++ b/EmulatorPkg/FvbServicesRuntimeDxe/FvbInfo.c @@ -31,14 +31,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - typedef struct { - UINT64 FvLength; - EFI_FIRMWARE_VOLUME_HEADER FvbInfo; + UINT64 FvLength; + EFI_FIRMWARE_VOLUME_HEADER FvbInfo; // // EFI_FV_BLOCK_MAP_ENTRY ExtraBlockMap[n];//n=0 // - EFI_FV_BLOCK_MAP_ENTRY End[1]; + EFI_FV_BLOCK_MAP_ENTRY End[1]; } EFI_FVB_MEDIA_INFO; EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = { @@ -55,10 +54,10 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = { FixedPcdGet32 (PcdEmuFlashFvRecoverySize), EFI_FVH_SIGNATURE, EFI_FVB2_READ_ENABLED_CAP | - EFI_FVB2_READ_STATUS | - EFI_FVB2_WRITE_ENABLED_CAP | - EFI_FVB2_WRITE_STATUS | - EFI_FVB2_ERASE_POLARITY, + EFI_FVB2_READ_STATUS | + EFI_FVB2_WRITE_ENABLED_CAP | + EFI_FVB2_WRITE_STATUS | + EFI_FVB2_ERASE_POLARITY, sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY), 0, // CheckSum 0, // ExtHeaderOffset @@ -99,10 +98,10 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = { FixedPcdGet32 (PcdEmuFlashNvStorageEventLogSize), EFI_FVH_SIGNATURE, EFI_FVB2_READ_ENABLED_CAP | - EFI_FVB2_READ_STATUS | - EFI_FVB2_WRITE_ENABLED_CAP | - EFI_FVB2_WRITE_STATUS | - EFI_FVB2_ERASE_POLARITY, + EFI_FVB2_READ_STATUS | + EFI_FVB2_WRITE_ENABLED_CAP | + EFI_FVB2_WRITE_STATUS | + EFI_FVB2_ERASE_POLARITY, sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY), 0, // CheckSum 0, // ExtHeaderOffset @@ -113,9 +112,9 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = { { { (FixedPcdGet32 (PcdFlashNvStorageVariableSize) + \ - FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + \ - FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) + \ - FixedPcdGet32 (PcdEmuFlashNvStorageEventLogSize)) / FixedPcdGet32 (PcdEmuFirmwareBlockSize), + FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + \ + FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) + \ + FixedPcdGet32 (PcdEmuFlashNvStorageEventLogSize)) / FixedPcdGet32 (PcdEmuFirmwareBlockSize), FixedPcdGet32 (PcdEmuFirmwareBlockSize), } } @@ -131,11 +130,11 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = { EFI_STATUS GetFvbInfo ( - IN UINT64 FvLength, - OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo + IN UINT64 FvLength, + OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < sizeof (mPlatformFvbMediaInfo) / sizeof (EFI_FVB_MEDIA_INFO); Index += 1) { if (mPlatformFvbMediaInfo[Index].FvLength == FvLength) { diff --git a/EmulatorPkg/FvbServicesRuntimeDxe/FwBlockService.h b/EmulatorPkg/FvbServicesRuntimeDxe/FwBlockService.h index 8808b01e05..4278210c1d 100644 --- a/EmulatorPkg/FvbServicesRuntimeDxe/FwBlockService.h +++ b/EmulatorPkg/FvbServicesRuntimeDxe/FwBlockService.h @@ -17,15 +17,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define FVB_VIRTUAL 1 typedef struct { - EFI_LOCK FvbDevLock; - UINTN FvBase[2]; - UINTN NumOfBlocks; - EFI_FIRMWARE_VOLUME_HEADER VolumeHeader; + EFI_LOCK FvbDevLock; + UINTN FvBase[2]; + UINTN NumOfBlocks; + EFI_FIRMWARE_VOLUME_HEADER VolumeHeader; } EFI_FW_VOL_INSTANCE; typedef struct { - UINT32 NumFv; - EFI_FW_VOL_INSTANCE *FvInstance[2]; + UINT32 NumFv; + EFI_FW_VOL_INSTANCE *FvInstance[2]; } ESAL_FWB_GLOBAL; // @@ -33,113 +33,112 @@ typedef struct { // #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE) #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE) -#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N') +#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N') typedef struct { - MEMMAP_DEVICE_PATH MemMapDevPath; - EFI_DEVICE_PATH_PROTOCOL EndDevPath; + MEMMAP_DEVICE_PATH MemMapDevPath; + EFI_DEVICE_PATH_PROTOCOL EndDevPath; } FV_DEVICE_PATH; typedef struct { - UINTN Signature; - FV_DEVICE_PATH DevicePath; - UINTN Instance; - EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance; + UINTN Signature; + FV_DEVICE_PATH DevicePath; + UINTN Instance; + EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance; } EFI_FW_VOL_BLOCK_DEVICE; EFI_STATUS GetFvbInfo ( - IN UINT64 FvLength, - OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo + IN UINT64 FvLength, + OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo ) ; EFI_STATUS FvbReadBlock ( - IN UINTN Instance, - IN EFI_LBA Lba, - IN UINTN BlockOffset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + IN UINTN BlockOffset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; EFI_STATUS FvbWriteBlock ( - IN UINTN Instance, - IN EFI_LBA Lba, - IN UINTN BlockOffset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + IN UINTN BlockOffset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; EFI_STATUS FvbEraseBlock ( - IN UINTN Instance, - IN EFI_LBA Lba, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; EFI_STATUS FvbSetVolumeAttributes ( - IN UINTN Instance, - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; EFI_STATUS FvbGetVolumeAttributes ( - IN UINTN Instance, - OUT EFI_FVB_ATTRIBUTES_2 *Attributes, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + OUT EFI_FVB_ATTRIBUTES_2 *Attributes, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; EFI_STATUS FvbGetPhysicalAddress ( - IN UINTN Instance, - OUT EFI_PHYSICAL_ADDRESS *Address, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + OUT EFI_PHYSICAL_ADDRESS *Address, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; EFI_STATUS EFIAPI FvbInitialize ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) ; - VOID EFIAPI FvbClassAddressChangeEvent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) ; EFI_STATUS FvbGetLbaAddress ( - IN UINTN Instance, - IN EFI_LBA Lba, - OUT UINTN *LbaAddress, - OUT UINTN *LbaLength, - OUT UINTN *NumOfBlocks, - IN ESAL_FWB_GLOBAL *Global, - IN BOOLEAN Virtual + IN UINTN Instance, + IN EFI_LBA Lba, + OUT UINTN *LbaAddress, + OUT UINTN *LbaLength, + OUT UINTN *NumOfBlocks, + IN ESAL_FWB_GLOBAL *Global, + IN BOOLEAN Virtual ) ; @@ -149,63 +148,63 @@ FvbGetLbaAddress ( EFI_STATUS EFIAPI FvbProtocolGetAttributes ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - OUT EFI_FVB_ATTRIBUTES_2 *Attributes + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + OUT EFI_FVB_ATTRIBUTES_2 *Attributes ) ; EFI_STATUS EFIAPI FvbProtocolSetAttributes ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes ) ; EFI_STATUS EFIAPI FvbProtocolGetPhysicalAddress ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - OUT EFI_PHYSICAL_ADDRESS *Address + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + OUT EFI_PHYSICAL_ADDRESS *Address ) ; EFI_STATUS EFIAPI FvbProtocolGetBlockSize ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - OUT UINTN *BlockSize, - OUT UINTN *NumOfBlocks + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + OUT UINTN *BlockSize, + OUT UINTN *NumOfBlocks ) ; EFI_STATUS EFIAPI FvbProtocolRead ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Offset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer ) ; EFI_STATUS EFIAPI FvbProtocolWrite ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Offset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer ) ; EFI_STATUS EFIAPI FvbProtocolEraseBlocks ( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, ... ) ; diff --git a/EmulatorPkg/Include/Guid/EmuPhysicalDisk.h b/EmulatorPkg/Include/Guid/EmuPhysicalDisk.h index 0886ea4f53..e1be4d200e 100644 --- a/EmulatorPkg/Include/Guid/EmuPhysicalDisk.h +++ b/EmulatorPkg/Include/Guid/EmuPhysicalDisk.h @@ -13,6 +13,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define EFI_EMU_PHYSICAL_DISK_GUID \ { 0xf2ba331a, 0x8985, 0x11db, { 0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } } -extern EFI_GUID gEmuPhysicalDisksGuid; +extern EFI_GUID gEmuPhysicalDisksGuid; #endif diff --git a/EmulatorPkg/Include/Guid/EmuSystemConfig.h b/EmulatorPkg/Include/Guid/EmuSystemConfig.h index 7c51d7e40c..e448220740 100644 --- a/EmulatorPkg/Include/Guid/EmuSystemConfig.h +++ b/EmulatorPkg/Include/Guid/EmuSystemConfig.h @@ -13,18 +13,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define EFI_EMU_SYSTEM_CONFIG_GUID \ { 0x9C4FB516, 0x3A1E, 0xD847, { 0xA1, 0xA1, 0x70, 0x58, 0xB6, 0x98, 0x67, 0x32 } } - #pragma pack(1) typedef struct { // // Console output mode // - UINT32 ConOutColumn; - UINT32 ConOutRow; + UINT32 ConOutColumn; + UINT32 ConOutRow; } EMU_SYSTEM_CONFIGURATION; #pragma pack() - -extern EFI_GUID gEmuSystemConfigGuid; +extern EFI_GUID gEmuSystemConfigGuid; #endif diff --git a/EmulatorPkg/Include/Guid/EmuVirtualDisk.h b/EmulatorPkg/Include/Guid/EmuVirtualDisk.h index 7e056887ed..66fc95f65f 100644 --- a/EmulatorPkg/Include/Guid/EmuVirtualDisk.h +++ b/EmulatorPkg/Include/Guid/EmuVirtualDisk.h @@ -13,6 +13,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define EFI_EMU_VIRTUAL_DISK_GUID \ { 0xf2ba331a, 0x8985, 0x11db, { 0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } } -extern EFI_GUID gEmuVirtualDisksGuid; +extern EFI_GUID gEmuVirtualDisksGuid; #endif diff --git a/EmulatorPkg/Include/Library/EmuMagicPageLib.h b/EmulatorPkg/Include/Library/EmuMagicPageLib.h index fb4fcc1f2f..d102f1666a 100644 --- a/EmulatorPkg/Include/Library/EmuMagicPageLib.h +++ b/EmulatorPkg/Include/Library/EmuMagicPageLib.h @@ -18,15 +18,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent typedef struct { // Used by PEI Core and PEIMs to store the PEI Services pointer. // Privilege issues prevent using the PI mechanism in the emulator. - CONST EFI_PEI_SERVICES **PeiServicesTablePointer; + CONST EFI_PEI_SERVICES **PeiServicesTablePointer; // Used by SecPeiServicesLib - EFI_PEI_PPI_DESCRIPTOR *PpiList; + EFI_PEI_PPI_DESCRIPTOR *PpiList; // Needed by PEI PEI PeCoffLoaderExtraActionLib - EMU_THUNK_PROTOCOL *Thunk; + EMU_THUNK_PROTOCOL *Thunk; } EMU_MAGIC_PAGE_LAYOUT; -#define EMU_MAGIC_PAGE() ((EMU_MAGIC_PAGE_LAYOUT *)((UINTN)PcdGet64 (PcdPeiServicesTablePage))) +#define EMU_MAGIC_PAGE() ((EMU_MAGIC_PAGE_LAYOUT *)((UINTN)PcdGet64 (PcdPeiServicesTablePage))) #endif diff --git a/EmulatorPkg/Include/Library/EmuThunkLib.h b/EmulatorPkg/Include/Library/EmuThunkLib.h index ddb3d59b00..54bd7e65cd 100644 --- a/EmulatorPkg/Include/Library/EmuThunkLib.h +++ b/EmulatorPkg/Include/Library/EmuThunkLib.h @@ -10,9 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include - -extern EMU_THUNK_PROTOCOL *gEmuThunk; - +extern EMU_THUNK_PROTOCOL *gEmuThunk; /** Serach the EMU IO Thunk database for a matching EMU IO Thunk @@ -32,5 +30,4 @@ GetIoThunkInstance ( IN UINTN Instance ); - #endif diff --git a/EmulatorPkg/Include/Library/KeyMapLib.h b/EmulatorPkg/Include/Library/KeyMapLib.h index 41d9795ddf..9eb2a66efb 100644 --- a/EmulatorPkg/Include/Library/KeyMapLib.h +++ b/EmulatorPkg/Include/Library/KeyMapLib.h @@ -7,7 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include - /** KeyMapMake gets called on key presses. @@ -19,7 +18,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI KeyMapMake ( - IN EFI_KEY_DATA *KeyData + IN EFI_KEY_DATA *KeyData ); /** @@ -33,5 +32,5 @@ KeyMapMake ( EFI_STATUS EFIAPI KeyMapBreak ( - IN EFI_KEY_DATA *KeyData + IN EFI_KEY_DATA *KeyData ); diff --git a/EmulatorPkg/Include/Library/PpiListLib.h b/EmulatorPkg/Include/Library/PpiListLib.h index a531328f97..a538cfde12 100644 --- a/EmulatorPkg/Include/Library/PpiListLib.h +++ b/EmulatorPkg/Include/Library/PpiListLib.h @@ -8,8 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __PPI_LIST_LIB_H__ #define __PPI_LIST_LIB_H__ - extern CONST EFI_PEI_PPI_DESCRIPTOR *gPpiList; - #endif diff --git a/EmulatorPkg/Include/Library/SmbiosLib.h b/EmulatorPkg/Include/Library/SmbiosLib.h index 1022b48c5e..aeba2f908e 100644 --- a/EmulatorPkg/Include/Library/SmbiosLib.h +++ b/EmulatorPkg/Include/Library/SmbiosLib.h @@ -15,12 +15,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - /// /// Cache copy of the SMBIOS Protocol pointer /// -extern EFI_SMBIOS_PROTOCOL *gSmbios; - +extern EFI_SMBIOS_PROTOCOL *gSmbios; /// /// Template for SMBIOS table initialization. @@ -38,7 +36,6 @@ typedef struct { CHAR8 **StringArray; } SMBIOS_TEMPLATE_ENTRY; - /** Create an initial SMBIOS Table from an array of SMBIOS_TEMPLATE_ENTRY entries. SMBIOS_TEMPLATE_ENTRY.NULL indicates the end of the table. @@ -51,11 +48,9 @@ typedef struct { EFI_STATUS EFIAPI SmbiosLibInitializeFromTemplate ( - IN SMBIOS_TEMPLATE_ENTRY *Template + IN SMBIOS_TEMPLATE_ENTRY *Template ); - - /** Create SMBIOS record. @@ -88,11 +83,10 @@ SmbiosLibInitializeFromTemplate ( EFI_STATUS EFIAPI SmbiosLibCreateEntry ( - IN SMBIOS_STRUCTURE *SmbiosEntry, - IN CHAR8 **StringArray + IN SMBIOS_STRUCTURE *SmbiosEntry, + IN CHAR8 **StringArray ); - /** Update the string associated with an existing SMBIOS record. @@ -111,9 +105,9 @@ SmbiosLibCreateEntry ( EFI_STATUS EFIAPI SmbiosLibUpdateString ( - IN EFI_SMBIOS_HANDLE SmbiosHandle, - IN SMBIOS_TABLE_STRING StringNumber, - IN CHAR8 *String + IN EFI_SMBIOS_HANDLE SmbiosHandle, + IN SMBIOS_TABLE_STRING StringNumber, + IN CHAR8 *String ); /** @@ -134,9 +128,9 @@ SmbiosLibUpdateString ( EFI_STATUS EFIAPI SmbiosLibUpdateUnicodeString ( - IN EFI_SMBIOS_HANDLE SmbiosHandle, - IN SMBIOS_TABLE_STRING StringNumber, - IN CHAR16 *String + IN EFI_SMBIOS_HANDLE SmbiosHandle, + IN SMBIOS_TABLE_STRING StringNumber, + IN CHAR16 *String ); /** @@ -155,7 +149,6 @@ SmbiosLibReadString ( IN EFI_SMBIOS_STRING StringNumber ); - /** Allow the caller to discover a specific SMBIOS entry, and patch it if necissary. @@ -169,9 +162,9 @@ SmbiosLibReadString ( SMBIOS_STRUCTURE * EFIAPI SmbiosLibGetRecord ( - IN EFI_SMBIOS_TYPE Type, - IN UINTN Instance, - OUT EFI_SMBIOS_HANDLE *SmbiosHandle + IN EFI_SMBIOS_TYPE Type, + IN UINTN Instance, + OUT EFI_SMBIOS_HANDLE *SmbiosHandle ); /** @@ -187,10 +180,7 @@ SmbiosLibGetRecord ( EFI_STATUS EFIAPI SmbiosLibRemove ( - OUT EFI_SMBIOS_HANDLE SmbiosHandle + OUT EFI_SMBIOS_HANDLE SmbiosHandle ); - - - #endif diff --git a/EmulatorPkg/Include/Library/ThunkPpiList.h b/EmulatorPkg/Include/Library/ThunkPpiList.h index d33ae6db8c..011565850d 100644 --- a/EmulatorPkg/Include/Library/ThunkPpiList.h +++ b/EmulatorPkg/Include/Library/ThunkPpiList.h @@ -9,13 +9,11 @@ #include - EFI_PEI_PPI_DESCRIPTOR * GetThunkPpiList ( VOID ); - EFI_STATUS EFIAPI AddThunkPpi ( @@ -23,5 +21,3 @@ AddThunkPpi ( IN EFI_GUID *Guid, IN VOID *Ppi ); - - diff --git a/EmulatorPkg/Include/Library/ThunkProtocolList.h b/EmulatorPkg/Include/Library/ThunkProtocolList.h index 83f8fc93f6..c3b2756d9c 100644 --- a/EmulatorPkg/Include/Library/ThunkProtocolList.h +++ b/EmulatorPkg/Include/Library/ThunkProtocolList.h @@ -10,20 +10,17 @@ #include #include - EFI_STATUS EFIAPI AddThunkProtocol ( - IN EMU_IO_THUNK_PROTOCOL *ThunkIo, - IN CHAR16 *ConfigString, - IN BOOLEAN EmuBusDriver + IN EMU_IO_THUNK_PROTOCOL *ThunkIo, + IN CHAR16 *ConfigString, + IN BOOLEAN EmuBusDriver ); EFI_STATUS EFIAPI GetNextThunkProtocol ( - IN BOOLEAN EmuBusDriver, - OUT EMU_IO_THUNK_PROTOCOL **Instance + IN BOOLEAN EmuBusDriver, + OUT EMU_IO_THUNK_PROTOCOL **Instance ); - - diff --git a/EmulatorPkg/Include/Ppi/EmuThunk.h b/EmulatorPkg/Include/Ppi/EmuThunk.h index 9c7fa1b81d..c0e2bc6b98 100644 --- a/EmulatorPkg/Include/Ppi/EmuThunk.h +++ b/EmulatorPkg/Include/Ppi/EmuThunk.h @@ -13,8 +13,6 @@ #define EMU_THUNK_PPI_GUID \ { 0xB958B78C, 0x1D3E, 0xEE40, { 0x8B, 0xF4, 0xF0, 0x63, 0x2D, 0x06, 0x39, 0x16 } } - - /*++ Routine Description: @@ -33,13 +31,12 @@ Returns: **/ typedef EFI_STATUS -(EFIAPI *EMU_PEI_AUTOSCAN) ( +(EFIAPI *EMU_PEI_AUTOSCAN)( IN UINTN Index, OUT EFI_PHYSICAL_ADDRESS *MemoryBase, OUT UINT64 *MemorySize ); - /*++ Routine Description: @@ -59,14 +56,13 @@ Returns: **/ typedef EFI_STATUS -(EFIAPI *EMU_PEI_FD_INFORMATION) ( +(EFIAPI *EMU_PEI_FD_INFORMATION)( IN UINTN Index, IN OUT EFI_PHYSICAL_ADDRESS *FdBase, IN OUT UINT64 *FdSize, IN OUT EFI_PHYSICAL_ADDRESS *FixUp ); - /*++ Routine Description: @@ -78,12 +74,10 @@ Returns: **/ typedef VOID * -(EFIAPI *EMU_PEI_THUNK_INTERFACE) ( +(EFIAPI *EMU_PEI_THUNK_INTERFACE)( VOID ); - - /*++ Routine Description: @@ -102,20 +96,19 @@ Returns: **/ typedef EFI_STATUS -(EFIAPI *EMU_PEI_LOAD_FILE) ( +(EFIAPI *EMU_PEI_LOAD_FILE)( VOID *Pe32Data, EFI_PHYSICAL_ADDRESS *ImageAddress, UINT64 *ImageSize, EFI_PHYSICAL_ADDRESS *EntryPoint ); - typedef struct { - EMU_PEI_AUTOSCAN MemoryAutoScan; - EMU_PEI_FD_INFORMATION FirmwareDevices; - EMU_PEI_THUNK_INTERFACE Thunk; + EMU_PEI_AUTOSCAN MemoryAutoScan; + EMU_PEI_FD_INFORMATION FirmwareDevices; + EMU_PEI_THUNK_INTERFACE Thunk; } EMU_THUNK_PPI; -extern EFI_GUID gEmuThunkPpiGuid; +extern EFI_GUID gEmuThunkPpiGuid; #endif diff --git a/EmulatorPkg/Include/Protocol/EmuBlockIo.h b/EmulatorPkg/Include/Protocol/EmuBlockIo.h index a17cefa83d..494e100e74 100644 --- a/EmulatorPkg/Include/Protocol/EmuBlockIo.h +++ b/EmulatorPkg/Include/Protocol/EmuBlockIo.h @@ -19,9 +19,7 @@ #define EMU_BLOCK_IO_PROTOCOL_GUID \ { 0x6888A4AE, 0xAFCE, 0xE84B, { 0x91, 0x02, 0xF7, 0xB9, 0xDA, 0xE6, 0xA0, 0x30 } } -typedef struct _EMU_BLOCK_IO_PROTOCOL EMU_BLOCK_IO_PROTOCOL; - - +typedef struct _EMU_BLOCK_IO_PROTOCOL EMU_BLOCK_IO_PROTOCOL; /** Reset the block device hardware. @@ -38,7 +36,7 @@ typedef struct _EMU_BLOCK_IO_PROTOCOL EMU_BLOCK_IO_PROTOCOL; **/ typedef EFI_STATUS -(EFIAPI *EMU_BLOCK_RESET) ( +(EFIAPI *EMU_BLOCK_RESET)( IN EMU_BLOCK_IO_PROTOCOL *This, IN BOOLEAN ExtendedVerification ); @@ -78,13 +76,13 @@ EFI_STATUS **/ typedef EFI_STATUS -(EFIAPI *EMU_BLOCK_READ) ( +(EFIAPI *EMU_BLOCK_READ)( IN EMU_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA LBA, IN OUT EFI_BLOCK_IO2_TOKEN *Token, IN UINTN BufferSize, - OUT VOID *Buffer + OUT VOID *Buffer ); /** @@ -120,7 +118,7 @@ EFI_STATUS **/ typedef EFI_STATUS -(EFIAPI *EMU_BLOCK_WRITE) ( +(EFIAPI *EMU_BLOCK_WRITE)( IN EMU_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA LBA, @@ -153,34 +151,31 @@ EFI_STATUS **/ typedef EFI_STATUS -(EFIAPI *EMU_BLOCK_FLUSH) ( +(EFIAPI *EMU_BLOCK_FLUSH)( IN EMU_BLOCK_IO_PROTOCOL *This, IN OUT EFI_BLOCK_IO2_TOKEN *Token ); - typedef EFI_STATUS -(EFIAPI *EMU_BLOCK_CREATE_MAPPING) ( +(EFIAPI *EMU_BLOCK_CREATE_MAPPING)( IN EMU_BLOCK_IO_PROTOCOL *This, IN EFI_BLOCK_IO_MEDIA *Media ); - /// /// The Block I/O2 protocol defines an extension to the Block I/O protocol which /// enables the ability to read and write data at a block level in a non-blocking // manner. /// struct _EMU_BLOCK_IO_PROTOCOL { - EMU_BLOCK_RESET Reset; - EMU_BLOCK_READ ReadBlocks; - EMU_BLOCK_WRITE WriteBlocks; - EMU_BLOCK_FLUSH FlushBlocks; - EMU_BLOCK_CREATE_MAPPING CreateMapping; + EMU_BLOCK_RESET Reset; + EMU_BLOCK_READ ReadBlocks; + EMU_BLOCK_WRITE WriteBlocks; + EMU_BLOCK_FLUSH FlushBlocks; + EMU_BLOCK_CREATE_MAPPING CreateMapping; }; -extern EFI_GUID gEmuBlockIoProtocolGuid; +extern EFI_GUID gEmuBlockIoProtocolGuid; #endif - diff --git a/EmulatorPkg/Include/Protocol/EmuFileSystem.h b/EmulatorPkg/Include/Protocol/EmuFileSystem.h index 8ac9d9ba5d..15de43ac02 100644 --- a/EmulatorPkg/Include/Protocol/EmuFileSystem.h +++ b/EmulatorPkg/Include/Protocol/EmuFileSystem.h @@ -55,36 +55,34 @@ EFI_STATUS typedef EFI_STATUS -(EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE) ( +(EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE)( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, IN EFI_KEY_TOGGLE_STATE *KeyToggleState ); - typedef VOID -(EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK) ( +(EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK)( IN VOID *Context, IN EFI_KEY_DATA *KeyData ); typedef EFI_STATUS -(EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY) ( +(EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY)( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK CallBack, IN VOID *Context ); - typedef struct { - UINTN SourceX; - UINTN SourceY; - UINTN DestinationX; - UINTN DestinationY; - UINTN Width; - UINTN Height; - UINTN Delta; + UINTN SourceX; + UINTN SourceY; + UINTN DestinationX; + UINTN DestinationY; + UINTN Width; + UINTN Height; + UINTN Delta; } EMU_GRAPHICS_WINDOWS__BLT_ARGS; typedef @@ -98,7 +96,7 @@ EFI_STATUS typedef BOOLEAN -(EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED) ( +(EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED)( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, IN EFI_KEY_DATA *KeyData ); @@ -117,18 +115,17 @@ EFI_STATUS ); struct _EMU_GRAPHICS_WINDOW_PROTOCOL { - EMU_GRAPHICS_WINDOWS_SIZE Size; - EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey; - EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState; - EMU_GRAPHICS_WINDOWS_GET_KEY GetKey; - EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify; - EMU_GRAPHICS_WINDOWS_BLT Blt; - EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed; - EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer; - EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState; + EMU_GRAPHICS_WINDOWS_SIZE Size; + EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey; + EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState; + EMU_GRAPHICS_WINDOWS_GET_KEY GetKey; + EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify; + EMU_GRAPHICS_WINDOWS_BLT Blt; + EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed; + EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer; + EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState; }; - -extern EFI_GUID gEmuGraphicsWindowProtocolGuid; +extern EFI_GUID gEmuGraphicsWindowProtocolGuid; #endif diff --git a/EmulatorPkg/Include/Protocol/EmuGraphicsWindow.h b/EmulatorPkg/Include/Protocol/EmuGraphicsWindow.h index 07d4070b35..7c495b25eb 100644 --- a/EmulatorPkg/Include/Protocol/EmuGraphicsWindow.h +++ b/EmulatorPkg/Include/Protocol/EmuGraphicsWindow.h @@ -48,37 +48,35 @@ EFI_STATUS typedef EFI_STATUS -(EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE) ( +(EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE)( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, IN EFI_KEY_TOGGLE_STATE *KeyToggleState ); - typedef VOID -(EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK) ( +(EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK)( IN VOID *Context, IN EFI_KEY_DATA *KeyData ); typedef EFI_STATUS -(EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY) ( +(EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY)( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, IN VOID *Context ); - typedef struct { - UINTN SourceX; - UINTN SourceY; - UINTN DestinationX; - UINTN DestinationY; - UINTN Width; - UINTN Height; - UINTN Delta; + UINTN SourceX; + UINTN SourceY; + UINTN DestinationX; + UINTN DestinationY; + UINTN Width; + UINTN Height; + UINTN Delta; } EMU_GRAPHICS_WINDOWS__BLT_ARGS; typedef @@ -92,7 +90,7 @@ EFI_STATUS typedef BOOLEAN -(EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED) ( +(EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED)( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, IN EFI_KEY_DATA *KeyData ); @@ -111,18 +109,17 @@ EFI_STATUS ); struct _EMU_GRAPHICS_WINDOW_PROTOCOL { - EMU_GRAPHICS_WINDOWS_SIZE Size; - EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey; - EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState; - EMU_GRAPHICS_WINDOWS_GET_KEY GetKey; - EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify; - EMU_GRAPHICS_WINDOWS_BLT Blt; - EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed; - EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer; - EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState; + EMU_GRAPHICS_WINDOWS_SIZE Size; + EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey; + EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState; + EMU_GRAPHICS_WINDOWS_GET_KEY GetKey; + EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify; + EMU_GRAPHICS_WINDOWS_BLT Blt; + EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed; + EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer; + EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState; }; - -extern EFI_GUID gEmuGraphicsWindowProtocolGuid; +extern EFI_GUID gEmuGraphicsWindowProtocolGuid; #endif diff --git a/EmulatorPkg/Include/Protocol/EmuIoThunk.h b/EmulatorPkg/Include/Protocol/EmuIoThunk.h index 6e4c2f8efc..b6da635177 100644 --- a/EmulatorPkg/Include/Protocol/EmuIoThunk.h +++ b/EmulatorPkg/Include/Protocol/EmuIoThunk.h @@ -10,36 +10,33 @@ #ifndef __EMU_IO_THUNK__ #define __EMU_IO_THUNK__ - #define EMU_IO_THUNK_PROTOCO_GUID \ { 0x453368F6, 0x7C85, 0x434A, { 0xA9, 0x8A, 0x72, 0xD1, 0xB7, 0xFF, 0xA9, 0x26 } } - -typedef struct _EMU_IO_THUNK_PROTOCOL EMU_IO_THUNK_PROTOCOL; - +typedef struct _EMU_IO_THUNK_PROTOCOL EMU_IO_THUNK_PROTOCOL; typedef EFI_STATUS -(EFIAPI *EMU_IO_THUNK_PROTOCOL_CLOSE_OPEN) ( +(EFIAPI *EMU_IO_THUNK_PROTOCOL_CLOSE_OPEN)( IN EMU_IO_THUNK_PROTOCOL *This ); typedef EFI_STATUS -(EFIAPI *EMU_IO_THUNK_PROTOCOL_CLOSE_CLOSE) ( +(EFIAPI *EMU_IO_THUNK_PROTOCOL_CLOSE_CLOSE)( IN EMU_IO_THUNK_PROTOCOL *This ); struct _EMU_IO_THUNK_PROTOCOL { - EFI_GUID *Protocol; - VOID *Interface; /// Only be valid after Open() is called - CHAR16 *ConfigString; - UINT16 Instance; - EMU_IO_THUNK_PROTOCOL_CLOSE_OPEN Open; - EMU_IO_THUNK_PROTOCOL_CLOSE_CLOSE Close; - VOID *Private; /// Used by implementation + EFI_GUID *Protocol; + VOID *Interface; /// Only be valid after Open() is called + CHAR16 *ConfigString; + UINT16 Instance; + EMU_IO_THUNK_PROTOCOL_CLOSE_OPEN Open; + EMU_IO_THUNK_PROTOCOL_CLOSE_CLOSE Close; + VOID *Private; /// Used by implementation }; -extern EFI_GUID gEmuIoThunkProtocolGuid; +extern EFI_GUID gEmuIoThunkProtocolGuid; #endif diff --git a/EmulatorPkg/Include/Protocol/EmuSnp.h b/EmulatorPkg/Include/Protocol/EmuSnp.h index c58808fdd3..b461a1cb38 100644 --- a/EmulatorPkg/Include/Protocol/EmuSnp.h +++ b/EmulatorPkg/Include/Protocol/EmuSnp.h @@ -17,8 +17,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define EMU_SNP_PROTOCOL_GUID \ { 0xFD5FBE54, 0x8C35, 0xB345, { 0x8A, 0x0F, 0x7A, 0xC8, 0xA5, 0xFD, 0x05, 0x21 } } -typedef struct _EMU_SNP_PROTOCOL EMU_SNP_PROTOCOL; - +typedef struct _EMU_SNP_PROTOCOL EMU_SNP_PROTOCOL; /** Register storage for SNP Mode. @@ -37,7 +36,6 @@ EFI_STATUS IN EFI_SIMPLE_NETWORK_MODE *Mode ); - /** Changes the state of a network interface from "stopped" to "started". @@ -425,29 +423,29 @@ EFI_STATUS // // Revision defined in EFI1.1 // -#define EMU_SNP_INTERFACE_REVISION EMU_SNP_PROTOCOL_REVISION +#define EMU_SNP_INTERFACE_REVISION EMU_SNP_PROTOCOL_REVISION /// /// The EMU_SNP_PROTOCOL protocol abstracts OS network sercices /// from the EFI driver that produces EFI Simple Network Protocol. /// struct _EMU_SNP_PROTOCOL { - EMU_SNP_CREATE_MAPPING CreateMapping; - EMU_SNP_START Start; - EMU_SNP_STOP Stop; - EMU_SNP_INITIALIZE Initialize; - EMU_SNP_RESET Reset; - EMU_SNP_SHUTDOWN Shutdown; - EMU_SNP_RECEIVE_FILTERS ReceiveFilters; - EMU_SNP_STATION_ADDRESS StationAddress; - EMU_SNP_STATISTICS Statistics; - EMU_SNP_MCAST_IP_TO_MAC MCastIpToMac; - EMU_SNP_NVDATA NvData; - EMU_SNP_GET_STATUS GetStatus; - EMU_SNP_TRANSMIT Transmit; - EMU_SNP_RECEIVE Receive; + EMU_SNP_CREATE_MAPPING CreateMapping; + EMU_SNP_START Start; + EMU_SNP_STOP Stop; + EMU_SNP_INITIALIZE Initialize; + EMU_SNP_RESET Reset; + EMU_SNP_SHUTDOWN Shutdown; + EMU_SNP_RECEIVE_FILTERS ReceiveFilters; + EMU_SNP_STATION_ADDRESS StationAddress; + EMU_SNP_STATISTICS Statistics; + EMU_SNP_MCAST_IP_TO_MAC MCastIpToMac; + EMU_SNP_NVDATA NvData; + EMU_SNP_GET_STATUS GetStatus; + EMU_SNP_TRANSMIT Transmit; + EMU_SNP_RECEIVE Receive; }; -extern EFI_GUID gEmuSnpProtocolGuid; +extern EFI_GUID gEmuSnpProtocolGuid; #endif diff --git a/EmulatorPkg/Include/Protocol/EmuThread.h b/EmulatorPkg/Include/Protocol/EmuThread.h index 89e562d7af..fbde40bb4c 100644 --- a/EmulatorPkg/Include/Protocol/EmuThread.h +++ b/EmulatorPkg/Include/Protocol/EmuThread.h @@ -11,55 +11,47 @@ #ifndef __EMU_THREAD_THUNK__ #define __EMU_THREAD_THUNK__ - -typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL; - +typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL; typedef UINTN -(EFIAPI *THREAD_THUNK_MUTEX_LOCK) ( +(EFIAPI *THREAD_THUNK_MUTEX_LOCK)( IN VOID *Mutex ); - typedef UINTN -(EFIAPI *THREAD_THUNK_MUTEX_UNLOCK) ( +(EFIAPI *THREAD_THUNK_MUTEX_UNLOCK)( IN VOID *Mutex ); - typedef UINTN -(EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK) ( +(EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK)( IN VOID *Mutex ); - typedef VOID * -(EFIAPI *THREAD_THUNK_MUTEX_INIT) ( +(EFIAPI *THREAD_THUNK_MUTEX_INIT)( IN VOID ); - typedef UINTN -(EFIAPI *THREAD_THUNK_MUTEX_DISTROY) ( +(EFIAPI *THREAD_THUNK_MUTEX_DISTROY)( IN VOID *Mutex ); - - typedef VOID * -(EFIAPI *THREAD_THUNK_THREAD_ENTRY) ( +(EFIAPI *THREAD_THUNK_THREAD_ENTRY)( IN VOID *Context ); typedef UINTN -(EFIAPI *THREAD_THUNK_CREATE_THREAD) ( +(EFIAPI *THREAD_THUNK_CREATE_THREAD)( IN VOID *Thread, IN VOID *Attribute, IN THREAD_THUNK_THREAD_ENTRY Start, @@ -68,30 +60,27 @@ UINTN typedef VOID -(EFIAPI *THREAD_THUNK_EXIT_THREAD) ( +(EFIAPI *THREAD_THUNK_EXIT_THREAD)( IN VOID *ValuePtr ); - typedef UINTN -(EFIAPI *THREAD_THUNK_SELF) ( +(EFIAPI *THREAD_THUNK_SELF)( VOID ); - struct _EMU_THREAD_THUNK_PROTOCOL { - THREAD_THUNK_MUTEX_LOCK MutexLock; - THREAD_THUNK_MUTEX_UNLOCK MutexUnlock; - THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock; - THREAD_THUNK_MUTEX_INIT MutexInit; - THREAD_THUNK_MUTEX_DISTROY MutexDistroy; - THREAD_THUNK_CREATE_THREAD CreateThread; - THREAD_THUNK_EXIT_THREAD ExitThread; - THREAD_THUNK_SELF Self; + THREAD_THUNK_MUTEX_LOCK MutexLock; + THREAD_THUNK_MUTEX_UNLOCK MutexUnlock; + THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock; + THREAD_THUNK_MUTEX_INIT MutexInit; + THREAD_THUNK_MUTEX_DISTROY MutexDistroy; + THREAD_THUNK_CREATE_THREAD CreateThread; + THREAD_THUNK_EXIT_THREAD ExitThread; + THREAD_THUNK_SELF Self; }; -extern EFI_GUID gEmuThreadThunkProtocolGuid; +extern EFI_GUID gEmuThreadThunkProtocolGuid; #endif - diff --git a/EmulatorPkg/Include/Protocol/EmuThunk.h b/EmulatorPkg/Include/Protocol/EmuThunk.h index 0bb20651e5..b720023ac9 100644 --- a/EmulatorPkg/Include/Protocol/EmuThunk.h +++ b/EmulatorPkg/Include/Protocol/EmuThunk.h @@ -21,166 +21,156 @@ #include #include - typedef struct { - VENDOR_DEVICE_PATH VendorDevicePath; - UINT32 Instance; + VENDOR_DEVICE_PATH VendorDevicePath; + UINT32 Instance; } EMU_VENDOR_DEVICE_PATH_NODE; typedef struct { - EMU_VENDOR_DEVICE_PATH_NODE Vendor; - EFI_DEVICE_PATH_PROTOCOL EndDevicePath; + EMU_VENDOR_DEVICE_PATH_NODE Vendor; + EFI_DEVICE_PATH_PROTOCOL EndDevicePath; } EMU_THUNK_DEVICE_PATH; - - -typedef struct _EMU_THUNK_PROTOCOL EMU_THUNK_PROTOCOL; - - +typedef struct _EMU_THUNK_PROTOCOL EMU_THUNK_PROTOCOL; typedef UINTN -(EFIAPI *EMU_WRITE_STD_ERROR) ( +(EFIAPI *EMU_WRITE_STD_ERROR)( IN UINT8 *Buffer, IN UINTN NumberOfBytes ); typedef EFI_STATUS -(EFIAPI *EMU_CONFIG_STD_IN) ( +(EFIAPI *EMU_CONFIG_STD_IN)( VOID ); typedef UINTN -(EFIAPI *EMU_WRITE_STD_OUT) ( +(EFIAPI *EMU_WRITE_STD_OUT)( IN UINT8 *Buffer, IN UINTN NumberOfBytes ); typedef UINTN -(EFIAPI *EMU_READ_STD_IN) ( +(EFIAPI *EMU_READ_STD_IN)( OUT UINT8 *Buffer, IN UINTN NumberOfBytes ); typedef BOOLEAN -(EFIAPI *EMU_POLL_STD_IN) ( +(EFIAPI *EMU_POLL_STD_IN)( VOID ); - typedef VOID * -(EFIAPI *EMU_OS_MALLOC) ( +(EFIAPI *EMU_OS_MALLOC)( IN UINTN Size ); typedef VOID * -(EFIAPI *EMU_OS_VMALLOC) ( +(EFIAPI *EMU_OS_VMALLOC)( IN UINTN Size ); typedef BOOLEAN -(EFIAPI *EMU_OS_FREE) ( +(EFIAPI *EMU_OS_FREE)( IN VOID *Ptr ); - typedef EFI_STATUS -(EFIAPI *EMU_PE_COFF_GET_ENTRY_POINT) ( +(EFIAPI *EMU_PE_COFF_GET_ENTRY_POINT)( IN VOID *Pe32Data, IN OUT VOID **EntryPoint ); typedef VOID -(EFIAPI *EMU_PE_COFF_RELOCATE_EXTRA_ACTION) ( +(EFIAPI *EMU_PE_COFF_RELOCATE_EXTRA_ACTION)( IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ); typedef VOID -(EFIAPI *EMU_PE_COFF_UNLOAD_EXTRA_ACTION) ( +(EFIAPI *EMU_PE_COFF_UNLOAD_EXTRA_ACTION)( IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ); typedef VOID -(EFIAPI *EMU_ENABLE_INERRUPTS) ( +(EFIAPI *EMU_ENABLE_INERRUPTS)( VOID ); typedef VOID -(EFIAPI *EMU_DISABLE_INERRUPTS) ( +(EFIAPI *EMU_DISABLE_INERRUPTS)( VOID ); typedef UINT64 -(EFIAPI *EMU_QUERY_PERFORMANCE_FREQENCY) ( +(EFIAPI *EMU_QUERY_PERFORMANCE_FREQENCY)( VOID ); typedef UINT64 -(EFIAPI *EMU_QUERY_PERFORMANCE_COUNTER) ( +(EFIAPI *EMU_QUERY_PERFORMANCE_COUNTER)( VOID ); typedef VOID -(EFIAPI *EMU_SLEEP) ( +(EFIAPI *EMU_SLEEP)( IN UINT64 Milliseconds ); typedef VOID -(EFIAPI *EMU_CPU_SLEEP) ( +(EFIAPI *EMU_CPU_SLEEP)( VOID ); typedef VOID -(EFIAPI *EMU_EXIT) ( +(EFIAPI *EMU_EXIT)( IN UINTN Status ); typedef VOID -(EFIAPI *EMU_GET_TIME) ( +(EFIAPI *EMU_GET_TIME)( OUT EFI_TIME *Time, OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL ); typedef VOID -(EFIAPI *EMU_SET_TIME) ( +(EFIAPI *EMU_SET_TIME)( IN EFI_TIME *Time ); - typedef VOID -(EFIAPI EMU_SET_TIMER_CALLBACK) ( +(EFIAPI EMU_SET_TIMER_CALLBACK)( IN UINT64 DeltaMs ); typedef VOID -(EFIAPI *EMU_SET_TIMER) ( +(EFIAPI *EMU_SET_TIMER)( IN UINT64 PeriodMs, IN EMU_SET_TIMER_CALLBACK CallBack ); - - /** Enumerates the current set of protocol instances that abstract OS services from EFI. @@ -203,56 +193,54 @@ VOID **/ typedef EFI_STATUS -(EFIAPI *EMU_GET_NEXT_PROTOCOL) ( +(EFIAPI *EMU_GET_NEXT_PROTOCOL)( IN BOOLEAN EmuBusDriver, OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL ); - struct _EMU_THUNK_PROTOCOL { // Used for early debug printing - EMU_WRITE_STD_ERROR WriteStdErr; - EMU_CONFIG_STD_IN ConfigStdIn; - EMU_WRITE_STD_OUT WriteStdOut; - EMU_READ_STD_IN ReadStdIn; - EMU_POLL_STD_IN PollStdIn; + EMU_WRITE_STD_ERROR WriteStdErr; + EMU_CONFIG_STD_IN ConfigStdIn; + EMU_WRITE_STD_OUT WriteStdOut; + EMU_READ_STD_IN ReadStdIn; + EMU_POLL_STD_IN PollStdIn; // // Map OS malloc/free so we can use OS based guard malloc // - EMU_OS_MALLOC Malloc; - EMU_OS_VMALLOC Valloc; - EMU_OS_FREE Free; - + EMU_OS_MALLOC Malloc; + EMU_OS_VMALLOC Valloc; + EMU_OS_FREE Free; /// /// PE/COFF loader hooks to get symbols loaded /// - EMU_PE_COFF_GET_ENTRY_POINT PeCoffGetEntryPoint; - EMU_PE_COFF_RELOCATE_EXTRA_ACTION PeCoffRelocateImageExtraAction; - EMU_PE_COFF_UNLOAD_EXTRA_ACTION PeCoffUnloadImageExtraAction; + EMU_PE_COFF_GET_ENTRY_POINT PeCoffGetEntryPoint; + EMU_PE_COFF_RELOCATE_EXTRA_ACTION PeCoffRelocateImageExtraAction; + EMU_PE_COFF_UNLOAD_EXTRA_ACTION PeCoffUnloadImageExtraAction; /// /// DXE Architecture Protocol Services /// - EMU_ENABLE_INERRUPTS EnableInterrupt; - EMU_DISABLE_INERRUPTS DisableInterrupt; - EMU_QUERY_PERFORMANCE_FREQENCY QueryPerformanceFrequency; - EMU_QUERY_PERFORMANCE_COUNTER QueryPerformanceCounter; - - EMU_SLEEP Sleep; - EMU_CPU_SLEEP CpuSleep; - EMU_EXIT Exit; - EMU_GET_TIME GetTime; - EMU_SET_TIME SetTime; - EMU_SET_TIMER SetTimer; + EMU_ENABLE_INERRUPTS EnableInterrupt; + EMU_DISABLE_INERRUPTS DisableInterrupt; + EMU_QUERY_PERFORMANCE_FREQENCY QueryPerformanceFrequency; + EMU_QUERY_PERFORMANCE_COUNTER QueryPerformanceCounter; + + EMU_SLEEP Sleep; + EMU_CPU_SLEEP CpuSleep; + EMU_EXIT Exit; + EMU_GET_TIME GetTime; + EMU_SET_TIME SetTime; + EMU_SET_TIMER SetTimer; /// /// Generic System Services /// - EMU_GET_NEXT_PROTOCOL GetNextProtocol; + EMU_GET_NEXT_PROTOCOL GetNextProtocol; }; -extern EFI_GUID gEmuThunkProtocolGuid; +extern EFI_GUID gEmuThunkProtocolGuid; #endif diff --git a/EmulatorPkg/Library/DevicePathTextLib/DevicePathTextLib.c b/EmulatorPkg/Library/DevicePathTextLib/DevicePathTextLib.c index e636207a0c..01cc961299 100644 --- a/EmulatorPkg/Library/DevicePathTextLib/DevicePathTextLib.c +++ b/EmulatorPkg/Library/DevicePathTextLib/DevicePathTextLib.c @@ -19,7 +19,6 @@ #include #include - /** Converts a Vendor device path structure to its string representative. @@ -52,18 +51,22 @@ DevPathToTextVendorLib ( CatPrint (Str, L"EmuThunk()"); return EFI_SUCCESS; } + if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuGraphicsWindowProtocolGuid)) { CatPrint (Str, L"EmuGraphics(%d)", Vendor->Instance); return EFI_SUCCESS; } + if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEfiSimpleFileSystemProtocolGuid)) { CatPrint (Str, L"EmuFs(%d)", Vendor->Instance); return EFI_SUCCESS; } + if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuBlockIoProtocolGuid)) { CatPrint (Str, L"EmuBlk(%d)", Vendor->Instance); return EFI_SUCCESS; } + if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuThreadThunkProtocolGuid)) { CatPrint (Str, L"EmuThread()"); return EFI_SUCCESS; @@ -82,20 +85,20 @@ DevPathToTextVendorLib ( **/ EFI_DEVICE_PATH_PROTOCOL * DevPathFromTextEmuThunk ( - IN CHAR16 *TextDeviceNode + IN CHAR16 *TextDeviceNode ) { CHAR16 *Str; VENDOR_DEVICE_PATH *Vendor; Str = GetNextParamStr (&TextDeviceNode); - Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode ( - HARDWARE_DEVICE_PATH, - HW_VENDOR_DP, - (UINT16) sizeof (VENDOR_DEVICE_PATH) - ); + Vendor = (VENDOR_DEVICE_PATH *)CreateDeviceNode ( + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + (UINT16)sizeof (VENDOR_DEVICE_PATH) + ); CopyGuid (&Vendor->Guid, &gEmuThunkProtocolGuid); - return (EFI_DEVICE_PATH_PROTOCOL *) Vendor; + return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; } /** @@ -108,20 +111,20 @@ DevPathFromTextEmuThunk ( **/ EFI_DEVICE_PATH_PROTOCOL * DevPathFromTextEmuThread ( - IN CHAR16 *TextDeviceNode + IN CHAR16 *TextDeviceNode ) { CHAR16 *Str; VENDOR_DEVICE_PATH *Vendor; Str = GetNextParamStr (&TextDeviceNode); - Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode ( - HARDWARE_DEVICE_PATH, - HW_VENDOR_DP, - (UINT16) sizeof (VENDOR_DEVICE_PATH) - ); + Vendor = (VENDOR_DEVICE_PATH *)CreateDeviceNode ( + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + (UINT16)sizeof (VENDOR_DEVICE_PATH) + ); CopyGuid (&Vendor->Guid, &gEmuThreadThunkProtocolGuid); - return (EFI_DEVICE_PATH_PROTOCOL *) Vendor; + return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; } /** @@ -134,22 +137,22 @@ DevPathFromTextEmuThread ( **/ EFI_DEVICE_PATH_PROTOCOL * DevPathFromTextEmuFs ( - IN CHAR16 *TextDeviceNode + IN CHAR16 *TextDeviceNode ) { CHAR16 *Str; EMU_VENDOR_DEVICE_PATH_NODE *Vendor; - Str = GetNextParamStr (&TextDeviceNode); - Vendor = (EMU_VENDOR_DEVICE_PATH_NODE *) CreateDeviceNode ( - HARDWARE_DEVICE_PATH, - HW_VENDOR_DP, - (UINT16) sizeof (EMU_VENDOR_DEVICE_PATH_NODE) - ); + Str = GetNextParamStr (&TextDeviceNode); + Vendor = (EMU_VENDOR_DEVICE_PATH_NODE *)CreateDeviceNode ( + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + (UINT16)sizeof (EMU_VENDOR_DEVICE_PATH_NODE) + ); CopyGuid (&Vendor->VendorDevicePath.Guid, &gEfiSimpleFileSystemProtocolGuid); - Vendor->Instance = (UINT32) StrDecimalToUintn (Str); + Vendor->Instance = (UINT32)StrDecimalToUintn (Str); - return (EFI_DEVICE_PATH_PROTOCOL *) Vendor; + return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; } /** diff --git a/EmulatorPkg/Library/DxeCoreTimerLib/DxeCoreTimerLib.c b/EmulatorPkg/Library/DxeCoreTimerLib/DxeCoreTimerLib.c index 513a5aaa7c..d14a2011b0 100644 --- a/EmulatorPkg/Library/DxeCoreTimerLib/DxeCoreTimerLib.c +++ b/EmulatorPkg/Library/DxeCoreTimerLib/DxeCoreTimerLib.c @@ -16,8 +16,6 @@ #include - - /** Stalls the CPU for at least the given number of microseconds. @@ -31,13 +29,12 @@ UINTN EFIAPI MicroSecondDelay ( - IN UINTN MicroSeconds + IN UINTN MicroSeconds ) { return NanoSecondDelay (MicroSeconds * 1000); } - /** Stalls the CPU for at least the given number of nanoseconds. @@ -51,14 +48,13 @@ MicroSecondDelay ( UINTN EFIAPI NanoSecondDelay ( - IN UINTN NanoSeconds + IN UINTN NanoSeconds ) { gEmuThunk->Sleep (NanoSeconds); return NanoSeconds; } - /** Retrieves the current value of a 64-bit free running performance counter. @@ -105,14 +101,14 @@ GetPerformanceCounter ( UINT64 EFIAPI GetPerformanceCounterProperties ( - OUT UINT64 *StartValue OPTIONAL, - OUT UINT64 *EndValue OPTIONAL + OUT UINT64 *StartValue OPTIONAL, + OUT UINT64 *EndValue OPTIONAL ) { - if (StartValue != NULL) { *StartValue = 0ULL; } + if (EndValue != NULL) { *EndValue = (UINT64)-1LL; } @@ -156,9 +152,9 @@ GetTimeInNanoSecond ( // Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34, // i.e. highest bit set in Remainder should <= 33. // - Shift = MAX (0, HighBitSet64 (Remainder) - 33); - Remainder = RShiftU64 (Remainder, (UINTN) Shift); - Frequency = RShiftU64 (Frequency, (UINTN) Shift); + Shift = MAX (0, HighBitSet64 (Remainder) - 33); + Remainder = RShiftU64 (Remainder, (UINTN)Shift); + Frequency = RShiftU64 (Frequency, (UINTN)Shift); NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL); return NanoSeconds; diff --git a/EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.c b/EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.c index 3247114d09..291897eff2 100644 --- a/EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.c +++ b/EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.c @@ -13,8 +13,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -EMU_THUNK_PROTOCOL *gEmuThunk = NULL; - +EMU_THUNK_PROTOCOL *gEmuThunk = NULL; /** The constructor function caches the pointer of EMU Thunk protocol. @@ -32,7 +31,7 @@ DxeEmuLibConstructor ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_HOB_GUID_TYPE *GuidHob; + EFI_HOB_GUID_TYPE *GuidHob; GuidHob = GetFirstGuidHob (&gEmuThunkProtocolGuid); ASSERT (GuidHob != NULL); @@ -43,7 +42,6 @@ DxeEmuLibConstructor ( return EFI_SUCCESS; } - /** Serach the EMU IO Thunk database for a matching EMU IO Thunk Protocol instance. @@ -62,8 +60,8 @@ GetIoThunkInstance ( IN UINTN Instance ) { - EFI_STATUS Status; - EMU_IO_THUNK_PROTOCOL *EmuIoThunk; + EFI_STATUS Status; + EMU_IO_THUNK_PROTOCOL *EmuIoThunk; for (Status = EFI_SUCCESS, EmuIoThunk = NULL; !EFI_ERROR (Status); ) { Status = gEmuThunk->GetNextProtocol (FALSE, &EmuIoThunk); diff --git a/EmulatorPkg/Library/DxeEmuPeCoffExtraActionLib/DxeEmuPeCoffExtraActionLib.c b/EmulatorPkg/Library/DxeEmuPeCoffExtraActionLib/DxeEmuPeCoffExtraActionLib.c index 44a42a3784..c3c5ae4246 100644 --- a/EmulatorPkg/Library/DxeEmuPeCoffExtraActionLib/DxeEmuPeCoffExtraActionLib.c +++ b/EmulatorPkg/Library/DxeEmuPeCoffExtraActionLib/DxeEmuPeCoffExtraActionLib.c @@ -23,8 +23,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Cache of UnixThunk protocol // -EMU_THUNK_PROTOCOL *mThunk = NULL; - +EMU_THUNK_PROTOCOL *mThunk = NULL; /** The constructor function gets the pointer of the WinNT thunk functions @@ -40,7 +39,7 @@ DxeEmuPeCoffLibExtraActionConstructor ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_HOB_GUID_TYPE *GuidHob; + EFI_HOB_GUID_TYPE *GuidHob; // // Retrieve EmuThunkProtocol from GUID'ed HOB @@ -73,8 +72,6 @@ PeCoffLoaderRelocateImageExtraAction ( } } - - /** Performs additional actions just before a PE/COFF image is unloaded. Any resources that were allocated by PeCoffLoaderRelocateImageExtraAction() must be freed. diff --git a/EmulatorPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.c b/EmulatorPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.c index 1f9ab86377..158ef69800 100644 --- a/EmulatorPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.c +++ b/EmulatorPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.c @@ -8,14 +8,10 @@ **/ - #include #include #include - - - /** Initialize the serial device hardware. @@ -56,14 +52,13 @@ SerialPortInitialize ( UINTN EFIAPI SerialPortWrite ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { return gEmuThunk->WriteStdOut (Buffer, NumberOfBytes); } - /** Read data from serial device and save the datas in buffer. @@ -83,8 +78,8 @@ SerialPortWrite ( UINTN EFIAPI SerialPortRead ( - OUT UINT8 *Buffer, - IN UINTN NumberOfBytes + OUT UINT8 *Buffer, + IN UINTN NumberOfBytes ) { return gEmuThunk->ReadStdIn (Buffer, NumberOfBytes); @@ -123,7 +118,7 @@ SerialPortPoll ( RETURN_STATUS EFIAPI SerialPortSetControl ( - IN UINT32 Control + IN UINT32 Control ) { return RETURN_UNSUPPORTED; @@ -142,13 +137,14 @@ SerialPortSetControl ( RETURN_STATUS EFIAPI SerialPortGetControl ( - OUT UINT32 *Control + OUT UINT32 *Control ) { *Control = 0; if (!SerialPortPoll ()) { *Control = EFI_SERIAL_INPUT_BUFFER_EMPTY; } + return RETURN_SUCCESS; } @@ -188,14 +184,13 @@ SerialPortGetControl ( RETURN_STATUS EFIAPI SerialPortSetAttributes ( - IN OUT UINT64 *BaudRate, - IN OUT UINT32 *ReceiveFifoDepth, - IN OUT UINT32 *Timeout, - IN OUT EFI_PARITY_TYPE *Parity, - IN OUT UINT8 *DataBits, - IN OUT EFI_STOP_BITS_TYPE *StopBits + IN OUT UINT64 *BaudRate, + IN OUT UINT32 *ReceiveFifoDepth, + IN OUT UINT32 *Timeout, + IN OUT EFI_PARITY_TYPE *Parity, + IN OUT UINT8 *DataBits, + IN OUT EFI_STOP_BITS_TYPE *StopBits ) { return RETURN_UNSUPPORTED; } - diff --git a/EmulatorPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.c b/EmulatorPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.c index 0eefec0404..70e7140464 100644 --- a/EmulatorPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.c +++ b/EmulatorPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.c @@ -8,14 +8,10 @@ **/ - #include #include #include - - - /** Initialize the serial device hardware. @@ -56,8 +52,8 @@ SerialPortInitialize ( UINTN EFIAPI SerialPortWrite ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { if (gEmuThunk == NULL) { @@ -67,7 +63,6 @@ SerialPortWrite ( return gEmuThunk->WriteStdErr (Buffer, NumberOfBytes); } - /** Read data from serial device and save the datas in buffer. @@ -87,8 +82,8 @@ SerialPortWrite ( UINTN EFIAPI SerialPortRead ( - OUT UINT8 *Buffer, - IN UINTN NumberOfBytes + OUT UINT8 *Buffer, + IN UINTN NumberOfBytes ) { return 0; @@ -113,5 +108,3 @@ SerialPortPoll ( { return FALSE; } - - diff --git a/EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.c b/EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.c index 4244a5d65c..9113efc3a0 100644 --- a/EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.c +++ b/EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.c @@ -16,17 +16,16 @@ #include - -STATIC UINT64 gTimerPeriod = 0; -STATIC EFI_TIMER_ARCH_PROTOCOL *gTimerAp = NULL; -STATIC EFI_EVENT gTimerEvent = NULL; -STATIC VOID *gRegistration = NULL; +STATIC UINT64 gTimerPeriod = 0; +STATIC EFI_TIMER_ARCH_PROTOCOL *gTimerAp = NULL; +STATIC EFI_EVENT gTimerEvent = NULL; +STATIC VOID *gRegistration = NULL; VOID EFIAPI RegisterTimerArchProtocol ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { EFI_STATUS Status; @@ -46,8 +45,6 @@ RegisterTimerArchProtocol ( } } - - /** Stalls the CPU for at least the given number of microseconds. @@ -61,13 +58,12 @@ RegisterTimerArchProtocol ( UINTN EFIAPI MicroSecondDelay ( - IN UINTN MicroSeconds + IN UINTN MicroSeconds ) { return NanoSecondDelay (MicroSeconds * 1000); } - /** Stalls the CPU for at least the given number of nanoseconds. @@ -81,7 +77,7 @@ MicroSecondDelay ( UINTN EFIAPI NanoSecondDelay ( - IN UINTN NanoSeconds + IN UINTN NanoSeconds ) { EFI_STATUS Status; @@ -90,25 +86,25 @@ NanoSecondDelay ( if ((gTimerPeriod != 0) && ((UINT64)NanoSeconds > gTimerPeriod) && - (EfiGetCurrentTpl () == TPL_APPLICATION)) { + (EfiGetCurrentTpl () == TPL_APPLICATION)) + { // // This stall is long, so use gBS->WaitForEvent () to yield CPU to DXE Core // HundredNanoseconds = DivU64x32 (NanoSeconds, 100); - Status = gBS->SetTimer (gTimerEvent, TimerRelative, HundredNanoseconds); + Status = gBS->SetTimer (gTimerEvent, TimerRelative, HundredNanoseconds); ASSERT_EFI_ERROR (Status); Status = gBS->WaitForEvent (sizeof (gTimerEvent)/sizeof (EFI_EVENT), &gTimerEvent, &Index); ASSERT_EFI_ERROR (Status); - } else { gEmuThunk->Sleep (NanoSeconds); } + return NanoSeconds; } - /** Retrieves the current value of a 64-bit free running performance counter. @@ -155,14 +151,14 @@ GetPerformanceCounter ( UINT64 EFIAPI GetPerformanceCounterProperties ( - OUT UINT64 *StartValue OPTIONAL, - OUT UINT64 *EndValue OPTIONAL + OUT UINT64 *StartValue OPTIONAL, + OUT UINT64 *EndValue OPTIONAL ) { - if (StartValue != NULL) { *StartValue = 0ULL; } + if (EndValue != NULL) { *EndValue = (UINT64)-1LL; } @@ -170,7 +166,6 @@ GetPerformanceCounterProperties ( return gEmuThunk->QueryPerformanceFrequency (); } - /** Register for the Timer AP protocol. @@ -234,9 +229,9 @@ GetTimeInNanoSecond ( // Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34, // i.e. highest bit set in Remainder should <= 33. // - Shift = MAX (0, HighBitSet64 (Remainder) - 33); - Remainder = RShiftU64 (Remainder, (UINTN) Shift); - Frequency = RShiftU64 (Frequency, (UINTN) Shift); + Shift = MAX (0, HighBitSet64 (Remainder) - 33); + Remainder = RShiftU64 (Remainder, (UINTN)Shift); + Frequency = RShiftU64 (Frequency, (UINTN)Shift); NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL); return NanoSeconds; diff --git a/EmulatorPkg/Library/GuardUefiMemoryAllocationLib/MemoryAllocationLib.c b/EmulatorPkg/Library/GuardUefiMemoryAllocationLib/MemoryAllocationLib.c index cd7336a017..515ef1a59b 100644 --- a/EmulatorPkg/Library/GuardUefiMemoryAllocationLib/MemoryAllocationLib.c +++ b/EmulatorPkg/Library/GuardUefiMemoryAllocationLib/MemoryAllocationLib.c @@ -15,10 +15,8 @@ **/ - #include - #include #include #include @@ -144,14 +142,14 @@ FreePages ( IN UINTN Pages ) { - EFI_STATUS Status; + EFI_STATUS Status; ASSERT (Pages != 0); if (!gEmuThunk->Free (Buffer)) { // The Free thunk will not free memory allocated in emulated EFI memory. // The assmuption is this was allocated directly by EFI. We need this as some // times protocols or EFI BootServices can return dynamically allocated buffers. - Status = gBS->FreePages ((EFI_PHYSICAL_ADDRESS) (UINTN) Buffer, Pages); + Status = gBS->FreePages ((EFI_PHYSICAL_ADDRESS)(UINTN)Buffer, Pages); ASSERT_EFI_ERROR (Status); } } @@ -180,12 +178,12 @@ InternalAllocateAlignedPages ( IN UINTN Alignment ) { - EFI_STATUS Status; - VOID *Memory; - UINTN AlignedMemory; - UINTN AlignmentMask; - UINTN UnalignedPages; - UINTN RealPages; + EFI_STATUS Status; + VOID *Memory; + UINTN AlignedMemory; + UINTN AlignmentMask; + UINTN UnalignedPages; + UINTN RealPages; // // Alignment must be a power of two or zero. @@ -195,12 +193,13 @@ InternalAllocateAlignedPages ( if (Pages == 0) { return NULL; } + if (Alignment > EFI_PAGE_SIZE) { // // Caculate the total number of pages since alignment is larger than page size. // - AlignmentMask = Alignment - 1; - RealPages = Pages + EFI_SIZE_TO_PAGES (Alignment); + AlignmentMask = Alignment - 1; + RealPages = Pages + EFI_SIZE_TO_PAGES (Alignment); // // Make sure that Pages plus EFI_SIZE_TO_PAGES (Alignment) does not overflow. // @@ -210,15 +209,17 @@ InternalAllocateAlignedPages ( if (Memory != NULL) { return NULL; } - AlignedMemory = ((UINTN) Memory + AlignmentMask) & ~AlignmentMask; - UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN) Memory); + + AlignedMemory = ((UINTN)Memory + AlignmentMask) & ~AlignmentMask; + UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN)Memory); if (UnalignedPages > 0) { // // Free first unaligned page(s). // FreePages (Memory, UnalignedPages); } - Memory = (VOID *) (AlignedMemory + EFI_PAGES_TO_SIZE (Pages)); + + Memory = (VOID *)(AlignedMemory + EFI_PAGES_TO_SIZE (Pages)); UnalignedPages = RealPages - Pages - UnalignedPages; if (UnalignedPages > 0) { // @@ -234,9 +235,11 @@ InternalAllocateAlignedPages ( if (Memory != NULL) { return NULL; } - AlignedMemory = (UINTN) Memory; + + AlignedMemory = (UINTN)Memory; } - return (VOID *) AlignedMemory; + + return (VOID *)AlignedMemory; } /** @@ -458,6 +461,7 @@ InternalAllocateZeroPool ( if (Memory != NULL) { Memory = ZeroMem (Memory, AllocationSize); } + return Memory; } @@ -554,12 +558,13 @@ InternalAllocateCopyPool ( VOID *Memory; ASSERT (Buffer != NULL); - ASSERT (AllocationSize <= (MAX_ADDRESS - (UINTN) Buffer + 1)); + ASSERT (AllocationSize <= (MAX_ADDRESS - (UINTN)Buffer + 1)); Memory = InternalAllocatePool (PoolType, AllocationSize); if (Memory != NULL) { - Memory = CopyMem (Memory, Buffer, AllocationSize); + Memory = CopyMem (Memory, Buffer, AllocationSize); } + return Memory; } @@ -677,10 +682,11 @@ InternalReallocatePool ( VOID *NewBuffer; NewBuffer = InternalAllocateZeroPool (PoolType, NewSize); - if (NewBuffer != NULL && OldBuffer != NULL) { + if ((NewBuffer != NULL) && (OldBuffer != NULL)) { CopyMem (NewBuffer, OldBuffer, MIN (OldSize, NewSize)); FreePool (OldBuffer); } + return NewBuffer; } @@ -797,10 +803,10 @@ ReallocateReservedPool ( VOID EFIAPI FreePool ( - IN VOID *Buffer + IN VOID *Buffer ) { - EFI_STATUS Status; + EFI_STATUS Status; if (!gEmuThunk->Free (Buffer)) { // The Free thunk will not free memory allocated in emulated EFI memory. @@ -810,4 +816,3 @@ FreePool ( ASSERT_EFI_ERROR (Status); } } - diff --git a/EmulatorPkg/Library/KeyMapLibNull/KeyMapLibNull.c b/EmulatorPkg/Library/KeyMapLibNull/KeyMapLibNull.c index 2e25fa5ac3..9aa34f70bb 100644 --- a/EmulatorPkg/Library/KeyMapLibNull/KeyMapLibNull.c +++ b/EmulatorPkg/Library/KeyMapLibNull/KeyMapLibNull.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - /** KeyMapMake gets called on key presses. @@ -20,7 +19,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI KeyMapMake ( - IN EFI_KEY_DATA *KeyData + IN EFI_KEY_DATA *KeyData ) { return EFI_SUCCESS; @@ -37,7 +36,7 @@ KeyMapMake ( EFI_STATUS EFIAPI KeyMapBreak ( - IN EFI_KEY_DATA *KeyData + IN EFI_KEY_DATA *KeyData ) { return EFI_SUCCESS; diff --git a/EmulatorPkg/Library/PeiCoreServicesTablePointerLib/PeiServicesTablePointer.c b/EmulatorPkg/Library/PeiCoreServicesTablePointerLib/PeiServicesTablePointer.c index 2d3a78269c..4a6111d2a2 100644 --- a/EmulatorPkg/Library/PeiCoreServicesTablePointerLib/PeiServicesTablePointer.c +++ b/EmulatorPkg/Library/PeiCoreServicesTablePointerLib/PeiServicesTablePointer.c @@ -29,7 +29,7 @@ CONST EFI_PEI_SERVICES **gPeiServices; VOID EFIAPI SetPeiServicesTablePointer ( - IN CONST EFI_PEI_SERVICES ** PeiServicesTablePointer + IN CONST EFI_PEI_SERVICES **PeiServicesTablePointer ) { ASSERT (PeiServicesTablePointer != NULL); @@ -58,7 +58,6 @@ GetPeiServicesTablePointer ( return gPeiServices; } - /** The constructor function caches the pointer to PEI services. @@ -74,8 +73,8 @@ GetPeiServicesTablePointer ( EFI_STATUS EFIAPI PeiServicesTablePointerLibConstructor ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) { gPeiServices = PeiServices; @@ -108,4 +107,3 @@ MigratePeiServicesTablePointer ( // return; } - diff --git a/EmulatorPkg/Library/PeiEmuPeCoffExtraActionLib/PeiEmuPeCoffExtraActionLib.c b/EmulatorPkg/Library/PeiEmuPeCoffExtraActionLib/PeiEmuPeCoffExtraActionLib.c index 55be3efbdb..9e1a8be607 100644 --- a/EmulatorPkg/Library/PeiEmuPeCoffExtraActionLib/PeiEmuPeCoffExtraActionLib.c +++ b/EmulatorPkg/Library/PeiEmuPeCoffExtraActionLib/PeiEmuPeCoffExtraActionLib.c @@ -22,7 +22,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Cache of UnixThunk protocol // -EMU_THUNK_PROTOCOL *mThunk = NULL; +EMU_THUNK_PROTOCOL *mThunk = NULL; /** The function caches the pointer of the Unix thunk functions @@ -36,22 +36,21 @@ EFIAPI EmuPeCoffGetThunkStucture ( ) { - EMU_THUNK_PPI *ThunkPpi; - EFI_STATUS Status; - + EMU_THUNK_PPI *ThunkPpi; + EFI_STATUS Status; // // Locate Unix ThunkPpi for retrieving standard output handle // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, - 0, - NULL, - (VOID **) &ThunkPpi - ); + &gEmuThunkPpiGuid, + 0, + NULL, + (VOID **)&ThunkPpi + ); ASSERT_EFI_ERROR (Status); - EMU_MAGIC_PAGE()->Thunk = (EMU_THUNK_PROTOCOL *) ThunkPpi->Thunk (); + EMU_MAGIC_PAGE ()->Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); return EFI_SUCCESS; } @@ -71,12 +70,12 @@ PeCoffLoaderRelocateImageExtraAction ( IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { - if (EMU_MAGIC_PAGE()->Thunk == NULL) { + if (EMU_MAGIC_PAGE ()->Thunk == NULL) { EmuPeCoffGetThunkStucture (); } - EMU_MAGIC_PAGE()->Thunk->PeCoffRelocateImageExtraAction (ImageContext); - } + EMU_MAGIC_PAGE ()->Thunk->PeCoffRelocateImageExtraAction (ImageContext); +} /** Performs additional actions just before a PE/COFF image is unloaded. Any resources @@ -94,8 +93,9 @@ PeCoffLoaderUnloadImageExtraAction ( IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { - if (EMU_MAGIC_PAGE()->Thunk == NULL) { + if (EMU_MAGIC_PAGE ()->Thunk == NULL) { EmuPeCoffGetThunkStucture (); } - EMU_MAGIC_PAGE()->Thunk->PeCoffUnloadImageExtraAction (ImageContext); + + EMU_MAGIC_PAGE ()->Thunk->PeCoffUnloadImageExtraAction (ImageContext); } diff --git a/EmulatorPkg/Library/PeiEmuPeCoffGetEntryPointLib/PeiEmuPeCoffGetEntryPointLib.c b/EmulatorPkg/Library/PeiEmuPeCoffGetEntryPointLib/PeiEmuPeCoffGetEntryPointLib.c index fd756b5594..a9d28f48cf 100644 --- a/EmulatorPkg/Library/PeiEmuPeCoffGetEntryPointLib/PeiEmuPeCoffGetEntryPointLib.c +++ b/EmulatorPkg/Library/PeiEmuPeCoffGetEntryPointLib/PeiEmuPeCoffGetEntryPointLib.c @@ -15,8 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - - /** Retrieves and returns a pointer to the entry point to a PE/COFF image that has been loaded into system memory with the PE/COFF Loader Library functions. @@ -41,22 +39,22 @@ PeCoffLoaderGetEntryPoint ( IN OUT VOID **EntryPoint ) { - EMU_THUNK_PPI *ThunkPpi; - EFI_STATUS Status; - EMU_THUNK_PROTOCOL *Thunk; + EMU_THUNK_PPI *ThunkPpi; + EFI_STATUS Status; + EMU_THUNK_PROTOCOL *Thunk; // // Locate EmuThunkPpi for retrieving standard output handle // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, - 0, - NULL, - (VOID **) &ThunkPpi + &gEmuThunkPpiGuid, + 0, + NULL, + (VOID **)&ThunkPpi ); ASSERT_EFI_ERROR (Status); - Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); + Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); return Thunk->PeCoffGetEntryPoint (Pe32Data, EntryPoint); } @@ -86,15 +84,14 @@ PeCoffLoaderGetMachineType ( DosHdr = (EFI_IMAGE_DOS_HEADER *)Pe32Data; if (DosHdr->e_magic == EFI_IMAGE_DOS_SIGNATURE) { - Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN) Pe32Data + (UINTN) ((DosHdr->e_lfanew) & 0x0ffff)); - + Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + (UINTN)((DosHdr->e_lfanew) & 0x0ffff)); } else { Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)(Pe32Data); } if (Hdr.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) { return Hdr.Te->Machine; - } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) { + } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) { return Hdr.Pe32->FileHeader.Machine; } @@ -126,15 +123,15 @@ PeCoffLoaderGetPdbPointer ( IN VOID *Pe32Data ) { - EFI_IMAGE_DOS_HEADER *DosHdr; - EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr; - EFI_IMAGE_DATA_DIRECTORY *DirectoryEntry; - EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *DebugEntry; - UINTN DirCount; - VOID *CodeViewEntryPointer; - INTN TEImageAdjust; - UINT32 NumberOfRvaAndSizes; - UINT16 Magic; + EFI_IMAGE_DOS_HEADER *DosHdr; + EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr; + EFI_IMAGE_DATA_DIRECTORY *DirectoryEntry; + EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *DebugEntry; + UINTN DirCount; + VOID *CodeViewEntryPointer; + INTN TEImageAdjust; + UINT32 NumberOfRvaAndSizes; + UINT16 Magic; ASSERT (Pe32Data != NULL); @@ -148,7 +145,7 @@ PeCoffLoaderGetPdbPointer ( // // DOS image header is present, so read the PE header after the DOS image header. // - Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN) Pe32Data + (UINTN) ((DosHdr->e_lfanew) & 0x0ffff)); + Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + (UINTN)((DosHdr->e_lfanew) & 0x0ffff)); } else { // // DOS image header is not present, so PE header is at the image base. @@ -158,11 +155,11 @@ PeCoffLoaderGetPdbPointer ( if (Hdr.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) { if (Hdr.Te->DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG].VirtualAddress != 0) { - DirectoryEntry = &Hdr.Te->DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG]; - TEImageAdjust = sizeof (EFI_TE_IMAGE_HEADER) - Hdr.Te->StrippedSize; - DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *)((UINTN) Hdr.Te + - Hdr.Te->DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG].VirtualAddress + - TEImageAdjust); + DirectoryEntry = &Hdr.Te->DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG]; + TEImageAdjust = sizeof (EFI_TE_IMAGE_HEADER) - Hdr.Te->StrippedSize; + DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *)((UINTN)Hdr.Te + + Hdr.Te->DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG].VirtualAddress + + TEImageAdjust); } } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) { // @@ -171,24 +168,24 @@ PeCoffLoaderGetPdbPointer ( // generate PE32+ image with PE32 Magic. // switch (Hdr.Pe32->FileHeader.Machine) { - case EFI_IMAGE_MACHINE_IA32: - // - // Assume PE32 image with IA32 Machine field. - // - Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC; - break; - case EFI_IMAGE_MACHINE_X64: - case EFI_IMAGE_MACHINE_IA64: - // - // Assume PE32+ image with X64 or IA64 Machine field - // - Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC; - break; - default: - // - // For unknow Machine field, use Magic in optional Header - // - Magic = Hdr.Pe32->OptionalHeader.Magic; + case EFI_IMAGE_MACHINE_IA32: + // + // Assume PE32 image with IA32 Machine field. + // + Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC; + break; + case EFI_IMAGE_MACHINE_X64: + case EFI_IMAGE_MACHINE_IA64: + // + // Assume PE32+ image with X64 or IA64 Machine field + // + Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC; + break; + default: + // + // For unknow Machine field, use Magic in optional Header + // + Magic = Hdr.Pe32->OptionalHeader.Magic; } if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { @@ -196,42 +193,42 @@ PeCoffLoaderGetPdbPointer ( // Use PE32 offset get Debug Directory Entry // NumberOfRvaAndSizes = Hdr.Pe32->OptionalHeader.NumberOfRvaAndSizes; - DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)&(Hdr.Pe32->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG]); - DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *) ((UINTN) Pe32Data + DirectoryEntry->VirtualAddress); + DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)&(Hdr.Pe32->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG]); + DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *)((UINTN)Pe32Data + DirectoryEntry->VirtualAddress); } else if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) { // // Use PE32+ offset get Debug Directory Entry // NumberOfRvaAndSizes = Hdr.Pe32Plus->OptionalHeader.NumberOfRvaAndSizes; - DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)&(Hdr.Pe32Plus->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG]); - DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *) ((UINTN) Pe32Data + DirectoryEntry->VirtualAddress); + DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)&(Hdr.Pe32Plus->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG]); + DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *)((UINTN)Pe32Data + DirectoryEntry->VirtualAddress); } if (NumberOfRvaAndSizes <= EFI_IMAGE_DIRECTORY_ENTRY_DEBUG) { DirectoryEntry = NULL; - DebugEntry = NULL; + DebugEntry = NULL; } } else { return NULL; } - if (DebugEntry == NULL || DirectoryEntry == NULL) { + if ((DebugEntry == NULL) || (DirectoryEntry == NULL)) { return NULL; } for (DirCount = 0; DirCount < DirectoryEntry->Size; DirCount += sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY), DebugEntry++) { if (DebugEntry->Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW) { if (DebugEntry->SizeOfData > 0) { - CodeViewEntryPointer = (VOID *) ((UINTN) DebugEntry->RVA + ((UINTN)Pe32Data) + (UINTN)TEImageAdjust); - switch (* (UINT32 *) CodeViewEntryPointer) { - case CODEVIEW_SIGNATURE_NB10: - return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY)); - case CODEVIEW_SIGNATURE_RSDS: - return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY)); - case CODEVIEW_SIGNATURE_MTOC: - return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY)); - default: - break; + CodeViewEntryPointer = (VOID *)((UINTN)DebugEntry->RVA + ((UINTN)Pe32Data) + (UINTN)TEImageAdjust); + switch (*(UINT32 *)CodeViewEntryPointer) { + case CODEVIEW_SIGNATURE_NB10: + return (VOID *)((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY)); + case CODEVIEW_SIGNATURE_RSDS: + return (VOID *)((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY)); + case CODEVIEW_SIGNATURE_MTOC: + return (VOID *)((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY)); + default: + break; } } } @@ -240,7 +237,6 @@ PeCoffLoaderGetPdbPointer ( return NULL; } - /** Returns the size of the PE/COFF headers @@ -256,12 +252,12 @@ PeCoffLoaderGetPdbPointer ( UINT32 EFIAPI PeCoffGetSizeOfHeaders ( - IN VOID *Pe32Data + IN VOID *Pe32Data ) { - EFI_IMAGE_DOS_HEADER *DosHdr; - EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr; - UINTN SizeOfHeaders; + EFI_IMAGE_DOS_HEADER *DosHdr; + EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr; + UINTN SizeOfHeaders; ASSERT (Pe32Data != NULL); @@ -270,7 +266,7 @@ PeCoffGetSizeOfHeaders ( // // DOS image header is present, so read the PE header after the DOS image header. // - Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN) Pe32Data + (UINTN) ((DosHdr->e_lfanew) & 0x0ffff)); + Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + (UINTN)((DosHdr->e_lfanew) & 0x0ffff)); } else { // // DOS image header is not present, so PE header is at the image base. @@ -286,6 +282,5 @@ PeCoffGetSizeOfHeaders ( SizeOfHeaders = 0; } - return (UINT32) SizeOfHeaders; + return (UINT32)SizeOfHeaders; } - diff --git a/EmulatorPkg/Library/PeiEmuSerialPortLib/PeiEmuSerialPortLib.c b/EmulatorPkg/Library/PeiEmuSerialPortLib/PeiEmuSerialPortLib.c index cf727a638c..e037d82f1e 100644 --- a/EmulatorPkg/Library/PeiEmuSerialPortLib/PeiEmuSerialPortLib.c +++ b/EmulatorPkg/Library/PeiEmuSerialPortLib/PeiEmuSerialPortLib.c @@ -9,7 +9,6 @@ **/ - #include #include #include @@ -17,8 +16,6 @@ #include #include - - /** Initialize the serial device hardware. @@ -59,32 +56,31 @@ SerialPortInitialize ( UINTN EFIAPI SerialPortWrite ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - EMU_THUNK_PPI *ThunkPpi; - EFI_STATUS Status; - EMU_THUNK_PROTOCOL *Thunk; + EMU_THUNK_PPI *ThunkPpi; + EFI_STATUS Status; + EMU_THUNK_PROTOCOL *Thunk; // // Locate EmuThunkPpi for retrieving standard output handle // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, - 0, - NULL, - (VOID **) &ThunkPpi + &gEmuThunkPpiGuid, + 0, + NULL, + (VOID **)&ThunkPpi ); if (!EFI_ERROR (Status)) { - Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); + Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); return Thunk->WriteStdErr (Buffer, NumberOfBytes); } return 0; } - /** Read data from serial device and save the datas in buffer. @@ -104,8 +100,8 @@ SerialPortWrite ( UINTN EFIAPI SerialPortRead ( - OUT UINT8 *Buffer, - IN UINTN NumberOfBytes + OUT UINT8 *Buffer, + IN UINTN NumberOfBytes ) { return 0; @@ -130,4 +126,3 @@ SerialPortPoll ( { return FALSE; } - diff --git a/EmulatorPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c b/EmulatorPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c index d9d37bf8af..37f5a106f0 100644 --- a/EmulatorPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c +++ b/EmulatorPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c @@ -16,7 +16,6 @@ #include - CONST EFI_PEI_SERVICES **gPeiServices = NULL; /** @@ -33,7 +32,7 @@ CONST EFI_PEI_SERVICES **gPeiServices = NULL; VOID EFIAPI SetPeiServicesTablePointer ( - IN CONST EFI_PEI_SERVICES ** PeiServicesTablePointer + IN CONST EFI_PEI_SERVICES **PeiServicesTablePointer ) { ASSERT (PeiServicesTablePointer != NULL); @@ -64,8 +63,6 @@ GetPeiServicesTablePointer ( return gPeiServices; } - - /** Notification service to be called when gEmuThunkPpiGuid is installed. @@ -81,9 +78,9 @@ GetPeiServicesTablePointer ( EFI_STATUS EFIAPI PeiServicesTablePointerNotifyCallback ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, - IN VOID *Ppi + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi ) { gPeiServices = (CONST EFI_PEI_SERVICES **)PeiServices; @@ -91,14 +88,12 @@ PeiServicesTablePointerNotifyCallback ( return EFI_SUCCESS; } - -EFI_PEI_NOTIFY_DESCRIPTOR mNotifyOnThunkList = { +EFI_PEI_NOTIFY_DESCRIPTOR mNotifyOnThunkList = { (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), &gEfiPeiMemoryDiscoveredPpiGuid, PeiServicesTablePointerNotifyCallback }; - /** Constructor register notification on when PPI updates. If PPI is alreay installed registering the notify will cause the handle to @@ -113,11 +108,11 @@ EFI_PEI_NOTIFY_DESCRIPTOR mNotifyOnThunkList = { EFI_STATUS EFIAPI PeiServicesTablePointerLibConstructor ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) { - EFI_STATUS Status; + EFI_STATUS Status; gPeiServices = (CONST EFI_PEI_SERVICES **)PeiServices; @@ -153,4 +148,3 @@ MigratePeiServicesTablePointer ( // return; } - diff --git a/EmulatorPkg/Library/PeiServicesTablePointerLibMagicPage/PeiServicesTablePointer.c b/EmulatorPkg/Library/PeiServicesTablePointerLibMagicPage/PeiServicesTablePointer.c index 9d6e1dfd8a..4f43d6d1aa 100644 --- a/EmulatorPkg/Library/PeiServicesTablePointerLibMagicPage/PeiServicesTablePointer.c +++ b/EmulatorPkg/Library/PeiServicesTablePointerLibMagicPage/PeiServicesTablePointer.c @@ -16,7 +16,6 @@ #include #include - /** Caches a pointer PEI Services Table. @@ -31,12 +30,12 @@ VOID EFIAPI SetPeiServicesTablePointer ( - IN CONST EFI_PEI_SERVICES ** PeiServicesTablePointer + IN CONST EFI_PEI_SERVICES **PeiServicesTablePointer ) { ASSERT (PeiServicesTablePointer != NULL); ASSERT (*PeiServicesTablePointer != NULL); - EMU_MAGIC_PAGE()->PeiServicesTablePointer = PeiServicesTablePointer; + EMU_MAGIC_PAGE ()->PeiServicesTablePointer = PeiServicesTablePointer; } /** @@ -57,9 +56,9 @@ GetPeiServicesTablePointer ( VOID ) { - CONST EFI_PEI_SERVICES **PeiServicesTablePointer; + CONST EFI_PEI_SERVICES **PeiServicesTablePointer; - PeiServicesTablePointer = EMU_MAGIC_PAGE()->PeiServicesTablePointer; + PeiServicesTablePointer = EMU_MAGIC_PAGE ()->PeiServicesTablePointer; ASSERT (PeiServicesTablePointer != NULL); ASSERT (*PeiServicesTablePointer != NULL); return PeiServicesTablePointer; @@ -91,5 +90,3 @@ MigratePeiServicesTablePointer ( // return; } - - diff --git a/EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.c b/EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.c index c71b166853..8c4f20f42b 100644 --- a/EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.c +++ b/EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.c @@ -28,7 +28,7 @@ UINTN EFIAPI MicroSecondDelay ( - IN UINTN MicroSeconds + IN UINTN MicroSeconds ) { return NanoSecondDelay (MicroSeconds * 1000); @@ -47,24 +47,24 @@ MicroSecondDelay ( UINTN EFIAPI NanoSecondDelay ( - IN UINTN NanoSeconds + IN UINTN NanoSeconds ) { - EMU_THUNK_PPI *ThunkPpi; - EFI_STATUS Status; - EMU_THUNK_PROTOCOL *Thunk; + EMU_THUNK_PPI *ThunkPpi; + EFI_STATUS Status; + EMU_THUNK_PROTOCOL *Thunk; // // Locate EmuThunkPpi for // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, - 0, - NULL, - (VOID **) &ThunkPpi + &gEmuThunkPpiGuid, + 0, + NULL, + (VOID **)&ThunkPpi ); if (!EFI_ERROR (Status)) { - Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); + Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); Thunk->Sleep (NanoSeconds * 100); return NanoSeconds; } @@ -89,22 +89,22 @@ GetPerformanceCounter ( VOID ) { - EMU_THUNK_PPI *ThunkPpi; - EFI_STATUS Status; - EMU_THUNK_PROTOCOL *Thunk; + EMU_THUNK_PPI *ThunkPpi; + EFI_STATUS Status; + EMU_THUNK_PROTOCOL *Thunk; // // Locate EmuThunkPpi for // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, - 0, - NULL, - (VOID **) &ThunkPpi + &gEmuThunkPpiGuid, + 0, + NULL, + (VOID **)&ThunkPpi ); if (!EFI_ERROR (Status)) { - Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); - return Thunk->QueryPerformanceCounter (); + Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); + return Thunk->QueryPerformanceCounter (); } return 0; @@ -136,33 +136,34 @@ GetPerformanceCounter ( UINT64 EFIAPI GetPerformanceCounterProperties ( - OUT UINT64 *StartValue OPTIONAL, - OUT UINT64 *EndValue OPTIONAL + OUT UINT64 *StartValue OPTIONAL, + OUT UINT64 *EndValue OPTIONAL ) { - EMU_THUNK_PPI *ThunkPpi; - EFI_STATUS Status; - EMU_THUNK_PROTOCOL *Thunk; + EMU_THUNK_PPI *ThunkPpi; + EFI_STATUS Status; + EMU_THUNK_PROTOCOL *Thunk; // // Locate EmuThunkPpi for // Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, - 0, - NULL, - (VOID **) &ThunkPpi + &gEmuThunkPpiGuid, + 0, + NULL, + (VOID **)&ThunkPpi ); if (!EFI_ERROR (Status)) { if (StartValue != NULL) { *StartValue = 0ULL; } + if (EndValue != NULL) { *EndValue = (UINT64)-1LL; } - Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); - return Thunk->QueryPerformanceFrequency (); + Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk (); + return Thunk->QueryPerformanceFrequency (); } return 0; @@ -204,9 +205,9 @@ GetTimeInNanoSecond ( // Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34, // i.e. highest bit set in Remainder should <= 33. // - Shift = MAX (0, HighBitSet64 (Remainder) - 33); - Remainder = RShiftU64 (Remainder, (UINTN) Shift); - Frequency = RShiftU64 (Frequency, (UINTN) Shift); + Shift = MAX (0, HighBitSet64 (Remainder) - 33); + Remainder = RShiftU64 (Remainder, (UINTN)Shift); + Frequency = RShiftU64 (Frequency, (UINTN)Shift); NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL); return NanoSeconds; diff --git a/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c b/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c index 03f6157ae8..755fc04cb0 100644 --- a/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c +++ b/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "PlatformBm.h" -EFI_GUID mBootMenuFile = { +EFI_GUID mBootMenuFile = { 0xEEC25BDC, 0x67F2, 0x4D95, { 0xB1, 0xD5, 0xF8, 0x1B, 0x20, 0x39, 0xD1, 0x1D } }; @@ -20,24 +20,24 @@ SetupVariableInit ( VOID ) { - EFI_STATUS Status; - UINTN Size; - EMU_SYSTEM_CONFIGURATION SystemConfigData; + EFI_STATUS Status; + UINTN Size; + EMU_SYSTEM_CONFIGURATION SystemConfigData; - Size = sizeof (SystemConfigData); + Size = sizeof (SystemConfigData); Status = gRT->GetVariable ( L"Setup", &gEmuSystemConfigGuid, NULL, &Size, - (VOID *) &SystemConfigData + (VOID *)&SystemConfigData ); if (EFI_ERROR (Status)) { // // SetupVariable is corrupt // - SystemConfigData.ConOutRow = PcdGet32 (PcdConOutColumn); + SystemConfigData.ConOutRow = PcdGet32 (PcdConOutColumn); SystemConfigData.ConOutColumn = PcdGet32 (PcdConOutRow); Status = gRT->SetVariable ( @@ -45,7 +45,7 @@ SetupVariableInit ( &gEmuSystemConfigGuid, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, sizeof (SystemConfigData), - (VOID *) &SystemConfigData + (VOID *)&SystemConfigData ); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Failed to save Setup Variable to non-volatile storage, Status = %r\n", Status)); @@ -55,10 +55,9 @@ SetupVariableInit ( EFI_DEVICE_PATH * FvFilePath ( - EFI_GUID *FileGuid + EFI_GUID *FileGuid ) { - EFI_STATUS Status; EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileNode; @@ -68,12 +67,12 @@ FvFilePath ( Status = gBS->HandleProtocol ( gImageHandle, &gEfiLoadedImageProtocolGuid, - (VOID **) &LoadedImage + (VOID **)&LoadedImage ); ASSERT_EFI_ERROR (Status); return AppendDevicePathNode ( DevicePathFromHandle (LoadedImage->DeviceHandle), - (EFI_DEVICE_PATH_PROTOCOL *) &FileNode + (EFI_DEVICE_PATH_PROTOCOL *)&FileNode ); } @@ -91,28 +90,28 @@ FvFilePath ( **/ UINTN RegisterBootManagerMenuAppBootOption ( - EFI_GUID *FileGuid, - CHAR16 *Description, - UINTN Position, - BOOLEAN IsBootCategory + EFI_GUID *FileGuid, + CHAR16 *Description, + UINTN Position, + BOOLEAN IsBootCategory ) { - EFI_STATUS Status; - EFI_BOOT_MANAGER_LOAD_OPTION NewOption; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - UINTN OptionNumber; + EFI_STATUS Status; + EFI_BOOT_MANAGER_LOAD_OPTION NewOption; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINTN OptionNumber; DevicePath = FvFilePath (FileGuid); - Status = EfiBootManagerInitializeLoadOption ( - &NewOption, - LoadOptionNumberUnassigned, - LoadOptionTypeBoot, - IsBootCategory ? LOAD_OPTION_ACTIVE : LOAD_OPTION_CATEGORY_APP, - Description, - DevicePath, - NULL, - 0 - ); + Status = EfiBootManagerInitializeLoadOption ( + &NewOption, + LoadOptionNumberUnassigned, + LoadOptionTypeBoot, + IsBootCategory ? LOAD_OPTION_ACTIVE : LOAD_OPTION_CATEGORY_APP, + Description, + DevicePath, + NULL, + 0 + ); ASSERT_EFI_ERROR (Status); FreePool (DevicePath); @@ -136,16 +135,16 @@ RegisterBootManagerMenuAppBootOption ( **/ BOOLEAN IsBootManagerMenuAppFilePath ( - EFI_DEVICE_PATH_PROTOCOL *DevicePath -) + EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) { - EFI_HANDLE FvHandle; - VOID *NameGuid; - EFI_STATUS Status; + EFI_HANDLE FvHandle; + VOID *NameGuid; + EFI_STATUS Status; Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid, &DevicePath, &FvHandle); if (!EFI_ERROR (Status)) { - NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *) DevicePath); + NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)DevicePath); if (NameGuid != NULL) { return CompareGuid (NameGuid, &mBootMenuFile); } @@ -167,10 +166,10 @@ GetBootManagerMenuAppOption ( VOID ) { - UINTN BootOptionCount; - EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; - UINTN Index; - UINTN OptionNumber; + UINTN BootOptionCount; + EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; + UINTN Index; + UINTN OptionNumber; OptionNumber = 0; @@ -189,7 +188,7 @@ GetBootManagerMenuAppOption ( // // If not found the BootManagerMenuApp, create it. // - OptionNumber = (UINT16) RegisterBootManagerMenuAppBootOption (&mBootMenuFile, L"UEFI BootManagerMenuApp", (UINTN) -1, FALSE); + OptionNumber = (UINT16)RegisterBootManagerMenuAppBootOption (&mBootMenuFile, L"UEFI BootManagerMenuApp", (UINTN)-1, FALSE); } return OptionNumber; @@ -205,13 +204,13 @@ PlatformBootManagerBeforeConsole ( VOID ) { - UINTN Index; + UINTN Index; SetupVariableInit (); EfiEventGroupSignal (&gEfiEndOfDxeEventGroupGuid); - Index = 0; + Index = 0; while (gPlatformConsole[Index].DevicePath != NULL) { // // Update the console variable with the connect type @@ -256,8 +255,8 @@ PlatformBdsConnectSequence ( **/ VOID PlatformBdsDiagnostics ( - IN EXTENDMEM_COVERAGE_LEVEL MemoryTestLevel, - IN BOOLEAN QuietBoot + IN EXTENDMEM_COVERAGE_LEVEL MemoryTestLevel, + IN BOOLEAN QuietBoot ) { EFI_STATUS Status; @@ -317,14 +316,14 @@ PlatformBdsRegisterStaticBootOptions ( F2.ScanCode = SCAN_F2; F2.UnicodeChar = CHAR_NULL; EfiBootManagerGetBootManagerMenu (&BootOption); - EfiBootManagerAddKeyOptionVariable (NULL, (UINT16) BootOption.OptionNumber, 0, &F2, NULL); + EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL); // // 3. Boot Device List menu // - F7.ScanCode = SCAN_F7; - F7.UnicodeChar = CHAR_NULL; - OptionNumber = GetBootManagerMenuAppOption (); + F7.ScanCode = SCAN_F7; + F7.UnicodeChar = CHAR_NULL; + OptionNumber = GetBootManagerMenuAppOption (); EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)OptionNumber, 0, &F7, NULL); PrintXY (10, 10, &White, &Black, L"F2 to enter Setup. "); @@ -339,7 +338,7 @@ PlatformBdsRegisterStaticBootOptions ( **/ UINTN BootOptionPriority ( - CONST EFI_BOOT_MANAGER_LOAD_OPTION *BootOption + CONST EFI_BOOT_MANAGER_LOAD_OPTION *BootOption ) { // @@ -348,6 +347,7 @@ BootOptionPriority ( if (StrCmp (BootOption->Description, L"UEFI Shell") == 0) { return 0; } + return 100; } @@ -377,37 +377,35 @@ PlatformBootManagerAfterConsole ( VOID ) { - // // Go the different platform policy with different boot mode // Notes: this part code can be change with the table policy // switch (GetBootModeHob ()) { + case BOOT_ASSUMING_NO_CONFIGURATION_CHANGES: + case BOOT_WITH_MINIMAL_CONFIGURATION: + PlatformBdsDiagnostics (IGNORE, TRUE); + + // + // Perform some platform specific connect sequence + // + PlatformBdsConnectSequence (); + break; - case BOOT_ASSUMING_NO_CONFIGURATION_CHANGES: - case BOOT_WITH_MINIMAL_CONFIGURATION: - PlatformBdsDiagnostics (IGNORE, TRUE); + case BOOT_IN_RECOVERY_MODE: + PlatformBdsDiagnostics (EXTENSIVE, FALSE); + break; - // - // Perform some platform specific connect sequence - // - PlatformBdsConnectSequence (); - break; - - case BOOT_IN_RECOVERY_MODE: - PlatformBdsDiagnostics (EXTENSIVE, FALSE); - break; - - case BOOT_WITH_FULL_CONFIGURATION: - case BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS: - case BOOT_WITH_DEFAULT_SETTINGS: - default: - PlatformBdsDiagnostics (IGNORE, TRUE); - PlatformBdsRegisterStaticBootOptions (); - PlatformBdsConnectSequence (); - EfiBootManagerRefreshAllBootOption (); - EfiBootManagerSortLoadOptionVariable (LoadOptionTypeBoot, (SORT_COMPARE)CompareBootOption); - break; + case BOOT_WITH_FULL_CONFIGURATION: + case BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS: + case BOOT_WITH_DEFAULT_SETTINGS: + default: + PlatformBdsDiagnostics (IGNORE, TRUE); + PlatformBdsRegisterStaticBootOptions (); + PlatformBdsConnectSequence (); + EfiBootManagerRefreshAllBootOption (); + EfiBootManagerSortLoadOptionVariable (LoadOptionTypeBoot, (SORT_COMPARE)CompareBootOption); + break; } } @@ -419,12 +417,12 @@ PlatformBootManagerAfterConsole ( VOID EFIAPI PlatformBootManagerWaitCallback ( - UINT16 TimeoutRemain + UINT16 TimeoutRemain ) { - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Black; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White; - UINT16 Timeout; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Black; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White; + UINT16 Timeout; Timeout = PcdGet16 (PcdPlatformBootTimeOut); @@ -456,4 +454,3 @@ PlatformBootManagerUnableToBoot ( { return; } - diff --git a/EmulatorPkg/Library/PlatformBmLib/PlatformBm.h b/EmulatorPkg/Library/PlatformBmLib/PlatformBm.h index ce508b6b58..b89ffd77e4 100644 --- a/EmulatorPkg/Library/PlatformBmLib/PlatformBm.h +++ b/EmulatorPkg/Library/PlatformBmLib/PlatformBm.h @@ -34,14 +34,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -#define CONSOLE_OUT 0x00000001 -#define STD_ERROR 0x00000002 -#define CONSOLE_IN 0x00000004 -#define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR) +#define CONSOLE_OUT 0x00000001 +#define STD_ERROR 0x00000002 +#define CONSOLE_IN 0x00000004 +#define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR) typedef struct { - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - UINTN ConnectType; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINTN ConnectType; } BDS_CONSOLE_CONNECT_ENTRY; extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[]; @@ -56,14 +56,12 @@ extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[]; }\ } - typedef struct { - EMU_VENDOR_DEVICE_PATH_NODE EmuBus; - EMU_VENDOR_DEVICE_PATH_NODE EmuGraphicsWindow; - EFI_DEVICE_PATH_PROTOCOL End; + EMU_VENDOR_DEVICE_PATH_NODE EmuBus; + EMU_VENDOR_DEVICE_PATH_NODE EmuGraphicsWindow; + EFI_DEVICE_PATH_PROTOCOL End; } EMU_PLATFORM_UGA_DEVICE_PATH; - // // Platform BDS Functions // @@ -80,10 +78,9 @@ typedef struct { **/ EFI_STATUS PlatformBootManagerMemoryTest ( - IN EXTENDMEM_COVERAGE_LEVEL Level + IN EXTENDMEM_COVERAGE_LEVEL Level ); - VOID PlatformBdsConnectSequence ( VOID diff --git a/EmulatorPkg/Library/PlatformBmLib/PlatformBmData.c b/EmulatorPkg/Library/PlatformBmLib/PlatformBmData.c index 1151021606..efb03def37 100644 --- a/EmulatorPkg/Library/PlatformBmLib/PlatformBmData.c +++ b/EmulatorPkg/Library/PlatformBmLib/PlatformBmData.c @@ -8,17 +8,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "PlatformBm.h" - - -EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath = { +EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath = { { { { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), - (UINT8) ((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) + (UINT8)(sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), + (UINT8)((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) } }, EMU_THUNK_PROTOCOL_GUID @@ -31,8 +29,8 @@ EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath = { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), - (UINT8) ((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) + (UINT8)(sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), + (UINT8)((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) }, }, EMU_GRAPHICS_WINDOW_PROTOCOL_GUID, @@ -42,15 +40,15 @@ EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath = { gEndEntire }; -EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath2 = { +EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath2 = { { { { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), - (UINT8) ((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) + (UINT8)(sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), + (UINT8)((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) } }, EMU_THUNK_PROTOCOL_GUID @@ -63,8 +61,8 @@ EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath2 = { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), - (UINT8) ((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) + (UINT8)(sizeof (EMU_VENDOR_DEVICE_PATH_NODE)), + (UINT8)((sizeof (EMU_VENDOR_DEVICE_PATH_NODE)) >> 8) }, }, EMU_GRAPHICS_WINDOW_PROTOCOL_GUID, @@ -77,13 +75,13 @@ EMU_PLATFORM_UGA_DEVICE_PATH gGopDevicePath2 = { // // Predefined platform default console device path // -BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = { +BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = { { - (EFI_DEVICE_PATH_PROTOCOL *) &gGopDevicePath, + (EFI_DEVICE_PATH_PROTOCOL *)&gGopDevicePath, (CONSOLE_OUT | CONSOLE_IN) }, { - (EFI_DEVICE_PATH_PROTOCOL *) &gGopDevicePath2, + (EFI_DEVICE_PATH_PROTOCOL *)&gGopDevicePath2, (CONSOLE_OUT | CONSOLE_IN) }, { @@ -91,4 +89,3 @@ BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = { 0 } }; - diff --git a/EmulatorPkg/Library/PlatformBmLib/PlatformBmMemoryTest.c b/EmulatorPkg/Library/PlatformBmLib/PlatformBmMemoryTest.c index bda704cf94..db1b9d86ac 100644 --- a/EmulatorPkg/Library/PlatformBmLib/PlatformBmMemoryTest.c +++ b/EmulatorPkg/Library/PlatformBmLib/PlatformBmMemoryTest.c @@ -24,7 +24,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PlatformBootManagerMemoryTest ( - IN EXTENDMEM_COVERAGE_LEVEL Level + IN EXTENDMEM_COVERAGE_LEVEL Level ) { EFI_STATUS Status; @@ -42,17 +42,17 @@ PlatformBootManagerMemoryTest ( ReturnStatus = EFI_SUCCESS; ZeroMem (&Key, sizeof (EFI_INPUT_KEY)); - TestedMemorySize = 0; - TotalMemorySize = 0; - ErrorOut = FALSE; - TestAbort = FALSE; + TestedMemorySize = 0; + TotalMemorySize = 0; + ErrorOut = FALSE; + TestAbort = FALSE; RequireSoftECCInit = FALSE; Status = gBS->LocateProtocol ( &gEfiGenericMemTestProtocolGuid, NULL, - (VOID **) &GenMemoryTest + (VOID **)&GenMemoryTest ); if (EFI_ERROR (Status)) { return EFI_SUCCESS; @@ -88,11 +88,10 @@ PlatformBootManagerMemoryTest ( ASSERT (0); } - DEBUG ((DEBUG_INFO, "Perform memory test (ESC to skip).\n")); if (!PcdGetBool (PcdConInConnectOnDemand)) { - KeyStatus = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key); + KeyStatus = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key); if (!EFI_ERROR (KeyStatus) && (Key.ScanCode == SCAN_ESC)) { if (!RequireSoftECCInit) { Status = GenMemoryTest->Finished (GenMemoryTest); diff --git a/EmulatorPkg/Library/RedfishPlatformCredentialLib/RedfishPlatformCredentialLib.c b/EmulatorPkg/Library/RedfishPlatformCredentialLib/RedfishPlatformCredentialLib.c index 5428aa324e..eaf9c56450 100644 --- a/EmulatorPkg/Library/RedfishPlatformCredentialLib/RedfishPlatformCredentialLib.c +++ b/EmulatorPkg/Library/RedfishPlatformCredentialLib/RedfishPlatformCredentialLib.c @@ -18,15 +18,15 @@ #include #include -BOOLEAN mSecureBootDisabled = FALSE; -BOOLEAN mStopRedfishService = FALSE; +BOOLEAN mSecureBootDisabled = FALSE; +BOOLEAN mStopRedfishService = FALSE; EFI_STATUS EFIAPI LibStopRedfishService ( - IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, - IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE ServiceStopType -); + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE ServiceStopType + ); /** Return the credential for accessing to Redfish servcice. @@ -41,10 +41,10 @@ LibStopRedfishService ( **/ EFI_STATUS GetRedfishCredential ( - OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, - OUT CHAR8 **UserId, - OUT CHAR8 **Password -) + OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, + OUT CHAR8 **UserId, + OUT CHAR8 **Password + ) { UINTN UserIdSize; UINTN PasswordSize; @@ -59,14 +59,16 @@ GetRedfishCredential ( // UserIdSize = AsciiStrSize ((CHAR8 *)PcdGetPtr (PcdRedfishServieUserId)); PasswordSize = AsciiStrSize ((CHAR8 *)PcdGetPtr (PcdRedfishServiePassword)); - if (UserIdSize == 0 || PasswordSize == 0) { + if ((UserIdSize == 0) || (PasswordSize == 0)) { DEBUG ((DEBUG_ERROR, "Incorrect string of UserID or Password for REdfish service.\n")); return EFI_INVALID_PARAMETER; } + *UserId = AllocateZeroPool (UserIdSize); if (*UserId == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (*UserId, (CHAR8 *)PcdGetPtr (PcdRedfishServieUserId), UserIdSize); *Password = AllocateZeroPool (PasswordSize); @@ -110,11 +112,11 @@ LibCredentialGetAuthInfo ( OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, OUT CHAR8 **UserId, OUT CHAR8 **Password -) + ) { - EFI_STATUS Status; + EFI_STATUS Status; - if (This == NULL || AuthMethod == NULL || UserId == NULL || Password == NULL) { + if ((This == NULL) || (AuthMethod == NULL) || (UserId == NULL) || (Password == NULL)) { return EFI_INVALID_PARAMETER; } @@ -124,7 +126,7 @@ LibCredentialGetAuthInfo ( if (mSecureBootDisabled) { Status = LibStopRedfishService (This, ServiceStopTypeSecureBootDisabled); - if (EFI_ERROR (Status) && Status != EFI_UNSUPPORTED) { + if (EFI_ERROR (Status) && (Status != EFI_UNSUPPORTED)) { DEBUG ((DEBUG_ERROR, "SecureBoot has been disabled, but failed to stop RedfishService - %r\n", Status)); return Status; } @@ -159,9 +161,9 @@ LibCredentialGetAuthInfo ( EFI_STATUS EFIAPI LibStopRedfishService ( - IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, - IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE ServiceStopType -) + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE ServiceStopType + ) { if (ServiceStopType >= ServiceStopTypeMax) { return EFI_INVALID_PARAMETER; @@ -193,8 +195,10 @@ LibStopRedfishService ( mStopRedfishService = TRUE; DEBUG ((DEBUG_INFO, "EFI Redfish service is stopped without Redfish service stop type!!\n")); } + return EFI_SUCCESS; } + /** Notification of Exit Boot Service. @@ -204,7 +208,7 @@ VOID EFIAPI LibCredentialExitBootServicesNotify ( IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This -) + ) { LibStopRedfishService (This, ServiceStopTypeExitBootService); } @@ -218,15 +222,15 @@ VOID EFIAPI LibCredentialEndOfDxeNotify ( IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This -) + ) { EFI_STATUS Status; - UINT8 *SecureBootVar; + UINT8 *SecureBootVar; // // Check Secure Boot status and lock Redfish service if Secure Boot is disabled. // - Status = GetVariable2 (EFI_SECURE_BOOT_MODE_NAME, &gEfiGlobalVariableGuid, (VOID**)&SecureBootVar, NULL); + Status = GetVariable2 (EFI_SECURE_BOOT_MODE_NAME, &gEfiGlobalVariableGuid, (VOID **)&SecureBootVar, NULL); if (EFI_ERROR (Status) || (*SecureBootVar != SECURE_BOOT_MODE_ENABLE)) { // // Secure Boot is disabled diff --git a/EmulatorPkg/Library/RedfishPlatformHostInterfaceLib/RedfishPlatformHostInterfaceLib.c b/EmulatorPkg/Library/RedfishPlatformHostInterfaceLib/RedfishPlatformHostInterfaceLib.c index 4e7bb65c06..3f053307a6 100644 --- a/EmulatorPkg/Library/RedfishPlatformHostInterfaceLib/RedfishPlatformHostInterfaceLib.c +++ b/EmulatorPkg/Library/RedfishPlatformHostInterfaceLib/RedfishPlatformHostInterfaceLib.c @@ -26,7 +26,7 @@ #define VERBOSE_COLUME_SIZE (16) REDFISH_OVER_IP_PROTOCOL_DATA *mRedfishOverIpProtocolData; -UINT8 mRedfishProtocolDataSize; +UINT8 mRedfishProtocolDataSize; /** Get the MAC address of NIC. @@ -38,22 +38,23 @@ UINT8 mRedfishProtocolDataSize; **/ EFI_STATUS GetMacAddressInformation ( - OUT EFI_MAC_ADDRESS *MacAddress + OUT EFI_MAC_ADDRESS *MacAddress ) { - MAC_ADDR_DEVICE_PATH *Mac; - REST_EX_SERVICE_DEVICE_PATH_DATA *RestExServiceDevicePathData; - EFI_DEVICE_PATH_PROTOCOL *RestExServiceDevicePath; - MAC_ADDR_DEVICE_PATH *MacAddressDevicePath; - - Mac = NULL; - RestExServiceDevicePathData = NULL; - RestExServiceDevicePath = NULL; - - RestExServiceDevicePathData = (REST_EX_SERVICE_DEVICE_PATH_DATA *)PcdGetPtr(PcdRedfishRestExServiceDevicePath); - if (RestExServiceDevicePathData == NULL || - RestExServiceDevicePathData->DevicePathNum == 0 || - !IsDevicePathValid (RestExServiceDevicePathData->DevicePath, 0)) { + MAC_ADDR_DEVICE_PATH *Mac; + REST_EX_SERVICE_DEVICE_PATH_DATA *RestExServiceDevicePathData; + EFI_DEVICE_PATH_PROTOCOL *RestExServiceDevicePath; + MAC_ADDR_DEVICE_PATH *MacAddressDevicePath; + + Mac = NULL; + RestExServiceDevicePathData = NULL; + RestExServiceDevicePath = NULL; + + RestExServiceDevicePathData = (REST_EX_SERVICE_DEVICE_PATH_DATA *)PcdGetPtr (PcdRedfishRestExServiceDevicePath); + if ((RestExServiceDevicePathData == NULL) || + (RestExServiceDevicePathData->DevicePathNum == 0) || + !IsDevicePathValid (RestExServiceDevicePathData->DevicePath, 0)) + { return EFI_NOT_FOUND; } @@ -67,7 +68,8 @@ GetMacAddressInformation ( // while (!IsDevicePathEnd (RestExServiceDevicePath) && ((DevicePathType (RestExServiceDevicePath) != MESSAGING_DEVICE_PATH) || - (DevicePathSubType (RestExServiceDevicePath) != MSG_MAC_ADDR_DP))) { + (DevicePathSubType (RestExServiceDevicePath) != MSG_MAC_ADDR_DP))) + { RestExServiceDevicePath = NextDevicePathNode (RestExServiceDevicePath); } @@ -76,6 +78,7 @@ GetMacAddressInformation ( CopyMem ((VOID *)MacAddress, (VOID *)&MacAddressDevicePath->MacAddress, sizeof (EFI_MAC_ADDRESS)); return EFI_SUCCESS; } + return EFI_NOT_FOUND; } @@ -91,35 +94,38 @@ GetMacAddressInformation ( **/ EFI_STATUS RedfishPlatformHostInterfaceDeviceDescriptor ( - OUT UINT8 *DeviceType, + OUT UINT8 *DeviceType, OUT REDFISH_INTERFACE_DATA **DeviceDescriptor -) + ) { - EFI_STATUS Status; - EFI_MAC_ADDRESS MacAddress; - REDFISH_INTERFACE_DATA *RedfishInterfaceData; - PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 *ThisDeviceDescriptor; + EFI_STATUS Status; + EFI_MAC_ADDRESS MacAddress; + REDFISH_INTERFACE_DATA *RedfishInterfaceData; + PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 *ThisDeviceDescriptor; RedfishInterfaceData = AllocateZeroPool (sizeof (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2) + 1); if (RedfishInterfaceData == NULL) { return EFI_OUT_OF_RESOURCES; } + RedfishInterfaceData->DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2; // // Fill up device type information. // - ThisDeviceDescriptor = (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 *)((UINT8 *)RedfishInterfaceData + 1); + ThisDeviceDescriptor = (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 *)((UINT8 *)RedfishInterfaceData + 1); ThisDeviceDescriptor->Length = sizeof (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2) + 1; - Status = GetMacAddressInformation (&MacAddress); + Status = GetMacAddressInformation (&MacAddress); if (EFI_ERROR (Status)) { FreePool (RedfishInterfaceData); return EFI_NOT_FOUND; } + CopyMem ((VOID *)&ThisDeviceDescriptor->MacAddress, (VOID *)&MacAddress, sizeof (ThisDeviceDescriptor->MacAddress)); - *DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2; + *DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2; *DeviceDescriptor = RedfishInterfaceData; return EFI_SUCCESS; } + /** Get platform Redfish host interface protocol data. Caller should pass NULL in ProtocolRecord to retrive the first protocol record. @@ -136,29 +142,32 @@ RedfishPlatformHostInterfaceDeviceDescriptor ( **/ EFI_STATUS RedfishPlatformHostInterfaceProtocolData ( - OUT MC_HOST_INTERFACE_PROTOCOL_RECORD **ProtocolRecord, - IN UINT8 IndexOfProtocolData -) + OUT MC_HOST_INTERFACE_PROTOCOL_RECORD **ProtocolRecord, + IN UINT8 IndexOfProtocolData + ) { - MC_HOST_INTERFACE_PROTOCOL_RECORD *ThisProtocolRecord; + MC_HOST_INTERFACE_PROTOCOL_RECORD *ThisProtocolRecord; if (mRedfishOverIpProtocolData == 0) { return EFI_NOT_FOUND; } + if (IndexOfProtocolData == 0) { // // Return the first Redfish protocol data to caller. We only have // one protocol data in this case. // - ThisProtocolRecord = (MC_HOST_INTERFACE_PROTOCOL_RECORD *) AllocatePool (mRedfishProtocolDataSize + sizeof (MC_HOST_INTERFACE_PROTOCOL_RECORD) - 1); - ThisProtocolRecord->ProtocolType = MCHostInterfaceProtocolTypeRedfishOverIP; + ThisProtocolRecord = (MC_HOST_INTERFACE_PROTOCOL_RECORD *)AllocatePool (mRedfishProtocolDataSize + sizeof (MC_HOST_INTERFACE_PROTOCOL_RECORD) - 1); + ThisProtocolRecord->ProtocolType = MCHostInterfaceProtocolTypeRedfishOverIP; ThisProtocolRecord->ProtocolTypeDataLen = mRedfishProtocolDataSize; CopyMem ((VOID *)&ThisProtocolRecord->ProtocolTypeData, (VOID *)mRedfishOverIpProtocolData, mRedfishProtocolDataSize); *ProtocolRecord = ThisProtocolRecord; return EFI_SUCCESS; } + return EFI_NOT_FOUND; } + /** Dump IPv4 address. @@ -166,10 +175,10 @@ RedfishPlatformHostInterfaceProtocolData ( **/ VOID InternalDumpIp4Addr ( - IN EFI_IPv4_ADDRESS *Ip + IN EFI_IPv4_ADDRESS *Ip ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < 4; Index++) { DEBUG ((DEBUG_VERBOSE, "%d", Ip->Addr[Index])); @@ -180,6 +189,7 @@ InternalDumpIp4Addr ( DEBUG ((DEBUG_VERBOSE, "\n")); } + /** Dump IPv6 address. @@ -187,15 +197,16 @@ InternalDumpIp4Addr ( **/ VOID InternalDumpIp6Addr ( - IN EFI_IPv6_ADDRESS *Ip + IN EFI_IPv6_ADDRESS *Ip ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < 16; Index++) { if (Ip->Addr[Index] != 0) { DEBUG ((DEBUG_VERBOSE, "%x", Ip->Addr[Index])); } + Index++; if (Index > 15) { @@ -205,14 +216,17 @@ InternalDumpIp6Addr ( if (((Ip->Addr[Index] & 0xf0) == 0) && (Ip->Addr[Index - 1] != 0)) { DEBUG ((DEBUG_VERBOSE, "0")); } + DEBUG ((DEBUG_VERBOSE, "%x", Ip->Addr[Index])); if (Index < 15) { DEBUG ((DEBUG_VERBOSE, ":")); } } + DEBUG ((DEBUG_VERBOSE, "\n")); } + /** Dump data @@ -226,10 +240,12 @@ InternalDumpData ( ) { UINTN Index; + for (Index = 0; Index < Size; Index++) { DEBUG ((DEBUG_VERBOSE, "%02x ", (UINTN)Data[Index])); } } + /** Dump hex data @@ -242,9 +258,9 @@ InternalDumpHex ( IN UINTN Size ) { - UINTN Index; - UINTN Count; - UINTN Left; + UINTN Index; + UINTN Count; + UINTN Left; Count = Size / VERBOSE_COLUME_SIZE; Left = Size % VERBOSE_COLUME_SIZE; @@ -260,6 +276,7 @@ InternalDumpHex ( DEBUG ((DEBUG_VERBOSE, "\n")); } + /** Dump Redfish over IP protocol data @@ -268,14 +285,14 @@ InternalDumpHex ( **/ VOID DumpRedfishIpProtocolData ( - IN REDFISH_OVER_IP_PROTOCOL_DATA *RedfishProtocolData, - IN UINT8 RedfishProtocolDataSize + IN REDFISH_OVER_IP_PROTOCOL_DATA *RedfishProtocolData, + IN UINT8 RedfishProtocolDataSize ) { - CHAR16 Hostname[16]; + CHAR16 Hostname[16]; DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData: \n")); - InternalDumpHex ((UINT8 *) RedfishProtocolData, RedfishProtocolDataSize); + InternalDumpHex ((UINT8 *)RedfishProtocolData, RedfishProtocolDataSize); DEBUG ((DEBUG_VERBOSE, "Parsing as below: \n")); @@ -287,16 +304,16 @@ DumpRedfishIpProtocolData ( DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->HostIpAddress: \n")); if (RedfishProtocolData->HostIpAddressFormat == 0x01) { - InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *) (RedfishProtocolData->HostIpAddress)); + InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->HostIpAddress)); } else { - InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *) (RedfishProtocolData->HostIpAddress)); + InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->HostIpAddress)); } DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->HostIpMask: \n")); if (RedfishProtocolData->HostIpAddressFormat == 0x01) { - InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *) (RedfishProtocolData->HostIpMask)); + InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->HostIpMask)); } else { - InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *) (RedfishProtocolData->HostIpMask)); + InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->HostIpMask)); } DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpDiscoveryType - %d\n", RedfishProtocolData->RedfishServiceIpDiscoveryType)); @@ -305,16 +322,16 @@ DumpRedfishIpProtocolData ( DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpAddress: \n")); if (RedfishProtocolData->RedfishServiceIpAddressFormat == 0x01) { - InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *) (RedfishProtocolData->RedfishServiceIpAddress)); + InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->RedfishServiceIpAddress)); } else { - InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *) (RedfishProtocolData->RedfishServiceIpAddress)); + InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->RedfishServiceIpAddress)); } DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpMask: \n")); if (RedfishProtocolData->RedfishServiceIpAddressFormat == 0x01) { - InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *) (RedfishProtocolData->RedfishServiceIpMask)); + InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->RedfishServiceIpMask)); } else { - InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *) (RedfishProtocolData->RedfishServiceIpMask)); + InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->RedfishServiceIpMask)); } DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpPort - %d\n", RedfishProtocolData->RedfishServiceIpPort)); @@ -323,7 +340,7 @@ DumpRedfishIpProtocolData ( DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceHostnameLength - %d\n", RedfishProtocolData->RedfishServiceHostnameLength)); - AsciiStrToUnicodeStrS((CHAR8 *) RedfishProtocolData->RedfishServiceHostname, Hostname, sizeof (Hostname) / sizeof (Hostname[0])); + AsciiStrToUnicodeStrS ((CHAR8 *)RedfishProtocolData->RedfishServiceHostname, Hostname, sizeof (Hostname) / sizeof (Hostname[0])); DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceHostname - %s\n", Hostname)); } @@ -337,24 +354,24 @@ DumpRedfishIpProtocolData ( **/ EFI_STATUS GetRedfishRecordFromVariable ( - OUT REDFISH_OVER_IP_PROTOCOL_DATA **RedfishProtocolData, - OUT UINT8 *RedfishProtocolDataSize + OUT REDFISH_OVER_IP_PROTOCOL_DATA **RedfishProtocolData, + OUT UINT8 *RedfishProtocolDataSize ) { - EFI_STATUS Status; - UINT8 HostIpAssignmentType; - UINTN HostIpAssignmentTypeSize; - EFI_IPv4_ADDRESS HostIpAddress; - UINTN IPv4DataSize; - EFI_IPv4_ADDRESS HostIpMask; - EFI_IPv4_ADDRESS RedfishServiceIpAddress; - EFI_IPv4_ADDRESS RedfishServiceIpMask; - UINT16 RedfishServiceIpPort; - UINTN IpPortDataSize; - UINT8 HostNameSize; - CHAR8 RedfishHostName[20]; - - if (RedfishProtocolData == NULL || RedfishProtocolDataSize == NULL) { + EFI_STATUS Status; + UINT8 HostIpAssignmentType; + UINTN HostIpAssignmentTypeSize; + EFI_IPv4_ADDRESS HostIpAddress; + UINTN IPv4DataSize; + EFI_IPv4_ADDRESS HostIpMask; + EFI_IPv4_ADDRESS RedfishServiceIpAddress; + EFI_IPv4_ADDRESS RedfishServiceIpMask; + UINT16 RedfishServiceIpPort; + UINTN IpPortDataSize; + UINT8 HostNameSize; + CHAR8 RedfishHostName[20]; + + if ((RedfishProtocolData == NULL) || (RedfishProtocolDataSize == NULL)) { return EFI_INVALID_PARAMETER; } @@ -446,7 +463,7 @@ GetRedfishRecordFromVariable ( RedfishServiceIpAddress.Addr[3] ); - HostNameSize = (UINT8) AsciiStrLen (RedfishHostName) + 1; + HostNameSize = (UINT8)AsciiStrLen (RedfishHostName) + 1; // // 2. Protocol Data Size. @@ -456,7 +473,7 @@ GetRedfishRecordFromVariable ( // // 3. Protocol Data. // - *RedfishProtocolData = (REDFISH_OVER_IP_PROTOCOL_DATA *) AllocateZeroPool (*RedfishProtocolDataSize); + *RedfishProtocolData = (REDFISH_OVER_IP_PROTOCOL_DATA *)AllocateZeroPool (*RedfishProtocolDataSize); if (*RedfishProtocolData == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -464,7 +481,7 @@ GetRedfishRecordFromVariable ( CopyGuid (&(*RedfishProtocolData)->ServiceUuid, &gEmuRedfishServiceGuid); (*RedfishProtocolData)->HostIpAssignmentType = HostIpAssignmentType; - (*RedfishProtocolData)->HostIpAddressFormat = 1; // Only support IPv4 + (*RedfishProtocolData)->HostIpAddressFormat = 1; // Only support IPv4 if (HostIpAssignmentType == 1 ) { (*RedfishProtocolData)->HostIpAddress[0] = HostIpAddress.Addr[0]; @@ -495,7 +512,7 @@ GetRedfishRecordFromVariable ( (*RedfishProtocolData)->RedfishServiceVlanId = 0xffffffff; (*RedfishProtocolData)->RedfishServiceHostnameLength = HostNameSize; - AsciiStrCpyS ((CHAR8 *) ((*RedfishProtocolData)->RedfishServiceHostname), HostNameSize, RedfishHostName); + AsciiStrCpyS ((CHAR8 *)((*RedfishProtocolData)->RedfishServiceHostname), HostNameSize, RedfishHostName); return Status; } @@ -513,16 +530,17 @@ GetRedfishRecordFromVariable ( EFI_STATUS EFIAPI RedfishPlatformHostInterfaceConstructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable -) + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = GetRedfishRecordFromVariable (&mRedfishOverIpProtocolData, &mRedfishProtocolDataSize); DEBUG ((DEBUG_INFO, "%a: GetRedfishRecordFromVariable() - %r\n", __FUNCTION__, Status)); if (!EFI_ERROR (Status)) { DumpRedfishIpProtocolData (mRedfishOverIpProtocolData, mRedfishProtocolDataSize); } + return EFI_SUCCESS; } diff --git a/EmulatorPkg/Library/SecPeiServicesLib/FwVol.c b/EmulatorPkg/Library/SecPeiServicesLib/FwVol.c index aee3003a26..e1cc6c6a51 100644 --- a/EmulatorPkg/Library/SecPeiServicesLib/FwVol.c +++ b/EmulatorPkg/Library/SecPeiServicesLib/FwVol.c @@ -9,7 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include - #define GET_OCCUPIED_SIZE(ActualSize, Alignment) \ (ActualSize) + (((Alignment) - ((ActualSize) & ((Alignment) - 1))) & ((Alignment) - 1)) @@ -18,6 +17,7 @@ GetFileState ( IN UINT8 ErasePolarity, IN EFI_FFS_FILE_HEADER *FfsHeader ) + /*++ Routine Description: @@ -39,7 +39,7 @@ Returns: FileState = FfsHeader->State; if (ErasePolarity != 0) { - FileState = (EFI_FFS_FILE_STATE)~FileState; + FileState = (EFI_FFS_FILE_STATE) ~FileState; } HighestBit = 0x80; @@ -54,6 +54,7 @@ UINT8 CalculateHeaderChecksum ( IN EFI_FFS_FILE_HEADER *FileHeader ) + /*++ Routine Description: @@ -67,41 +68,43 @@ Returns: **/ { - UINT8 *ptr; - UINTN Index; - UINT8 Sum; + UINT8 *ptr; + UINTN Index; + UINT8 Sum; Sum = 0; - ptr = (UINT8 *) FileHeader; + ptr = (UINT8 *)FileHeader; for (Index = 0; Index < sizeof (EFI_FFS_FILE_HEADER) - 3; Index += 4) { - Sum = (UINT8) (Sum + ptr[Index]); - Sum = (UINT8) (Sum + ptr[Index + 1]); - Sum = (UINT8) (Sum + ptr[Index + 2]); - Sum = (UINT8) (Sum + ptr[Index + 3]); + Sum = (UINT8)(Sum + ptr[Index]); + Sum = (UINT8)(Sum + ptr[Index + 1]); + Sum = (UINT8)(Sum + ptr[Index + 2]); + Sum = (UINT8)(Sum + ptr[Index + 3]); } - for (; Index < sizeof (EFI_FFS_FILE_HEADER); Index++) { - Sum = (UINT8) (Sum + ptr[Index]); + for ( ; Index < sizeof (EFI_FFS_FILE_HEADER); Index++) { + Sum = (UINT8)(Sum + ptr[Index]); } + // // State field (since this indicates the different state of file). // - Sum = (UINT8) (Sum - FileHeader->State); + Sum = (UINT8)(Sum - FileHeader->State); // // Checksum field of the file is not part of the header checksum. // - Sum = (UINT8) (Sum - FileHeader->IntegrityCheck.Checksum.File); + Sum = (UINT8)(Sum - FileHeader->IntegrityCheck.Checksum.File); return Sum; } EFI_STATUS SecFfsFindNextFile ( - IN EFI_FV_FILETYPE SearchType, - IN EFI_PEI_FV_HANDLE FvHandle, - IN OUT EFI_PEI_FILE_HANDLE *FileHandle + IN EFI_FV_FILETYPE SearchType, + IN EFI_PEI_FV_HANDLE FvHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ) + /*++ Routine Description: @@ -124,20 +127,20 @@ Returns: **/ { - EFI_FFS_FILE_HEADER *FfsFileHeader; - UINT32 FileLength; - UINT32 FileOccupiedSize; - UINT32 FileOffset; - UINT64 FvLength; - UINT8 ErasePolarity; - UINT8 FileState; + EFI_FFS_FILE_HEADER *FfsFileHeader; + UINT32 FileLength; + UINT32 FileOccupiedSize; + UINT32 FileOffset; + UINT64 FvLength; + UINT8 ErasePolarity; + UINT8 FileState; EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader; EFI_FFS_FILE_HEADER **FileHeader; // // Convert the handle of FV to FV header for memory-mapped firmware volume // - FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) FvHandle; + FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)FvHandle; FileHeader = (EFI_FFS_FILE_HEADER **)FileHandle; FvLength = FwVolHeader->FvLength; @@ -146,23 +149,24 @@ Returns: } else { ErasePolarity = 0; } + // // If FileHeader is not specified (NULL) start with the first file in the // firmware volume. Otherwise, start from the FileHeader. // if (*FileHeader == NULL) { - FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FwVolHeader + FwVolHeader->HeaderLength); + FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FwVolHeader + FwVolHeader->HeaderLength); } else { // // Length is 24 bits wide so mask upper 8 bits // FileLength is adjusted to FileOccupiedSize as it is 8 byte aligned. // - FileLength = *(UINT32 *) (*FileHeader)->Size & 0x00FFFFFF; - FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); - FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) *FileHeader + FileOccupiedSize); + FileLength = *(UINT32 *)(*FileHeader)->Size & 0x00FFFFFF; + FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); + FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)*FileHeader + FileOccupiedSize); } - FileOffset = (UINT32) ((UINT8 *) FfsFileHeader - (UINT8 *) FwVolHeader); + FileOffset = (UINT32)((UINT8 *)FfsFileHeader - (UINT8 *)FwVolHeader); while (FileOffset < (FvLength - sizeof (EFI_FFS_FILE_HEADER))) { // @@ -171,42 +175,40 @@ Returns: FileState = GetFileState (ErasePolarity, FfsFileHeader); switch (FileState) { - - case EFI_FILE_HEADER_INVALID: - FileOffset += sizeof (EFI_FFS_FILE_HEADER); - FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER)); - break; - - case EFI_FILE_DATA_VALID: - case EFI_FILE_MARKED_FOR_UPDATE: - if (CalculateHeaderChecksum (FfsFileHeader) == 0) { - FileLength = *(UINT32 *) (FfsFileHeader->Size) & 0x00FFFFFF; - FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); - - if ((SearchType == FfsFileHeader->Type) || (SearchType == EFI_FV_FILETYPE_ALL)) { - - *FileHeader = FfsFileHeader; - - return EFI_SUCCESS; + case EFI_FILE_HEADER_INVALID: + FileOffset += sizeof (EFI_FFS_FILE_HEADER); + FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER)); + break; + + case EFI_FILE_DATA_VALID: + case EFI_FILE_MARKED_FOR_UPDATE: + if (CalculateHeaderChecksum (FfsFileHeader) == 0) { + FileLength = *(UINT32 *)(FfsFileHeader->Size) & 0x00FFFFFF; + FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); + + if ((SearchType == FfsFileHeader->Type) || (SearchType == EFI_FV_FILETYPE_ALL)) { + *FileHeader = FfsFileHeader; + + return EFI_SUCCESS; + } + + FileOffset += FileOccupiedSize; + FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FfsFileHeader + FileOccupiedSize); + } else { + return EFI_NOT_FOUND; } - FileOffset += FileOccupiedSize; - FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize); - } else { - return EFI_NOT_FOUND; - } - break; - - case EFI_FILE_DELETED: - FileLength = *(UINT32 *) (FfsFileHeader->Size) & 0x00FFFFFF; - FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); - FileOffset += FileOccupiedSize; - FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize); - break; + break; - default: - return EFI_NOT_FOUND; + case EFI_FILE_DELETED: + FileLength = *(UINT32 *)(FfsFileHeader->Size) & 0x00FFFFFF; + FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); + FileOffset += FileOccupiedSize; + FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FfsFileHeader + FileOccupiedSize); + break; + default: + return EFI_NOT_FOUND; } } @@ -215,10 +217,11 @@ Returns: EFI_STATUS SecFfsFindSectionData ( - IN EFI_SECTION_TYPE SectionType, - IN EFI_FFS_FILE_HEADER *FfsFileHeader, - IN OUT VOID **SectionData + IN EFI_SECTION_TYPE SectionType, + IN EFI_FFS_FILE_HEADER *FfsFileHeader, + IN OUT VOID **SectionData ) + /*++ Routine Description: @@ -237,39 +240,39 @@ Returns: **/ { - UINT32 FileSize; - EFI_COMMON_SECTION_HEADER *Section; - UINT32 SectionLength; - UINT32 ParsedLength; + UINT32 FileSize; + EFI_COMMON_SECTION_HEADER *Section; + UINT32 SectionLength; + UINT32 ParsedLength; // // Size is 24 bits wide so mask upper 8 bits. // Does not include FfsFileHeader header size // FileSize is adjusted to FileOccupiedSize as it is 8 byte aligned. // - Section = (EFI_COMMON_SECTION_HEADER *) (FfsFileHeader + 1); - FileSize = *(UINT32 *) (FfsFileHeader->Size) & 0x00FFFFFF; + Section = (EFI_COMMON_SECTION_HEADER *)(FfsFileHeader + 1); + FileSize = *(UINT32 *)(FfsFileHeader->Size) & 0x00FFFFFF; FileSize -= sizeof (EFI_FFS_FILE_HEADER); - *SectionData = NULL; - ParsedLength = 0; + *SectionData = NULL; + ParsedLength = 0; while (ParsedLength < FileSize) { if (Section->Type == SectionType) { - *SectionData = (VOID *) (Section + 1); + *SectionData = (VOID *)(Section + 1); return EFI_SUCCESS; } + // // Size is 24 bits wide so mask upper 8 bits. // SectionLength is adjusted it is 4 byte aligned. // Go to the next section // - SectionLength = *(UINT32 *) Section->Size & 0x00FFFFFF; + SectionLength = *(UINT32 *)Section->Size & 0x00FFFFFF; SectionLength = GET_OCCUPIED_SIZE (SectionLength, 4); ParsedLength += SectionLength; - Section = (EFI_COMMON_SECTION_HEADER *) ((UINT8 *) Section + SectionLength); + Section = (EFI_COMMON_SECTION_HEADER *)((UINT8 *)Section + SectionLength); } return EFI_NOT_FOUND; } - diff --git a/EmulatorPkg/Library/SecPeiServicesLib/PeiServicesLib.c b/EmulatorPkg/Library/SecPeiServicesLib/PeiServicesLib.c index c1d10d7f68..9409cbdb66 100644 --- a/EmulatorPkg/Library/SecPeiServicesLib/PeiServicesLib.c +++ b/EmulatorPkg/Library/SecPeiServicesLib/PeiServicesLib.c @@ -6,30 +6,26 @@ **/ - #include #include #include #include #include - - EFI_STATUS SecFfsFindNextFile ( - IN EFI_FV_FILETYPE SearchType, - IN EFI_PEI_FV_HANDLE VolumeHandle, - IN OUT EFI_PEI_FILE_HANDLE *FileHandle + IN EFI_FV_FILETYPE SearchType, + IN EFI_PEI_FV_HANDLE VolumeHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ); EFI_STATUS SecFfsFindSectionData ( - IN EFI_SECTION_TYPE SectionType, - IN EFI_PEI_FILE_HANDLE FileHandle, - OUT VOID **SectionData + IN EFI_SECTION_TYPE SectionType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData ); - /** This service enables a given PEIM to register an interface into the PEI Foundation. @@ -45,7 +41,7 @@ SecFfsFindSectionData ( EFI_STATUS EFIAPI PeiServicesInstallPpi ( - IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList ) { ASSERT (FALSE); @@ -70,8 +66,8 @@ PeiServicesInstallPpi ( EFI_STATUS EFIAPI PeiServicesReInstallPpi ( - IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, - IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi ) { ASSERT (FALSE); @@ -97,26 +93,28 @@ PeiServicesReInstallPpi ( EFI_STATUS EFIAPI PeiServicesLocatePpi ( - IN CONST EFI_GUID *Guid, - IN UINTN Instance, - IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, - IN OUT VOID **Ppi + IN CONST EFI_GUID *Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, + IN OUT VOID **Ppi ) { - EFI_PEI_PPI_DESCRIPTOR *PpiList; + EFI_PEI_PPI_DESCRIPTOR *PpiList; if (Instance != 0) { return EFI_NOT_FOUND; } - for (PpiList = EMU_MAGIC_PAGE()->PpiList; ; PpiList++) { + for (PpiList = EMU_MAGIC_PAGE ()->PpiList; ; PpiList++) { if (CompareGuid (PpiList->Guid, Guid)) { if (PpiDescriptor != NULL) { *PpiDescriptor = PpiList; } + if (Ppi != NULL) { *Ppi = PpiList->Ppi; } + return EFI_SUCCESS; } @@ -125,7 +123,6 @@ PeiServicesLocatePpi ( } } - return EFI_NOT_FOUND; } @@ -166,7 +163,7 @@ PeiServicesNotifyPpi ( EFI_STATUS EFIAPI PeiServicesGetBootMode ( - OUT EFI_BOOT_MODE *BootMode + OUT EFI_BOOT_MODE *BootMode ) { ASSERT (FALSE); @@ -184,7 +181,7 @@ PeiServicesGetBootMode ( EFI_STATUS EFIAPI PeiServicesSetBootMode ( - IN EFI_BOOT_MODE BootMode + IN EFI_BOOT_MODE BootMode ) { ASSERT (FALSE); @@ -204,7 +201,7 @@ PeiServicesSetBootMode ( EFI_STATUS EFIAPI PeiServicesGetHobList ( - OUT VOID **HobList + OUT VOID **HobList ) { ASSERT (FALSE); @@ -226,9 +223,9 @@ PeiServicesGetHobList ( EFI_STATUS EFIAPI PeiServicesCreateHob ( - IN UINT16 Type, - IN UINT16 Length, - OUT VOID **Hob + IN UINT16 Type, + IN UINT16 Length, + OUT VOID **Hob ) { ASSERT (FALSE); @@ -251,8 +248,8 @@ PeiServicesCreateHob ( EFI_STATUS EFIAPI PeiServicesFfsFindNextVolume ( - IN UINTN Instance, - IN OUT EFI_PEI_FV_HANDLE *VolumeHandle + IN UINTN Instance, + IN OUT EFI_PEI_FV_HANDLE *VolumeHandle ) { ASSERT (FALSE); @@ -276,9 +273,9 @@ PeiServicesFfsFindNextVolume ( EFI_STATUS EFIAPI PeiServicesFfsFindNextFile ( - IN EFI_FV_FILETYPE SearchType, - IN EFI_PEI_FV_HANDLE VolumeHandle, - IN OUT EFI_PEI_FILE_HANDLE *FileHandle + IN EFI_FV_FILETYPE SearchType, + IN EFI_PEI_FV_HANDLE VolumeHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ) { return SecFfsFindNextFile (SearchType, VolumeHandle, FileHandle); @@ -299,9 +296,9 @@ PeiServicesFfsFindNextFile ( EFI_STATUS EFIAPI PeiServicesFfsFindSectionData ( - IN EFI_SECTION_TYPE SectionType, - IN EFI_PEI_FILE_HANDLE FileHandle, - OUT VOID **SectionData + IN EFI_SECTION_TYPE SectionType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData ) { return SecFfsFindSectionData (SectionType, FileHandle, SectionData); @@ -322,8 +319,8 @@ PeiServicesFfsFindSectionData ( EFI_STATUS EFIAPI PeiServicesInstallPeiMemory ( - IN EFI_PHYSICAL_ADDRESS MemoryBegin, - IN UINT64 MemoryLength + IN EFI_PHYSICAL_ADDRESS MemoryBegin, + IN UINT64 MemoryLength ) { ASSERT (FALSE); @@ -347,9 +344,9 @@ PeiServicesInstallPeiMemory ( EFI_STATUS EFIAPI PeiServicesAllocatePages ( - IN EFI_MEMORY_TYPE MemoryType, - IN UINTN Pages, - OUT EFI_PHYSICAL_ADDRESS *Memory + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + OUT EFI_PHYSICAL_ADDRESS *Memory ) { ASSERT (FALSE); @@ -370,8 +367,8 @@ PeiServicesAllocatePages ( EFI_STATUS EFIAPI PeiServicesAllocatePool ( - IN UINTN Size, - OUT VOID **Buffer + IN UINTN Size, + OUT VOID **Buffer ) { ASSERT (FALSE); @@ -415,7 +412,7 @@ PeiServicesResetSystem ( EFI_STATUS EFIAPI PeiServicesRegisterForShadow ( - IN EFI_PEI_FILE_HANDLE FileHandle + IN EFI_PEI_FILE_HANDLE FileHandle ) { ASSERT (FALSE); @@ -443,15 +440,14 @@ PeiServicesRegisterForShadow ( EFI_STATUS EFIAPI PeiServicesFfsGetFileInfo ( - IN CONST EFI_PEI_FILE_HANDLE FileHandle, - OUT EFI_FV_FILE_INFO *FileInfo + IN CONST EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO *FileInfo ) { ASSERT (FALSE); return EFI_OUT_OF_RESOURCES; } - /** This service is a wrapper for the PEI Service FfsFindByName(), except the pointer to the PEI Services Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface @@ -476,16 +472,15 @@ PeiServicesFfsGetFileInfo ( EFI_STATUS EFIAPI PeiServicesFfsFindFileByName ( - IN CONST EFI_GUID *FileName, - IN CONST EFI_PEI_FV_HANDLE VolumeHandle, - OUT EFI_PEI_FILE_HANDLE *FileHandle + IN CONST EFI_GUID *FileName, + IN CONST EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_PEI_FILE_HANDLE *FileHandle ) { ASSERT (FALSE); return EFI_OUT_OF_RESOURCES; } - /** This service is a wrapper for the PEI Service FfsGetVolumeInfo(), except the pointer to the PEI Services Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface @@ -507,8 +502,8 @@ PeiServicesFfsFindFileByName ( EFI_STATUS EFIAPI PeiServicesFfsGetVolumeInfo ( - IN EFI_PEI_FV_HANDLE VolumeHandle, - OUT EFI_FV_INFO *VolumeInfo + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_FV_INFO *VolumeInfo ) { ASSERT (FALSE); @@ -548,11 +543,11 @@ PeiServicesFfsGetVolumeInfo ( VOID EFIAPI PeiServicesInstallFvInfoPpi ( - IN CONST EFI_GUID *FvFormat OPTIONAL, - IN CONST VOID *FvInfo, - IN UINT32 FvInfoSize, - IN CONST EFI_GUID *ParentFvName OPTIONAL, - IN CONST EFI_GUID *ParentFileName OPTIONAL + IN CONST EFI_GUID *FvFormat OPTIONAL, + IN CONST VOID *FvInfo, + IN UINT32 FvInfoSize, + IN CONST EFI_GUID *ParentFvName OPTIONAL, + IN CONST EFI_GUID *ParentFileName OPTIONAL ) { ASSERT (FALSE); diff --git a/EmulatorPkg/Library/SecPpiListLib/PpiListLib.c b/EmulatorPkg/Library/SecPpiListLib/PpiListLib.c index 0ead1a6296..452b1ea37b 100644 --- a/EmulatorPkg/Library/SecPpiListLib/PpiListLib.c +++ b/EmulatorPkg/Library/SecPpiListLib/PpiListLib.c @@ -8,4 +8,3 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include CONST EFI_PEI_PPI_DESCRIPTOR *gPpiList = NULL; - diff --git a/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c b/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c index 3acbb23644..c76d115d38 100644 --- a/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c +++ b/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c @@ -18,9 +18,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - -EFI_SMBIOS_PROTOCOL *gSmbios = NULL; - +EFI_SMBIOS_PROTOCOL *gSmbios = NULL; /** Create an initial SMBIOS Table from an array of SMBIOS_TEMPLATE_ENTRY @@ -34,11 +32,11 @@ EFI_SMBIOS_PROTOCOL *gSmbios = NULL; EFI_STATUS EFIAPI SmbiosLibInitializeFromTemplate ( - IN SMBIOS_TEMPLATE_ENTRY *Template + IN SMBIOS_TEMPLATE_ENTRY *Template ) { - EFI_STATUS Status; - UINTN Index; + EFI_STATUS Status; + UINTN Index; if (Template == NULL) { return EFI_INVALID_PARAMETER; @@ -53,8 +51,6 @@ SmbiosLibInitializeFromTemplate ( return Status; } - - /** Create SMBIOS record. @@ -85,17 +81,17 @@ SmbiosLibInitializeFromTemplate ( EFI_STATUS EFIAPI SmbiosLibCreateEntry ( - IN SMBIOS_STRUCTURE *SmbiosEntry, - IN CHAR8 **StringArray + IN SMBIOS_STRUCTURE *SmbiosEntry, + IN CHAR8 **StringArray ) { - EFI_STATUS Status; - EFI_SMBIOS_HANDLE SmbiosHandle; - EFI_SMBIOS_TABLE_HEADER *Record; - UINTN Index; - UINTN StringSize; - UINTN Size; - CHAR8 *Str; + EFI_STATUS Status; + EFI_SMBIOS_HANDLE SmbiosHandle; + EFI_SMBIOS_TABLE_HEADER *Record; + UINTN Index; + UINTN StringSize; + UINTN Size; + CHAR8 *Str; // Calculate the size of the fixed record and optional string pack Size = SmbiosEntry->Length; @@ -106,8 +102,9 @@ SmbiosLibCreateEntry ( } else { for (Index = 0; StringArray[Index] != NULL; Index++) { StringSize = AsciiStrSize (StringArray[Index]); - Size += StringSize; + Size += StringSize; } + // Don't forget the terminating double null Size += 1; } @@ -117,6 +114,7 @@ SmbiosLibCreateEntry ( if (Record == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (Record, SmbiosEntry, SmbiosEntry->Length); if (StringArray != NULL) { @@ -127,23 +125,22 @@ SmbiosLibCreateEntry ( CopyMem (Str, StringArray[Index], StringSize); Str += StringSize; } + *Str = 0; } SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED; - Status = gSmbios->Add ( - gSmbios, - gImageHandle, - &SmbiosHandle, - Record - ); + Status = gSmbios->Add ( + gSmbios, + gImageHandle, + &SmbiosHandle, + Record + ); FreePool (Record); return Status; } - - /** Update the string associated with an existing SMBIOS record. @@ -162,12 +159,12 @@ SmbiosLibCreateEntry ( EFI_STATUS EFIAPI SmbiosLibUpdateString ( - IN EFI_SMBIOS_HANDLE SmbiosHandle, - IN SMBIOS_TABLE_STRING StringNumber, - IN CHAR8 *String + IN EFI_SMBIOS_HANDLE SmbiosHandle, + IN SMBIOS_TABLE_STRING StringNumber, + IN CHAR8 *String ) { - UINTN StringIndex; + UINTN StringIndex; if (String == NULL) { return EFI_INVALID_PARAMETER; @@ -182,7 +179,6 @@ SmbiosLibUpdateString ( return gSmbios->UpdateString (gSmbios, &SmbiosHandle, &StringIndex, String); } - /** Update the string associated with an existing SMBIOS record. @@ -201,9 +197,9 @@ SmbiosLibUpdateString ( EFI_STATUS EFIAPI SmbiosLibUpdateUnicodeString ( - IN EFI_SMBIOS_HANDLE SmbiosHandle, - IN SMBIOS_TABLE_STRING StringNumber, - IN CHAR16 *String + IN EFI_SMBIOS_HANDLE SmbiosHandle, + IN SMBIOS_TABLE_STRING StringNumber, + IN CHAR16 *String ) { EFI_STATUS Status; @@ -223,16 +219,16 @@ SmbiosLibUpdateUnicodeString ( if (Ascii == NULL) { return EFI_OUT_OF_RESOURCES; } + UnicodeStrToAsciiStrS (String, Ascii, StrSize (String)); StringIndex = StringNumber; - Status = gSmbios->UpdateString (gSmbios, &SmbiosHandle, &StringIndex, Ascii); + Status = gSmbios->UpdateString (gSmbios, &SmbiosHandle, &StringIndex, Ascii); FreePool (Ascii); return Status; } - /** Allow caller to read a specific SMBIOS string @@ -249,14 +245,15 @@ SmbiosLibReadString ( IN EFI_SMBIOS_STRING StringNumber ) { - CHAR8 *Data; - UINTN Match; + CHAR8 *Data; + UINTN Match; Data = (CHAR8 *)Header + Header->Length; - for (Match = 1;!(*Data == 0 && *(Data+1) == 0); ) { + for (Match = 1; !(*Data == 0 && *(Data+1) == 0); ) { if (StringNumber == Match) { return Data; } + Data++; if (*(Data - 1) == '\0') { Match++; @@ -266,7 +263,6 @@ SmbiosLibReadString ( return NULL; } - /** Allow the caller to discover a specific SMBIOS entry, and patch it if necissary. @@ -280,14 +276,14 @@ SmbiosLibReadString ( SMBIOS_STRUCTURE * EFIAPI SmbiosLibGetRecord ( - IN EFI_SMBIOS_TYPE Type, - IN UINTN Instance, - OUT EFI_SMBIOS_HANDLE *SmbiosHandle + IN EFI_SMBIOS_TYPE Type, + IN UINTN Instance, + OUT EFI_SMBIOS_HANDLE *SmbiosHandle ) { - EFI_STATUS Status; - EFI_SMBIOS_TABLE_HEADER *Record; - UINTN Match; + EFI_STATUS Status; + EFI_SMBIOS_TABLE_HEADER *Record; + UINTN Match; Match = 0; *SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED; @@ -297,6 +293,7 @@ SmbiosLibGetRecord ( if (Match == Instance) { return (SMBIOS_STRUCTURE *)Record; } + Match++; } } while (!EFI_ERROR (Status)); @@ -304,7 +301,6 @@ SmbiosLibGetRecord ( return NULL; } - /** Remove an SMBIOS record. @@ -318,14 +314,12 @@ SmbiosLibGetRecord ( EFI_STATUS EFIAPI SmbiosLibRemove ( - OUT EFI_SMBIOS_HANDLE SmbiosHandle + OUT EFI_SMBIOS_HANDLE SmbiosHandle ) { return gSmbios->Remove (gSmbios, SmbiosHandle); } - - /** @param ImageHandle ImageHandle of the loaded driver. @@ -343,4 +337,3 @@ SmbiosLibConstructor ( { return gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, (VOID **)&gSmbios); } - diff --git a/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c b/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c index 59ed6cca2e..ab34ec7ed9 100644 --- a/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c +++ b/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c @@ -12,30 +12,26 @@ #include #include - UINTN gThunkPpiListSize = 0; -EFI_PEI_PPI_DESCRIPTOR *gThunkPpiList = NULL; - - +EFI_PEI_PPI_DESCRIPTOR *gThunkPpiList = NULL; EFI_PEI_PPI_DESCRIPTOR * GetThunkPpiList ( VOID ) { - UINTN Index; + UINTN Index; if (gThunkPpiList == NULL) { return NULL; } - Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR)) - 1; + Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR)) - 1; gThunkPpiList[Index].Flags |= EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST; return gThunkPpiList; } - EFI_STATUS EFIAPI AddThunkPpi ( @@ -44,7 +40,7 @@ AddThunkPpi ( IN VOID *Ppi ) { - UINTN Index; + UINTN Index; gThunkPpiList = ReallocatePool ( gThunkPpiListSize, @@ -55,16 +51,11 @@ AddThunkPpi ( return EFI_OUT_OF_RESOURCES; } - Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR)); + Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR)); gThunkPpiList[Index].Flags = Flags; gThunkPpiList[Index].Guid = Guid; gThunkPpiList[Index].Ppi = Ppi; - gThunkPpiListSize += sizeof (EFI_PEI_PPI_DESCRIPTOR); + gThunkPpiListSize += sizeof (EFI_PEI_PPI_DESCRIPTOR); return EFI_SUCCESS; } - - - - - diff --git a/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList.c b/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList.c index 3a7b6d1ceb..09b22a5247 100644 --- a/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList.c +++ b/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList.c @@ -16,25 +16,23 @@ #include - -#define EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE SIGNATURE_32('E','m','u','T') +#define EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE SIGNATURE_32('E','m','u','T') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL Data; - BOOLEAN EmuBusDriver; - LIST_ENTRY Link; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL Data; + BOOLEAN EmuBusDriver; + LIST_ENTRY Link; } EMU_IO_THUNK_PROTOCOL_DATA; LIST_ENTRY mThunkList = INITIALIZE_LIST_HEAD_VARIABLE (mThunkList); - EFI_STATUS EFIAPI AddThunkProtocol ( - IN EMU_IO_THUNK_PROTOCOL *ThunkIo, - IN CHAR16 *ConfigString, - IN BOOLEAN EmuBusDriver + IN EMU_IO_THUNK_PROTOCOL *ThunkIo, + IN CHAR16 *ConfigString, + IN BOOLEAN EmuBusDriver ) { UINTN Size; @@ -47,15 +45,15 @@ AddThunkProtocol ( return EFI_INVALID_PARAMETER; } - Instance = 0; - Size = StrSize (ConfigString); + Instance = 0; + Size = StrSize (ConfigString); StartString = AllocatePool (Size); if (StartString == NULL) { return EFI_OUT_OF_RESOURCES; } + StrCpyS (StartString, Size / sizeof (CHAR16), ConfigString); while (*StartString != '\0') { - // // Find the end of the sub string // @@ -77,12 +75,13 @@ AddThunkProtocol ( if (Private == NULL) { return EFI_OUT_OF_RESOURCES; } - Private->Signature = EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE; - Private->EmuBusDriver = EmuBusDriver; + + Private->Signature = EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE; + Private->EmuBusDriver = EmuBusDriver; CopyMem (&Private->Data, ThunkIo, sizeof (EMU_IO_THUNK_PROTOCOL)); - Private->Data.Instance = (UINT16)Instance++; - Private->Data.ConfigString = StartString; + Private->Data.Instance = (UINT16)Instance++; + Private->Data.ConfigString = StartString; InsertTailList (&mThunkList, &Private->Link); @@ -95,16 +94,15 @@ AddThunkProtocol ( return EFI_SUCCESS; } - EFI_STATUS EFIAPI GetNextThunkProtocol ( - IN BOOLEAN EmuBusDriver, - OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL + IN BOOLEAN EmuBusDriver, + OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL ) { - LIST_ENTRY *Link; - EMU_IO_THUNK_PROTOCOL_DATA *Private; + LIST_ENTRY *Link; + EMU_IO_THUNK_PROTOCOL_DATA *Private; if (mThunkList.ForwardLink == &mThunkList) { // Skip parsing an empty list @@ -125,13 +123,12 @@ GetNextThunkProtocol ( if (Link == &mThunkList) { return EFI_NOT_FOUND; } - Private = CR (Link, EMU_IO_THUNK_PROTOCOL_DATA, Link, EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE); + + Private = CR (Link, EMU_IO_THUNK_PROTOCOL_DATA, Link, EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE); *Instance = &Private->Data; return EFI_SUCCESS; } } - return EFI_NOT_FOUND; } - diff --git a/EmulatorPkg/PlatformSmbiosDxe/PlatformSmbiosDxe.c b/EmulatorPkg/PlatformSmbiosDxe/PlatformSmbiosDxe.c index 48a3bfb5e9..7100abeb91 100644 --- a/EmulatorPkg/PlatformSmbiosDxe/PlatformSmbiosDxe.c +++ b/EmulatorPkg/PlatformSmbiosDxe/PlatformSmbiosDxe.c @@ -17,11 +17,9 @@ #include #include -extern SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[]; +extern SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[]; - - -SMBIOS_TABLE_TYPE19 gSmbiosType19Template = { +SMBIOS_TABLE_TYPE19 gSmbiosType19Template = { { EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS, sizeof (SMBIOS_TABLE_TYPE19), 0 }, 0xffffffff, // StartingAddress; 0xffffffff, // EndingAddress; @@ -36,11 +34,11 @@ CreatePlatformSmbiosMemoryRecords ( VOID ) { - EFI_PEI_HOB_POINTERS HobPtr; - SMBIOS_STRUCTURE_POINTER Smbios16; - SMBIOS_STRUCTURE_POINTER Smbios17; - EFI_SMBIOS_HANDLE PhyscialMemoryArrayHandle; - EFI_SMBIOS_HANDLE SmbiosHandle; + EFI_PEI_HOB_POINTERS HobPtr; + SMBIOS_STRUCTURE_POINTER Smbios16; + SMBIOS_STRUCTURE_POINTER Smbios17; + EFI_SMBIOS_HANDLE PhyscialMemoryArrayHandle; + EFI_SMBIOS_HANDLE SmbiosHandle; Smbios16.Hdr = SmbiosLibGetRecord (EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, 0, &PhyscialMemoryArrayHandle); if (Smbios16.Hdr == NULL) { @@ -56,21 +54,21 @@ CreatePlatformSmbiosMemoryRecords ( // Generate Type16 records gSmbiosType19Template.MemoryArrayHandle = PhyscialMemoryArrayHandle; - HobPtr.Raw = GetHobList (); + HobPtr.Raw = GetHobList (); while ((HobPtr.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, HobPtr.Raw)) != NULL) { if (HobPtr.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) { gSmbiosType19Template.ExtendedStartingAddress = HobPtr.ResourceDescriptor->PhysicalStart; - gSmbiosType19Template.ExtendedEndingAddress = + gSmbiosType19Template.ExtendedEndingAddress = HobPtr.ResourceDescriptor->PhysicalStart + HobPtr.ResourceDescriptor->ResourceLength - 1; SmbiosLibCreateEntry ((SMBIOS_STRUCTURE *)&gSmbiosType19Template, NULL); } + HobPtr.Raw = GET_NEXT_HOB (HobPtr); } } - /** Main entry for this driver. @@ -83,13 +81,13 @@ CreatePlatformSmbiosMemoryRecords ( EFI_STATUS EFIAPI PlatformSmbiosDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; - EFI_SMBIOS_HANDLE SmbiosHandle; - SMBIOS_STRUCTURE_POINTER Smbios; + EFI_STATUS Status; + EFI_SMBIOS_HANDLE SmbiosHandle; + SMBIOS_STRUCTURE_POINTER Smbios; // Phase 0 - Patch table to make SMBIOS 2.7 structures smaller to conform // to an early version of the specification. @@ -108,12 +106,12 @@ PlatformSmbiosDriverEntryPoint ( SmbiosLibUpdateUnicodeString ( SmbiosHandle, Smbios.Type0->BiosVersion, - (CHAR16 *) PcdGetPtr (PcdFirmwareVersionString) + (CHAR16 *)PcdGetPtr (PcdFirmwareVersionString) ); SmbiosLibUpdateUnicodeString ( SmbiosHandle, Smbios.Type0->BiosReleaseDate, - (CHAR16 *) PcdGetPtr (PcdFirmwareReleaseDateString) + (CHAR16 *)PcdGetPtr (PcdFirmwareReleaseDateString) ); } diff --git a/EmulatorPkg/PlatformSmbiosDxe/SmbiosTable.c b/EmulatorPkg/PlatformSmbiosDxe/SmbiosTable.c index 11c8e94504..0d88b59322 100644 --- a/EmulatorPkg/PlatformSmbiosDxe/SmbiosTable.c +++ b/EmulatorPkg/PlatformSmbiosDxe/SmbiosTable.c @@ -23,15 +23,14 @@ #include #include - -SMBIOS_TABLE_TYPE0 gSmbiosType0Template = { +SMBIOS_TABLE_TYPE0 gSmbiosType0Template = { { EFI_SMBIOS_TYPE_BIOS_INFORMATION, sizeof (SMBIOS_TABLE_TYPE0), 0 }, 1, // Vendor String 2, // BiosVersion String 0xE000, // BiosSegment 3, // BiosReleaseDate String 0x7F, // BiosSize - { // BiosCharacteristics + { // BiosCharacteristics 0, // Reserved :2; ///< Bits 0-1. 0, // Unknown :1; 0, // BiosCharacteristicsNotSupported :1; @@ -64,7 +63,7 @@ SMBIOS_TABLE_TYPE0 gSmbiosType0Template = { 0, // CgaMonoIsSupported :1; 0, // NecPc98 :1; 0 // ReservedForVendor :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor - ///< and bits 48-63 reserved for System Vendor. + ///< and bits 48-63 reserved for System Vendor. }, { // BIOSCharacteristicsExtensionBytes[] 0x81, // AcpiIsSupported :1; @@ -75,7 +74,7 @@ SMBIOS_TABLE_TYPE0 gSmbiosType0Template = { // AtapiZipDriveBootIsSupported :1; // Boot1394IsSupported :1; // SmartBatteryIsSupported :1; - // BIOSCharacteristicsExtensionBytes[1] + // BIOSCharacteristicsExtensionBytes[1] 0x0a, // BiosBootSpecIsSupported :1; // FunctionKeyNetworkBootIsSupported :1; // TargetContentDistributionEnabled :1; @@ -88,25 +87,26 @@ SMBIOS_TABLE_TYPE0 gSmbiosType0Template = { 0xFF, // EmbeddedControllerFirmwareMajorRelease 0xFF, // EmbeddedControllerFirmwareMinorRelease }; -CHAR8 *gSmbiosType0Strings[] = { - "http://www.tianocore.org/edk2/", // Vendor String - __TIME__, // BiosVersion String - __DATE__, // BiosReleaseDate String +CHAR8 *gSmbiosType0Strings[] = { + "http://www.tianocore.org/edk2/", // Vendor String + __TIME__, // BiosVersion String + __DATE__, // BiosReleaseDate String NULL }; -SMBIOS_TABLE_TYPE1 gSmbiosType1Template = { - { EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, sizeof (SMBIOS_TABLE_TYPE1), 0 }, +SMBIOS_TABLE_TYPE1 gSmbiosType1Template = { + { EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, sizeof (SMBIOS_TABLE_TYPE1), 0 }, 1, // Manufacturer String 2, // ProductName String 3, // Version String 4, // SerialNumber String - { 0x25EF0280, 0xEC82, 0x42B0, { 0x8F, 0xB6, 0x10, 0xAD, 0xCC, 0xC6, 0x7C, 0x02 } }, + { 0x25EF0280, 0xEC82, 0x42B0, { 0x8F, 0xB6, 0x10, 0xAD, 0xCC, 0xC6, 0x7C, 0x02} + }, SystemWakeupTypePowerSwitch, 5, // SKUNumber String 6, // Family String }; -CHAR8 *gSmbiosType1Strings[] = { +CHAR8 *gSmbiosType1Strings[] = { "http://www.tianocore.org/edk2/", "EmulatorPkg", "1.0", @@ -124,20 +124,20 @@ SMBIOS_TABLE_TYPE2 gSmbiosType2Template = { 4, // SerialNumber String 5, // AssetTag String { // FeatureFlag - 1, // Motherboard :1; - 0, // RequiresDaughterCard :1; - 0, // Removable :1; - 0, // Replaceable :1; - 0, // HotSwappable :1; - 0, // Reserved :3; + 1, // Motherboard :1; + 0, // RequiresDaughterCard :1; + 0, // Removable :1; + 0, // Replaceable :1; + 0, // HotSwappable :1; + 0, // Reserved :3; }, - 6, // LocationInChassis String + 6, // LocationInChassis String 0, // ChassisHandle; BaseBoardTypeMotherBoard, // BoardType; 0, // NumberOfContainedObjectHandles; { 0 } // ContainedObjectHandles[1]; }; -CHAR8 *gSmbiosType2Strings[] = { +CHAR8 *gSmbiosType2Strings[] = { "http://www.tianocore.org/edk2/", "EmulatorPkg", "1.0", @@ -149,23 +149,25 @@ CHAR8 *gSmbiosType2Strings[] = { SMBIOS_TABLE_TYPE3 gSmbiosType3Template = { { EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, sizeof (SMBIOS_TABLE_TYPE3), 0 }, - 1, // Manufacturer String - MiscChassisTypeLapTop, // Type; - 2, // Version String - 3, // SerialNumber String - 4, // AssetTag String - ChassisStateSafe, // BootupState; - ChassisStateSafe, // PowerSupplyState; - ChassisStateSafe, // ThermalState; - ChassisSecurityStatusNone,// SecurityStatus; - { 0, 0, 0, 0 }, // OemDefined[4]; - 0, // Height; - 0, // NumberofPowerCords; - 0, // ContainedElementCount; - 0, // ContainedElementRecordLength; - { { 0 } }, // ContainedElements[1]; -}; -CHAR8 *gSmbiosType3Strings[] = { + 1, // Manufacturer String + MiscChassisTypeLapTop, // Type; + 2, // Version String + 3, // SerialNumber String + 4, // AssetTag String + ChassisStateSafe, // BootupState; + ChassisStateSafe, // PowerSupplyState; + ChassisStateSafe, // ThermalState; + ChassisSecurityStatusNone, // SecurityStatus; + { 0, 0, 0, 0}, // OemDefined[4]; + 0, // Height; + 0, // NumberofPowerCords; + 0, // ContainedElementCount; + 0, // ContainedElementRecordLength; + { + { 0 } + }, // ContainedElements[1]; +}; +CHAR8 *gSmbiosType3Strings[] = { "http://www.tianocore.org/edk2/", "EmulatorPkg", "Chassis Board Serial#", @@ -181,7 +183,7 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template1 = { PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeOther, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings1[] = { +CHAR8 *gSmbiosType8Strings1[] = { "Mini DisplayPort", NULL }; @@ -194,12 +196,11 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template2 = { PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeFireWire, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings2[] = { +CHAR8 *gSmbiosType8Strings2[] = { "FireWire 800", NULL }; - SMBIOS_TABLE_TYPE8 gSmbiosType8Template3 = { { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, 0, // InternalReferenceDesignator String @@ -208,7 +209,7 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template3 = { PortConnectorTypeRJ45, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeNetworkPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings3[] = { +CHAR8 *gSmbiosType8Strings3[] = { "Ethernet", NULL }; @@ -221,7 +222,7 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template4 = { PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings4[] = { +CHAR8 *gSmbiosType8Strings4[] = { "USB0", NULL }; @@ -234,7 +235,7 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template5 = { PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings5[] = { +CHAR8 *gSmbiosType8Strings5[] = { "USB1", NULL }; @@ -247,7 +248,7 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template6 = { PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings6[] = { +CHAR8 *gSmbiosType8Strings6[] = { "USB2", NULL }; @@ -260,54 +261,54 @@ SMBIOS_TABLE_TYPE8 gSmbiosType8Template7 = { PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings7[] = { +CHAR8 *gSmbiosType8Strings7[] = { "USB3", NULL }; SMBIOS_TABLE_TYPE8 gSmbiosType8Template8 = { { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, - 0, // InternalReferenceDesignator String - PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. - 1, // ExternalReferenceDesignator String + 0, // InternalReferenceDesignator String + PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. + 1, // ExternalReferenceDesignator String PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings8[] = { +CHAR8 *gSmbiosType8Strings8[] = { "Audio Line In", NULL }; SMBIOS_TABLE_TYPE8 gSmbiosType8Template9 = { { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, - 0, // InternalReferenceDesignator String - PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. - 1, // ExternalReferenceDesignator String + 0, // InternalReferenceDesignator String + PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. + 1, // ExternalReferenceDesignator String PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE. }; -CHAR8 *gSmbiosType8Strings9[] = { +CHAR8 *gSmbiosType8Strings9[] = { "Audio Line Out", NULL }; SMBIOS_TABLE_TYPE9 gSmbiosType9Template = { { EFI_SMBIOS_TYPE_SYSTEM_SLOTS, sizeof (SMBIOS_TABLE_TYPE9), 0 }, - 1, // SlotDesignation String - SlotTypeOther, // SlotType; ///< The enumeration value from MISC_SLOT_TYPE. - SlotDataBusWidthOther, // SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH. + 1, // SlotDesignation String + SlotTypeOther, // SlotType; ///< The enumeration value from MISC_SLOT_TYPE. + SlotDataBusWidthOther, // SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH. SlotUsageAvailable, // CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE. - SlotLengthOther, // SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH. - 0, // SlotID; + SlotLengthOther, // SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH. + 0, // SlotID; { // SlotCharacteristics1; - 1, // CharacteristicsUnknown :1; - 0, // Provides50Volts :1; - 0, // Provides33Volts :1; - 0, // SharedSlot :1; - 0, // PcCard16Supported :1; - 0, // CardBusSupported :1; - 0, // ZoomVideoSupported :1; - 0, // ModemRingResumeSupported:1; + 1, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0, // ModemRingResumeSupported:1; }, { // SlotCharacteristics2; 0, // PmeSignalSupported :1; @@ -319,31 +320,30 @@ SMBIOS_TABLE_TYPE9 gSmbiosType9Template = { 0, // BusNum; 0, // DevFuncNum; }; -CHAR8 *gSmbiosType9Strings[] = { +CHAR8 *gSmbiosType9Strings[] = { "SD Card", NULL }; -SMBIOS_TABLE_TYPE11 gSmbiosType11Template = { +SMBIOS_TABLE_TYPE11 gSmbiosType11Template = { { EFI_SMBIOS_TYPE_OEM_STRINGS, sizeof (SMBIOS_TABLE_TYPE11), 0 }, 1 // StringCount }; -CHAR8 *gSmbiosType11Strings[] = { +CHAR8 *gSmbiosType11Strings[] = { "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/", NULL }; - -SMBIOS_TABLE_TYPE12 gSmbiosType12Template = { +SMBIOS_TABLE_TYPE12 gSmbiosType12Template = { { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 }, 1 // StringCount }; -CHAR8 *gSmbiosType12Strings[] = { +CHAR8 *gSmbiosType12Strings[] = { "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/EmulatorPkg.dsc", NULL }; -SMBIOS_TABLE_TYPE16 gSmbiosType16Template = { +SMBIOS_TABLE_TYPE16 gSmbiosType16Template = { { EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, sizeof (SMBIOS_TABLE_TYPE16), 0 }, MemoryArrayLocationSystemBoard, // Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION. MemoryArrayUseSystemMemory, // Use; ///< The enumeration value from MEMORY_ARRAY_USE. @@ -354,19 +354,19 @@ SMBIOS_TABLE_TYPE16 gSmbiosType16Template = { 0x3fffffffffffffffULL, // ExtendedMaximumCapacity; }; -SMBIOS_TABLE_TYPE17 gSmbiosType17Template = { +SMBIOS_TABLE_TYPE17 gSmbiosType17Template = { { EFI_SMBIOS_TYPE_MEMORY_DEVICE, sizeof (SMBIOS_TABLE_TYPE17), 0 }, - 0, // MemoryArrayHandle; - 0xFFFE, // MemoryErrorInformationHandle; - 0xFFFF, // TotalWidth; - 0xFFFF, // DataWidth; - 0xFFFF, // Size; + 0, // MemoryArrayHandle; + 0xFFFE, // MemoryErrorInformationHandle; + 0xFFFF, // TotalWidth; + 0xFFFF, // DataWidth; + 0xFFFF, // Size; MemoryFormFactorUnknown, // FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR. - 0xff, // DeviceSet; - 1, // DeviceLocator String - 2, // BankLocator String - MemoryTypeDram, // MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE. - { // TypeDetail; + 0xff, // DeviceSet; + 1, // DeviceLocator String + 2, // BankLocator String + MemoryTypeDram, // MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE. + { // TypeDetail; 0, // Reserved :1; 0, // Other :1; 1, // Unknown :1; @@ -393,14 +393,14 @@ SMBIOS_TABLE_TYPE17 gSmbiosType17Template = { 0, // ExtendedSize; 0, // ConfiguredMemoryClockSpeed; }; -CHAR8 *gSmbiosType17Strings[] = { +CHAR8 *gSmbiosType17Strings[] = { "OS Virtual Memory", "malloc", "OSV", NULL }; -SMBIOS_TABLE_TYPE23 gSmbiosType23Template = { +SMBIOS_TABLE_TYPE23 gSmbiosType23Template = { { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE23), 0 }, 0, // Capabilities; 0, // ResetCount; @@ -409,34 +409,32 @@ SMBIOS_TABLE_TYPE23 gSmbiosType23Template = { 0 // Timeout; }; -SMBIOS_TABLE_TYPE32 gSmbiosType32Template = { +SMBIOS_TABLE_TYPE32 gSmbiosType32Template = { { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE32), 0 }, - { 0, 0, 0, 0, 0, 0 }, // Reserved[6]; - BootInformationStatusNoError // BootStatus + { 0, 0, 0, 0, 0, 0}, // Reserved[6]; + BootInformationStatusNoError // BootStatus }; - - -SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[] = { - { (SMBIOS_STRUCTURE *)&gSmbiosType0Template, gSmbiosType0Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType1Template, gSmbiosType1Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType2Template, gSmbiosType2Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType3Template, gSmbiosType3Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template1, gSmbiosType8Strings1 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template2, gSmbiosType8Strings2 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template3, gSmbiosType8Strings3 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template4, gSmbiosType8Strings4 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template5, gSmbiosType8Strings5 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template6, gSmbiosType8Strings6 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template7, gSmbiosType8Strings7 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template8, gSmbiosType8Strings8 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType8Template9, gSmbiosType8Strings9 }, - { (SMBIOS_STRUCTURE *)&gSmbiosType9Template, gSmbiosType9Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType11Template, gSmbiosType11Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType12Template, gSmbiosType12Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType16Template, NULL }, - { (SMBIOS_STRUCTURE *)&gSmbiosType17Template, gSmbiosType17Strings }, - { (SMBIOS_STRUCTURE *)&gSmbiosType23Template, NULL }, - { (SMBIOS_STRUCTURE *)&gSmbiosType32Template, NULL }, - { NULL, NULL } +SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[] = { + { (SMBIOS_STRUCTURE *)&gSmbiosType0Template, gSmbiosType0Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType1Template, gSmbiosType1Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType2Template, gSmbiosType2Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType3Template, gSmbiosType3Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template1, gSmbiosType8Strings1 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template2, gSmbiosType8Strings2 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template3, gSmbiosType8Strings3 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template4, gSmbiosType8Strings4 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template5, gSmbiosType8Strings5 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template6, gSmbiosType8Strings6 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template7, gSmbiosType8Strings7 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template8, gSmbiosType8Strings8 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType8Template9, gSmbiosType8Strings9 }, + { (SMBIOS_STRUCTURE *)&gSmbiosType9Template, gSmbiosType9Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType11Template, gSmbiosType11Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType12Template, gSmbiosType12Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType16Template, NULL }, + { (SMBIOS_STRUCTURE *)&gSmbiosType17Template, gSmbiosType17Strings }, + { (SMBIOS_STRUCTURE *)&gSmbiosType23Template, NULL }, + { (SMBIOS_STRUCTURE *)&gSmbiosType32Template, NULL }, + { NULL, NULL } }; diff --git a/EmulatorPkg/RealTimeClockRuntimeDxe/RealTimeClock.c b/EmulatorPkg/RealTimeClockRuntimeDxe/RealTimeClock.c index c2f980ddc5..9437b2ae98 100644 --- a/EmulatorPkg/RealTimeClockRuntimeDxe/RealTimeClock.c +++ b/EmulatorPkg/RealTimeClockRuntimeDxe/RealTimeClock.c @@ -25,27 +25,28 @@ DayValid ( BOOLEAN IsLeapYear ( - IN EFI_TIME *Time + IN EFI_TIME *Time ); EFI_STATUS RtcTimeFieldsValid ( - IN EFI_TIME *Time + IN EFI_TIME *Time ); EFI_STATUS EFIAPI InitializeRealTimeClock ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); EFI_STATUS EFIAPI EmuGetTime ( - OUT EFI_TIME * Time, - OUT EFI_TIME_CAPABILITIES * Capabilities OPTIONAL + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL ) + /*++ Routine Description: @@ -67,13 +68,11 @@ Returns: **/ { - // // Check parameter for null pointer // if (Time == NULL) { return EFI_INVALID_PARAMETER; - } gEmuThunk->GetTime (Time, Capabilities); @@ -84,8 +83,9 @@ Returns: EFI_STATUS EFIAPI EmuSetTime ( - IN EFI_TIME *Time + IN EFI_TIME *Time ) + /*++ Routine Description: @@ -106,11 +106,12 @@ Returns: **/ { - EFI_STATUS Status; + EFI_STATUS Status; if (Time == NULL) { return EFI_INVALID_PARAMETER; } + // // Make sure that the time fields are valid // @@ -118,16 +119,18 @@ Returns: if (EFI_ERROR (Status)) { return Status; } + return EFI_UNSUPPORTED; } EFI_STATUS EFIAPI EmuGetWakeupTime ( - OUT BOOLEAN *Enabled, - OUT BOOLEAN *Pending, - OUT EFI_TIME *Time + OUT BOOLEAN *Enabled, + OUT BOOLEAN *Pending, + OUT EFI_TIME *Time ) + /*++ Routine Description: @@ -159,9 +162,10 @@ Returns: EFI_STATUS EFIAPI EmuSetWakeupTime ( - IN BOOLEAN Enable, - OUT EFI_TIME *Time + IN BOOLEAN Enable, + OUT EFI_TIME *Time ) + /*++ Routine Description: @@ -193,9 +197,10 @@ Returns: EFI_STATUS EFIAPI InitializeRealTimeClock ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) + /*++ Routine Description: @@ -231,8 +236,9 @@ Returns: EFI_STATUS RtcTimeFieldsValid ( - IN EFI_TIME *Time + IN EFI_TIME *Time ) + /*++ Routine Description: @@ -242,18 +248,19 @@ Routine Description: Returns: **/ { - if (Time->Year < 1998 || - Time->Year > 2099 || - Time->Month < 1 || - Time->Month > 12 || + if ((Time->Year < 1998) || + (Time->Year > 2099) || + (Time->Month < 1) || + (Time->Month > 12) || (!DayValid (Time)) || - Time->Hour > 23 || - Time->Minute > 59 || - Time->Second > 59 || - Time->Nanosecond > 999999999 || - (!(Time->TimeZone == EFI_UNSPECIFIED_TIMEZONE || (Time->TimeZone >= -1440 && Time->TimeZone <= 1440))) || + (Time->Hour > 23) || + (Time->Minute > 59) || + (Time->Second > 59) || + (Time->Nanosecond > 999999999) || + (!((Time->TimeZone == EFI_UNSPECIFIED_TIMEZONE) || ((Time->TimeZone >= -1440) && (Time->TimeZone <= 1440)))) || (Time->Daylight & (~(EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT))) - ) { + ) + { return EFI_INVALID_PARAMETER; } @@ -265,13 +272,13 @@ DayValid ( IN EFI_TIME *Time ) { - STATIC const INTN DayOfMonth[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - if (Time->Day < 1 || - Time->Day > DayOfMonth[Time->Month - 1] || - (Time->Month == 2 && (!IsLeapYear (Time) && Time->Day > 28)) - ) { + if ((Time->Day < 1) || + (Time->Day > DayOfMonth[Time->Month - 1]) || + ((Time->Month == 2) && (!IsLeapYear (Time) && (Time->Day > 28))) + ) + { return FALSE; } @@ -280,7 +287,7 @@ DayValid ( BOOLEAN IsLeapYear ( - IN EFI_TIME *Time + IN EFI_TIME *Time ) { if (Time->Year % 4 == 0) { diff --git a/EmulatorPkg/ResetRuntimeDxe/Reset.c b/EmulatorPkg/ResetRuntimeDxe/Reset.c index 19504825c9..07d4134cd4 100644 --- a/EmulatorPkg/ResetRuntimeDxe/Reset.c +++ b/EmulatorPkg/ResetRuntimeDxe/Reset.c @@ -19,14 +19,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include - VOID EFIAPI EmuResetSystem ( - IN EFI_RESET_TYPE ResetType, - IN EFI_STATUS ResetStatus, - IN UINTN DataSize, - IN VOID *ResetData OPTIONAL + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN VOID *ResetData OPTIONAL ) { EFI_STATUS Status; @@ -52,7 +51,6 @@ EmuResetSystem ( gBS->FreePool (HandleBuffer); } - // // Discard ResetType, always return 0 as exit code // @@ -66,14 +64,13 @@ EmuResetSystem ( return; } - - EFI_STATUS EFIAPI InitializeEmuReset ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) + /*++ Routine Description: @@ -105,4 +102,3 @@ Returns: return Status; } - diff --git a/EmulatorPkg/Sec/Ia32/TempRam.c b/EmulatorPkg/Sec/Ia32/TempRam.c index e8b0d53bb1..13c32b9ca1 100644 --- a/EmulatorPkg/Sec/Ia32/TempRam.c +++ b/EmulatorPkg/Sec/Ia32/TempRam.c @@ -15,26 +15,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent VOID EFIAPI SecSwitchStack ( - UINT32 TemporaryMemoryBase, - UINT32 PermenentMemoryBase + UINT32 TemporaryMemoryBase, + UINT32 PermenentMemoryBase ); - EFI_STATUS EFIAPI SecTemporaryRamSupport ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, - IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, - IN UINTN CopySize + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, + IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, + IN UINTN CopySize ) { // // Migrate the whole temporary memory to permanent memory. // CopyMem ( - (VOID*)(UINTN)PermanentMemoryBase, - (VOID*)(UINTN)TemporaryMemoryBase, + (VOID *)(UINTN)PermanentMemoryBase, + (VOID *)(UINTN)TemporaryMemoryBase, CopySize ); @@ -43,7 +42,7 @@ SecTemporaryRamSupport ( // immediately, also we need fixup the stack change caused by new call into // permanent memory. // - SecSwitchStack ((UINT32) TemporaryMemoryBase, (UINT32) PermanentMemoryBase); + SecSwitchStack ((UINT32)TemporaryMemoryBase, (UINT32)PermanentMemoryBase); // // We need *not* fix the return address because currently, @@ -53,7 +52,7 @@ SecTemporaryRamSupport ( // // Simulate to invalid temporary memory, terminate temporary memory // - //ZeroMem ((VOID*)(UINTN)TemporaryMemoryBase, CopySize); + // ZeroMem ((VOID*)(UINTN)TemporaryMemoryBase, CopySize); return EFI_SUCCESS; } diff --git a/EmulatorPkg/Sec/Sec.c b/EmulatorPkg/Sec/Sec.c index e1bee4f6b4..3d792adc94 100644 --- a/EmulatorPkg/Sec/Sec.c +++ b/EmulatorPkg/Sec/Sec.c @@ -10,13 +10,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Sec.h" - - -EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI mSecTemporaryRamSupportPpi = { +EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI mSecTemporaryRamSupportPpi = { SecTemporaryRamSupport }; - EFI_PEI_PPI_DESCRIPTOR gPrivateDispatchTable[] = { { EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, @@ -25,8 +22,6 @@ EFI_PEI_PPI_DESCRIPTOR gPrivateDispatchTable[] = { } }; - - /** The entry point of PE/COFF Image for the PEI Core, that has been hijacked by this SEC that sits on top of an OS application. So the entry and exit of this module @@ -62,8 +57,8 @@ EFI_PEI_PPI_DESCRIPTOR gPrivateDispatchTable[] = { VOID EFIAPI _ModuleEntryPoint ( - IN EFI_SEC_PEI_HAND_OFF *SecCoreData, - IN EFI_PEI_PPI_DESCRIPTOR *PpiList + IN EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN EFI_PEI_PPI_DESCRIPTOR *PpiList ) { EFI_STATUS Status; @@ -77,7 +72,7 @@ _ModuleEntryPoint ( UINTN Index; EFI_PEI_PPI_DESCRIPTOR PpiArray[10]; - EMU_MAGIC_PAGE()->PpiList = PpiList; + EMU_MAGIC_PAGE ()->PpiList = PpiList; ProcessLibraryConstructorList (); DEBUG ((DEBUG_ERROR, "SEC Has Started\n")); @@ -99,12 +94,12 @@ _ModuleEntryPoint ( // Keep everything on a good alignment SecReseveredMemorySize = ALIGN_VALUE (SecReseveredMemorySize, CPU_STACK_ALIGNMENT); -#if 0 + #if 0 // Tell the PEI Core to not use our buffer in temp RAM - SecPpiList = (EFI_PEI_PPI_DESCRIPTOR *)SecCoreData->PeiTemporaryRamBase; - SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + SecReseveredMemorySize); + SecPpiList = (EFI_PEI_PPI_DESCRIPTOR *)SecCoreData->PeiTemporaryRamBase; + SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + SecReseveredMemorySize); SecCoreData->PeiTemporaryRamSize -= SecReseveredMemorySize; -#else + #else // // When I subtrack from SecCoreData->PeiTemporaryRamBase PEI Core crashes? Either there is a bug // or I don't understand temp RAM correctly? @@ -112,7 +107,7 @@ _ModuleEntryPoint ( SecPpiList = &PpiArray[0]; ASSERT (sizeof (PpiArray) >= SecReseveredMemorySize); -#endif + #endif // Copy existing list, and append our entries. CopyMem (SecPpiList, PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR) * Index); CopyMem (&SecPpiList[Index], gPrivateDispatchTable, sizeof (gPrivateDispatchTable)); @@ -120,7 +115,7 @@ _ModuleEntryPoint ( // Find PEI Core and transfer control VolumeHandle = (EFI_PEI_FV_HANDLE)(UINTN)SecCoreData->BootFirmwareVolumeBase; FileHandle = NULL; - Status = PeiServicesFfsFindNextFile (EFI_FV_FILETYPE_PEI_CORE, VolumeHandle, &FileHandle); + Status = PeiServicesFfsFindNextFile (EFI_FV_FILETYPE_PEI_CORE, VolumeHandle, &FileHandle); ASSERT_EFI_ERROR (Status); Status = PeiServicesFfsFindSectionData (EFI_SECTION_PE32, FileHandle, &PeCoffImage); diff --git a/EmulatorPkg/Sec/Sec.h b/EmulatorPkg/Sec/Sec.h index 42554e05b5..29272a29ff 100644 --- a/EmulatorPkg/Sec/Sec.h +++ b/EmulatorPkg/Sec/Sec.h @@ -11,7 +11,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __SEC_H___ #define __SEC_H___ - #include #include #include @@ -21,7 +20,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include - // // I think this should be defined in a MdePkg include file? // @@ -34,12 +32,10 @@ ProcessLibraryConstructorList ( EFI_STATUS EFIAPI SecTemporaryRamSupport ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, - IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, - IN UINTN CopySize + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, + IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, + IN UINTN CopySize ); - #endif - diff --git a/EmulatorPkg/ThunkPpiToProtocolPei/ThunkPpiToProtocolPei.c b/EmulatorPkg/ThunkPpiToProtocolPei/ThunkPpiToProtocolPei.c index 966da3b226..c228399b6c 100644 --- a/EmulatorPkg/ThunkPpiToProtocolPei/ThunkPpiToProtocolPei.c +++ b/EmulatorPkg/ThunkPpiToProtocolPei/ThunkPpiToProtocolPei.c @@ -18,14 +18,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - - EFI_STATUS EFIAPI PeiInitialzeThunkPpiToProtocolPei ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) + /*++ Routine Description: @@ -50,11 +49,11 @@ Returns: DEBUG ((DEBUG_ERROR, "Emu Thunk PEIM Loaded\n")); Status = PeiServicesLocatePpi ( - &gEmuThunkPpiGuid, // GUID - 0, // INSTANCE - &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR - (VOID **)&Thunk // PPI - ); + &gEmuThunkPpiGuid, // GUID + 0, // INSTANCE + &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR + (VOID **)&Thunk // PPI + ); ASSERT_EFI_ERROR (Status); Ptr = Thunk->Thunk (); diff --git a/EmulatorPkg/TimerDxe/Timer.c b/EmulatorPkg/TimerDxe/Timer.c index 8e2baaaa5b..4ec5c3ee28 100644 --- a/EmulatorPkg/TimerDxe/Timer.c +++ b/EmulatorPkg/TimerDxe/Timer.c @@ -27,12 +27,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Pointer to the CPU Architectural Protocol instance // -EFI_CPU_ARCH_PROTOCOL *mCpu; +EFI_CPU_ARCH_PROTOCOL *mCpu; // // The Timer Architectural Protocol that this driver produces // -EFI_TIMER_ARCH_PROTOCOL mTimer = { +EFI_TIMER_ARCH_PROTOCOL mTimer = { EmuTimerDriverRegisterHandler, EmuTimerDriverSetTimerPeriod, EmuTimerDriverGetTimerPeriod, @@ -42,22 +42,22 @@ EFI_TIMER_ARCH_PROTOCOL mTimer = { // // The notification function to call on every timer interrupt // -EFI_TIMER_NOTIFY mTimerNotifyFunction = NULL; +EFI_TIMER_NOTIFY mTimerNotifyFunction = NULL; // // The current period of the timer interrupt // -UINT64 mTimerPeriodMs; - +UINT64 mTimerPeriodMs; VOID EFIAPI -TimerCallback (UINT64 DeltaMs) +TimerCallback ( + UINT64 DeltaMs + ) { EFI_TPL OriginalTPL; EFI_TIMER_NOTIFY CallbackFunction; - OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL); if (OriginalTPL < TPL_HIGH_LEVEL) { @@ -73,15 +73,15 @@ TimerCallback (UINT64 DeltaMs) } gBS->RestoreTPL (OriginalTPL); - } EFI_STATUS EFIAPI EmuTimerDriverRegisterHandler ( - IN EFI_TIMER_ARCH_PROTOCOL *This, - IN EFI_TIMER_NOTIFY NotifyFunction + IN EFI_TIMER_ARCH_PROTOCOL *This, + IN EFI_TIMER_NOTIFY NotifyFunction ) + /*++ Routine Description: @@ -127,11 +127,11 @@ Returns: // // Check for invalid parameters // - if (NotifyFunction == NULL && mTimerNotifyFunction == NULL) { + if ((NotifyFunction == NULL) && (mTimerNotifyFunction == NULL)) { return EFI_INVALID_PARAMETER; } - if (NotifyFunction != NULL && mTimerNotifyFunction != NULL) { + if ((NotifyFunction != NULL) && (mTimerNotifyFunction != NULL)) { return EFI_ALREADY_STARTED; } @@ -142,6 +142,7 @@ Returns: /* Enable Timer. */ gEmuThunk->SetTimer (mTimerPeriodMs, TimerCallback); } + mTimerNotifyFunction = NotifyFunction; return EFI_SUCCESS; @@ -153,6 +154,7 @@ EmuTimerDriverSetTimerPeriod ( IN EFI_TIMER_ARCH_PROTOCOL *This, IN UINT64 TimerPeriod ) + /*++ Routine Description: @@ -190,14 +192,14 @@ Returns: **/ { - // // If TimerPeriod is 0, then the timer thread should be canceled // If the TimerPeriod is valid, then create and/or adjust the period of the timer thread // - if (TimerPeriod == 0 - || ((TimerPeriod > TIMER_MINIMUM_VALUE) - && (TimerPeriod < TIMER_MAXIMUM_VALUE))) { + if ( (TimerPeriod == 0) + || ( (TimerPeriod > TIMER_MINIMUM_VALUE) + && (TimerPeriod < TIMER_MAXIMUM_VALUE))) + { mTimerPeriodMs = DivU64x32 (TimerPeriod + 5000, 10000); gEmuThunk->SetTimer (mTimerPeriodMs, TimerCallback); @@ -209,9 +211,10 @@ Returns: EFI_STATUS EFIAPI EmuTimerDriverGetTimerPeriod ( - IN EFI_TIMER_ARCH_PROTOCOL *This, - OUT UINT64 *TimerPeriod + IN EFI_TIMER_ARCH_PROTOCOL *This, + OUT UINT64 *TimerPeriod ) + /*++ Routine Description: @@ -250,6 +253,7 @@ EFIAPI EmuTimerDriverGenerateSoftInterrupt ( IN EFI_TIMER_ARCH_PROTOCOL *This ) + /*++ Routine Description: @@ -283,6 +287,7 @@ EmuTimerDriverInitialize ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) + /*++ Routine Description: @@ -341,6 +346,5 @@ Returns: return Status; } - return EFI_SUCCESS; } diff --git a/EmulatorPkg/TimerDxe/Timer.h b/EmulatorPkg/TimerDxe/Timer.h index 861811f3a4..7a995e0d96 100644 --- a/EmulatorPkg/TimerDxe/Timer.h +++ b/EmulatorPkg/TimerDxe/Timer.h @@ -13,19 +13,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _TIMER_H_ #define _TIMER_H_ - - - // // Legal timer value range in 100 ns units // -#define TIMER_MINIMUM_VALUE 0 -#define TIMER_MAXIMUM_VALUE (0x100000000ULL - 1) +#define TIMER_MINIMUM_VALUE 0 +#define TIMER_MAXIMUM_VALUE (0x100000000ULL - 1) // // Default timer value in 100 ns units (50 ms) // -#define DEFAULT_TIMER_TICK_DURATION 500000 +#define DEFAULT_TIMER_TICK_DURATION 500000 // // Function Prototypes @@ -54,8 +51,8 @@ EmuTimerDriverSetTimerPeriod ( EFI_STATUS EFIAPI EmuTimerDriverGetTimerPeriod ( - IN EFI_TIMER_ARCH_PROTOCOL *This, - OUT UINT64 *TimerPeriod + IN EFI_TIMER_ARCH_PROTOCOL *This, + OUT UINT64 *TimerPeriod ); EFI_STATUS diff --git a/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c b/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c index 441f1e8d0a..ecfdacc748 100644 --- a/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c +++ b/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c @@ -11,53 +11,48 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Host.h" #ifdef __APPLE__ + #include -#include - - -#define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n') +#define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n') typedef struct { - UINTN Signature; + UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; - EMU_SNP_PROTOCOL EmuSnp; - EFI_SIMPLE_NETWORK_MODE *Mode; + EMU_IO_THUNK_PROTOCOL *Thunk; + EMU_SNP_PROTOCOL EmuSnp; + EFI_SIMPLE_NETWORK_MODE *Mode; - int BpfFd; - char *InterfaceName; - EFI_MAC_ADDRESS MacAddress; - u_int ReadBufferSize; - VOID *ReadBuffer; + int BpfFd; + char *InterfaceName; + EFI_MAC_ADDRESS MacAddress; + u_int ReadBufferSize; + VOID *ReadBuffer; // // Two walking pointers to manage the multiple packets that can be returned // in a single read. // - VOID *CurrentReadPointer; - VOID *EndReadPointer; - - UINT32 ReceivedPackets; - UINT32 DroppedPackets; + VOID *CurrentReadPointer; + VOID *EndReadPointer; + UINT32 ReceivedPackets; + UINT32 DroppedPackets; } EMU_SNP_PRIVATE; #define EMU_SNP_PRIVATE_DATA_FROM_THIS(a) \ CR(a, EMU_SNP_PRIVATE, EmuSnp, EMU_SNP_PRIVATE_SIGNATURE) - // // Strange, but there doesn't appear to be any structure for the Ethernet header in edk2... // typedef struct { - UINT8 DstAddr[NET_ETHER_ADDR_LEN]; - UINT8 SrcAddr[NET_ETHER_ADDR_LEN]; - UINT16 Type; + UINT8 DstAddr[NET_ETHER_ADDR_LEN]; + UINT8 SrcAddr[NET_ETHER_ADDR_LEN]; + UINT16 Type; } ETHERNET_HEADER; /** @@ -76,7 +71,7 @@ EmuSnpCreateMapping ( IN EFI_SIMPLE_NETWORK_MODE *Mode ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -100,40 +95,38 @@ EmuSnpCreateMapping ( return EFI_SUCCESS; } - -static struct bpf_insn mFilterInstructionTemplate[] = { +static struct bpf_insn mFilterInstructionTemplate[] = { // Load 4 bytes from the destination MAC address. - BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])), + BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])), // Compare to first 4 bytes of fake MAC address. - BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x12345678, 0, 3 ), + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x12345678, 0, 3), // Load remaining 2 bytes from the destination MAC address. - BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( ETHERNET_HEADER, DstAddr[4])), + BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[4])), // Compare to remaining 2 bytes of fake MAC address. - BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x9ABC, 5, 0 ), + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x9ABC, 5, 0), // Load 4 bytes from the destination MAC address. - BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])), + BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])), // Compare to first 4 bytes of broadcast MAC address. - BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFFFFFF, 0, 2), + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFFFFFF, 0, 2), // Load remaining 2 bytes from the destination MAC address. - BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( ETHERNET_HEADER, DstAddr[4])), + BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[4])), // Compare to remaining 2 bytes of broadcast MAC address. - BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFF, 1, 0), + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFF, 1, 0), // Reject packet. - BPF_STMT (BPF_RET + BPF_K, 0), + BPF_STMT (BPF_RET + BPF_K, 0), // Receive entire packet. - BPF_STMT (BPF_RET + BPF_K, -1) + BPF_STMT (BPF_RET + BPF_K, -1) }; - EFI_STATUS OpenBpfFileDescriptor ( IN EMU_SNP_PRIVATE *Private, @@ -171,7 +164,6 @@ OpenBpfFileDescriptor ( return EFI_OUT_OF_RESOURCES; } - /** Changes the state of a network interface from "stopped" to "started". @@ -189,15 +181,15 @@ EmuSnpStart ( IN EMU_SNP_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_SNP_PRIVATE *Private; - struct ifreq BoundIf; - struct bpf_program BpfProgram; - struct bpf_insn *FilterProgram; + EFI_STATUS Status; + EMU_SNP_PRIVATE *Private; + struct ifreq BoundIf; + struct bpf_program BpfProgram; + struct bpf_insn *FilterProgram; u_int Value; u_int ReadBufferSize; - UINT16 Temp16; - UINT32 Temp32; + UINT16 Temp16; + UINT32 Temp32; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -215,7 +207,7 @@ EmuSnpStart ( break; } - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; Private->ReadBuffer = NULL; if (Private->BpfFd == 0) { Status = OpenBpfFileDescriptor (Private, &Private->BpfFd); @@ -282,7 +274,7 @@ EmuSnpStart ( // Allocate read buffer. // Private->ReadBufferSize = ReadBufferSize; - Private->ReadBuffer = malloc (Private->ReadBufferSize); + Private->ReadBuffer = malloc (Private->ReadBufferSize); if (Private->ReadBuffer == NULL) { goto ErrorExit; } @@ -293,7 +285,7 @@ EmuSnpStart ( // Install our packet filter: successful reads should only produce broadcast or unicast // packets directed to our fake MAC address. // - FilterProgram = malloc (sizeof (mFilterInstructionTemplate)) ; + FilterProgram = malloc (sizeof (mFilterInstructionTemplate)); if ( FilterProgram == NULL ) { goto ErrorExit; } @@ -308,7 +300,7 @@ EmuSnpStart ( CopyMem (&Temp16, &Private->Mode->CurrentAddress.Addr[4], sizeof (UINT16)); FilterProgram[3].k = NTOHS (Temp16); - BpfProgram.bf_len = sizeof (mFilterInstructionTemplate) / sizeof (struct bpf_insn); + BpfProgram.bf_len = sizeof (mFilterInstructionTemplate) / sizeof (struct bpf_insn); BpfProgram.bf_insns = FilterProgram; if (ioctl (Private->BpfFd, BIOCSETF, &BpfProgram) < 0) { @@ -324,7 +316,6 @@ EmuSnpStart ( goto DeviceErrorExit; } - Private->Mode->State = EfiSimpleNetworkStarted; } @@ -337,10 +328,10 @@ ErrorExit: free (Private->ReadBuffer); Private->ReadBuffer = NULL; } + return Status; } - /** Changes the state of a network interface from "started" to "stopped". @@ -358,7 +349,7 @@ EmuSnpStop ( IN EMU_SNP_PROTOCOL *This ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -381,7 +372,7 @@ EmuSnpStop ( } if (Private->ReadBuffer != NULL) { - free (Private->ReadBuffer ); + free (Private->ReadBuffer); Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer = NULL; } @@ -390,7 +381,6 @@ EmuSnpStop ( return EFI_SUCCESS; } - /** Resets a network adapter and allocates the transmit and receive buffers required by the network interface; optionally, also requests allocation @@ -419,12 +409,12 @@ EmuSnpStop ( **/ EFI_STATUS EmuSnpInitialize ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -441,7 +431,7 @@ EmuSnpInitialize ( break; } - Private->Mode->MCastFilterCount = 0; + Private->Mode->MCastFilterCount = 0; Private->Mode->ReceiveFilterSetting = 0; ZeroMem (Private->Mode->MCastFilter, sizeof (Private->Mode->MCastFilter)); @@ -450,7 +440,6 @@ EmuSnpInitialize ( return EFI_SUCCESS; } - /** Resets a network adapter and re-initializes it with the parameters that were provided in the previous call to Initialize(). @@ -469,11 +458,11 @@ EmuSnpInitialize ( **/ EFI_STATUS EmuSnpReset ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -493,7 +482,6 @@ EmuSnpReset ( return EFI_SUCCESS; } - /** Resets a network adapter and leaves it in a state that is safe for another driver to initialize. @@ -512,7 +500,7 @@ EmuSnpShutdown ( IN EMU_SNP_PROTOCOL *This ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -532,7 +520,7 @@ EmuSnpShutdown ( Private->Mode->State = EfiSimpleNetworkStarted; Private->Mode->ReceiveFilterSetting = 0; - Private->Mode->MCastFilterCount = 0; + Private->Mode->MCastFilterCount = 0; ZeroMem (Private->Mode->MCastFilter, sizeof (Private->Mode->MCastFilter)); if (Private->BpfFd != 0) { @@ -574,15 +562,15 @@ EmuSnpShutdown ( **/ EFI_STATUS EmuSnpReceiveFilters ( - IN EMU_SNP_PROTOCOL *This, - IN UINT32 Enable, - IN UINT32 Disable, - IN BOOLEAN ResetMCastFilter, - IN UINTN MCastFilterCnt OPTIONAL, - IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINT32 Enable, + IN UINT32 Disable, + IN BOOLEAN ResetMCastFilter, + IN UINTN MCastFilterCnt OPTIONAL, + IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -590,7 +578,6 @@ EmuSnpReceiveFilters ( return EFI_SUCCESS; } - /** Modifies or resets the current station address, if supported. @@ -608,19 +595,18 @@ EmuSnpReceiveFilters ( **/ EFI_STATUS EmuSnpStationAddress ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *New OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; } - /** Resets or collects the statistics on a network interface. @@ -644,20 +630,19 @@ EmuSnpStationAddress ( **/ EFI_STATUS EmuSnpStatistics ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; } - /** Converts a multicast IP address to a multicast HW MAC address. @@ -681,20 +666,19 @@ EmuSnpStatistics ( **/ EFI_STATUS EmuSnpMCastIpToMac ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - OUT EFI_MAC_ADDRESS *MAC + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; } - /** Performs read and write operations on the NVRAM device attached to a network interface. @@ -717,14 +701,14 @@ EmuSnpMCastIpToMac ( **/ EFI_STATUS EmuSnpNvData ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ReadWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ReadWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -758,12 +742,12 @@ EmuSnpNvData ( **/ EFI_STATUS EmuSnpGetStatus ( - IN EMU_SNP_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINT32 *InterruptStatus OPTIONAL, + OUT VOID **TxBuf OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -774,7 +758,6 @@ EmuSnpGetStatus ( return EFI_SUCCESS; } - /** Places a packet in the transmit queue of a network interface. @@ -810,17 +793,17 @@ EmuSnpGetStatus ( **/ EFI_STATUS EmuSnpTransmit ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ) { - EMU_SNP_PRIVATE *Private; - ETHERNET_HEADER *EnetHeader; + EMU_SNP_PRIVATE *Private; + ETHERNET_HEADER *EnetHeader; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -837,15 +820,15 @@ EmuSnpTransmit ( SrcAddr = &Private->Mode->CurrentAddress; } - EnetHeader = (ETHERNET_HEADER *) Buffer; + EnetHeader = (ETHERNET_HEADER *)Buffer; CopyMem (EnetHeader->DstAddr, DestAddr, NET_ETHER_ADDR_LEN); CopyMem (EnetHeader->SrcAddr, SrcAddr, NET_ETHER_ADDR_LEN); - EnetHeader->Type = HTONS(*Protocol); + EnetHeader->Type = HTONS (*Protocol); } - if (write (Private->BpfFd, Buffer, BufferSize) < 0) { + if (write (Private->BpfFd, Buffer, BufferSize) < 0) { return EFI_DEVICE_ERROR; } @@ -886,20 +869,20 @@ EmuSnpTransmit ( **/ EFI_STATUS EmuSnpReceive ( - IN EMU_SNP_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ) { - EMU_SNP_PRIVATE *Private; - struct bpf_hdr *BpfHeader; - struct bpf_stat BpfStats; - ETHERNET_HEADER *EnetHeader; - ssize_t Result; + EMU_SNP_PRIVATE *Private; + struct bpf_hdr *BpfHeader; + struct bpf_stat BpfStats; + ETHERNET_HEADER *EnetHeader; + ssize_t Result; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -907,7 +890,7 @@ EmuSnpReceive ( return EFI_NOT_STARTED; } - ZeroMem (&BpfStats, sizeof( BpfStats)); + ZeroMem (&BpfStats, sizeof (BpfStats)); if (ioctl (Private->BpfFd, BIOCGSTATS, &BpfStats) == 0) { Private->ReceivedPackets += BpfStats.bs_recv; @@ -936,10 +919,10 @@ EmuSnpReceive ( } Private->CurrentReadPointer = Private->ReadBuffer; - Private->EndReadPointer = Private->CurrentReadPointer + Result; + Private->EndReadPointer = Private->CurrentReadPointer + Result; } - BpfHeader = Private->CurrentReadPointer; + BpfHeader = Private->CurrentReadPointer; EnetHeader = Private->CurrentReadPointer + BpfHeader->bh_hdrlen; if (BpfHeader->bh_caplen > *BufferSize) { @@ -972,8 +955,7 @@ EmuSnpReceive ( return EFI_SUCCESS; } - -EMU_SNP_PROTOCOL gEmuSnpProtocol = { +EMU_SNP_PROTOCOL gEmuSnpProtocol = { GasketSnpCreateMapping, GasketSnpStart, GasketSnpStop, @@ -992,7 +974,7 @@ EMU_SNP_PROTOCOL gEmuSnpProtocol = { EFI_STATUS GetInterfaceMacAddr ( - EMU_SNP_PRIVATE *Private + EMU_SNP_PRIVATE *Private ) { EFI_STATUS Status; @@ -1020,12 +1002,12 @@ GetInterfaceMacAddr ( ); Status = EFI_NOT_FOUND; - If = IfAddrs; + If = IfAddrs; while (If != NULL) { IfSdl = (struct sockaddr_dl *)If->ifa_addr; if (IfSdl->sdl_family == AF_LINK) { - if (!AsciiStrCmp( Private->InterfaceName, If->ifa_name)) { + if (!AsciiStrCmp (Private->InterfaceName, If->ifa_name)) { CopyMem (&Private->MacAddress, LLADDR (IfSdl), NET_ETHER_ADDR_LEN); Status = EFI_SUCCESS; @@ -1041,10 +1023,9 @@ Exit: return Status; } - EFI_STATUS EmuSnpThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_SNP_PRIVATE *Private; @@ -1062,7 +1043,6 @@ EmuSnpThunkOpen ( return EFI_OUT_OF_RESOURCES; } - Private->Signature = EMU_SNP_PRIVATE_SIGNATURE; Private->Thunk = This; CopyMem (&Private->EmuSnp, &gEmuSnpProtocol, sizeof (gEmuSnpProtocol)); @@ -1073,10 +1053,9 @@ EmuSnpThunkOpen ( return EFI_SUCCESS; } - EFI_STATUS EmuSnpThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_SNP_PRIVATE *Private; @@ -1091,9 +1070,7 @@ EmuSnpThunkClose ( return EFI_SUCCESS; } - - -EMU_IO_THUNK_PROTOCOL gSnpThunkIo = { +EMU_IO_THUNK_PROTOCOL gSnpThunkIo = { &gEmuSnpProtocolGuid, NULL, NULL, diff --git a/EmulatorPkg/Unix/Host/BlockIo.c b/EmulatorPkg/Unix/Host/BlockIo.c index e3d7c52a43..cf2d6b4cda 100644 --- a/EmulatorPkg/Unix/Host/BlockIo.c +++ b/EmulatorPkg/Unix/Host/BlockIo.c @@ -7,41 +7,37 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Host.h" -#define EMU_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'b', 'k') +#define EMU_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'b', 'k') typedef struct { - UINTN Signature; + UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; + EMU_IO_THUNK_PROTOCOL *Thunk; - char *Filename; - UINTN ReadMode; - UINTN Mode; + char *Filename; + UINTN ReadMode; + UINTN Mode; - int fd; + int fd; - BOOLEAN RemovableMedia; - BOOLEAN WriteProtected; + BOOLEAN RemovableMedia; + BOOLEAN WriteProtected; - UINT64 NumberOfBlocks; - UINT32 BlockSize; - - EMU_BLOCK_IO_PROTOCOL EmuBlockIo; - EFI_BLOCK_IO_MEDIA *Media; + UINT64 NumberOfBlocks; + UINT32 BlockSize; + EMU_BLOCK_IO_PROTOCOL EmuBlockIo; + EFI_BLOCK_IO_MEDIA *Media; } EMU_BLOCK_IO_PRIVATE; #define EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \ CR(a, EMU_BLOCK_IO_PRIVATE, EmuBlockIo, EMU_BLOCK_IO_PRIVATE_SIGNATURE) - - EFI_STATUS EmuBlockIoReset ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ); - /*++ This function extends the capability of SetFilePointer to accept 64 bit parameters @@ -49,18 +45,18 @@ This function extends the capability of SetFilePointer to accept 64 bit paramete **/ EFI_STATUS SetFilePointer64 ( - IN EMU_BLOCK_IO_PRIVATE *Private, - IN INT64 DistanceToMove, - OUT UINT64 *NewFilePointer, - IN INT32 MoveMethod + IN EMU_BLOCK_IO_PRIVATE *Private, + IN INT64 DistanceToMove, + OUT UINT64 *NewFilePointer, + IN INT32 MoveMethod ) { - EFI_STATUS Status; - off_t res; - off_t offset = DistanceToMove; + EFI_STATUS Status; + off_t res; + off_t offset = DistanceToMove; Status = EFI_SUCCESS; - res = lseek (Private->fd, offset, (int)MoveMethod); + res = lseek (Private->fd, offset, (int)MoveMethod); if (res == -1) { Status = EFI_INVALID_PARAMETER; } @@ -72,16 +68,14 @@ SetFilePointer64 ( return Status; } - EFI_STATUS EmuBlockIoOpenDevice ( - IN EMU_BLOCK_IO_PRIVATE *Private + IN EMU_BLOCK_IO_PRIVATE *Private ) { - EFI_STATUS Status; - UINT64 FileSize; - struct statfs buf; - + EFI_STATUS Status; + UINT64 FileSize; + struct statfs buf; // // If the device is already opened, close it @@ -95,9 +89,9 @@ EmuBlockIoOpenDevice ( // Private->fd = open (Private->Filename, Private->Mode, 0644); if (Private->fd < 0) { - printf ("EmuOpenBlock: Could not open %s: %s\n", Private->Filename, strerror(errno)); - Private->Media->MediaPresent = FALSE; - Status = EFI_NO_MEDIA; + printf ("EmuOpenBlock: Could not open %s: %s\n", Private->Filename, strerror (errno)); + Private->Media->MediaPresent = FALSE; + Status = EFI_NO_MEDIA; goto Done; } @@ -120,13 +114,14 @@ EmuBlockIoOpenDevice ( if (FileSize == 0) { // lseek fails on a real device. ioctl calls are OS specific -#if __APPLE__ + #if __APPLE__ { - UINT32 BlockSize; + UINT32 BlockSize; if (ioctl (Private->fd, DKIOCGETBLOCKSIZE, &BlockSize) == 0) { Private->Media->BlockSize = BlockSize; } + if (ioctl (Private->fd, DKIOCGETBLOCKCOUNT, &Private->NumberOfBlocks) == 0) { if ((Private->NumberOfBlocks == 0) && (BlockSize == 0x800)) { // A DVD is ~ 4.37 GB so make up a number @@ -135,34 +130,35 @@ EmuBlockIoOpenDevice ( Private->Media->LastBlock = Private->NumberOfBlocks - 1; } } + ioctl (Private->fd, DKIOCGETMAXBLOCKCOUNTWRITE, &Private->Media->OptimalTransferLengthGranularity); } -#else + #else { - size_t BlockSize; - UINT64 DiskSize; + size_t BlockSize; + UINT64 DiskSize; if (ioctl (Private->fd, BLKSSZGET, &BlockSize) == 0) { Private->Media->BlockSize = BlockSize; } + if (ioctl (Private->fd, BLKGETSIZE64, &DiskSize) == 0) { - Private->NumberOfBlocks = DivU64x32 (DiskSize, (UINT32)BlockSize); + Private->NumberOfBlocks = DivU64x32 (DiskSize, (UINT32)BlockSize); Private->Media->LastBlock = Private->NumberOfBlocks - 1; } } -#endif - + #endif } else { Private->Media->BlockSize = Private->BlockSize; - Private->NumberOfBlocks = DivU64x32 (FileSize, Private->Media->BlockSize); + Private->NumberOfBlocks = DivU64x32 (FileSize, Private->Media->BlockSize); Private->Media->LastBlock = Private->NumberOfBlocks - 1; if (fstatfs (Private->fd, &buf) == 0) { -#if __APPLE__ + #if __APPLE__ Private->Media->OptimalTransferLengthGranularity = buf.f_iosize/buf.f_bsize; -#else + #else Private->Media->OptimalTransferLengthGranularity = buf.f_bsize/buf.f_bsize; -#endif + #endif } } @@ -179,15 +175,14 @@ Done: return Status; } - EFI_STATUS EmuBlockIoCreateMapping ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN EFI_BLOCK_IO_MEDIA *Media + IN EMU_BLOCK_IO_PROTOCOL *This, + IN EFI_BLOCK_IO_MEDIA *Media ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -206,66 +201,61 @@ EmuBlockIoCreateMapping ( Media->LowestAlignedLba = 0; Media->LogicalBlocksPerPhysicalBlock = 0; - // EFI_BLOCK_IO_PROTOCOL_REVISION3 Media->OptimalTransferLengthGranularity = 0; Status = EmuBlockIoOpenDevice (Private); - return Status; } - EFI_STATUS EmuBlockIoError ( - IN EMU_BLOCK_IO_PRIVATE *Private + IN EMU_BLOCK_IO_PRIVATE *Private ) { - EFI_STATUS Status; - BOOLEAN ReinstallBlockIoFlag; - + EFI_STATUS Status; + BOOLEAN ReinstallBlockIoFlag; switch (errno) { - - case EAGAIN: - Status = EFI_NO_MEDIA; - Private->Media->ReadOnly = FALSE; - Private->Media->MediaPresent = FALSE; - ReinstallBlockIoFlag = FALSE; - break; - - case EACCES: - Private->Media->ReadOnly = FALSE; - Private->Media->MediaPresent = TRUE; - Private->Media->MediaId += 1; - ReinstallBlockIoFlag = TRUE; - Status = EFI_MEDIA_CHANGED; - break; - - case EROFS: - Private->Media->ReadOnly = TRUE; - ReinstallBlockIoFlag = FALSE; - Status = EFI_WRITE_PROTECTED; - break; - - default: - ReinstallBlockIoFlag = FALSE; - Status = EFI_DEVICE_ERROR; - break; + case EAGAIN: + Status = EFI_NO_MEDIA; + Private->Media->ReadOnly = FALSE; + Private->Media->MediaPresent = FALSE; + ReinstallBlockIoFlag = FALSE; + break; + + case EACCES: + Private->Media->ReadOnly = FALSE; + Private->Media->MediaPresent = TRUE; + Private->Media->MediaId += 1; + ReinstallBlockIoFlag = TRUE; + Status = EFI_MEDIA_CHANGED; + break; + + case EROFS: + Private->Media->ReadOnly = TRUE; + ReinstallBlockIoFlag = FALSE; + Status = EFI_WRITE_PROTECTED; + break; + + default: + ReinstallBlockIoFlag = FALSE; + Status = EFI_DEVICE_ERROR; + break; } + return Status; } - EFI_STATUS EmuBlockIoReadWriteCommon ( - IN EMU_BLOCK_IO_PRIVATE *Private, - IN UINT32 MediaId, - IN EFI_LBA Lba, - IN UINTN BufferSize, - IN VOID *Buffer, - IN CHAR8 *CallerName + IN EMU_BLOCK_IO_PRIVATE *Private, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + IN VOID *Buffer, + IN CHAR8 *CallerName ) { EFI_STATUS Status; @@ -290,7 +280,7 @@ EmuBlockIoReadWriteCommon ( return EFI_MEDIA_CHANGED; } - if ((UINTN) Buffer % Private->Media->IoAlign != 0) { + if ((UINTN)Buffer % Private->Media->IoAlign != 0) { return EFI_INVALID_PARAMETER; } @@ -313,11 +303,12 @@ EmuBlockIoReadWriteCommon ( DEBUG ((DEBUG_INIT, "ReadBlocks: Attempted to read off end of device\n")); return EFI_INVALID_PARAMETER; } + // // Seek to End of File // DistanceToMove = MultU64x32 (Lba, BlockSize); - Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, SEEK_SET); + Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, SEEK_SET); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_INIT, "WriteBlocks: SetFilePointer failed\n")); @@ -327,7 +318,6 @@ EmuBlockIoReadWriteCommon ( return EFI_SUCCESS; } - /** Read BufferSize bytes from Lba into Buffer. @@ -368,16 +358,16 @@ EmuBlockIoReadBlocks ( IN EFI_LBA LBA, IN OUT EFI_BLOCK_IO2_TOKEN *Token, IN UINTN BufferSize, - OUT VOID *Buffer + OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_BLOCK_IO_PRIVATE *Private; - ssize_t len; + EFI_STATUS Status; + EMU_BLOCK_IO_PRIVATE *Private; + ssize_t len; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); - Status = EmuBlockIoReadWriteCommon (Private, MediaId, LBA, BufferSize, Buffer, "UnixReadBlocks"); + Status = EmuBlockIoReadWriteCommon (Private, MediaId, LBA, BufferSize, Buffer, "UnixReadBlocks"); if (EFI_ERROR (Status)) { goto Done; } @@ -393,7 +383,7 @@ EmuBlockIoReadBlocks ( // If we read then media is present. // Private->Media->MediaPresent = TRUE; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; Done: if (Token != NULL) { @@ -403,10 +393,10 @@ Done: return EFI_SUCCESS; } } + return Status; } - /** Write BufferSize bytes from Lba into Buffer. @@ -448,14 +438,13 @@ EmuBlockIoWriteBlocks ( IN VOID *Buffer ) { - EMU_BLOCK_IO_PRIVATE *Private; - ssize_t len; - EFI_STATUS Status; - + EMU_BLOCK_IO_PRIVATE *Private; + ssize_t len; + EFI_STATUS Status; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); - Status = EmuBlockIoReadWriteCommon (Private, MediaId, LBA, BufferSize, Buffer, "UnixWriteBlocks"); + Status = EmuBlockIoReadWriteCommon (Private, MediaId, LBA, BufferSize, Buffer, "UnixWriteBlocks"); if (EFI_ERROR (Status)) { goto Done; } @@ -472,7 +461,7 @@ EmuBlockIoWriteBlocks ( // Private->Media->MediaPresent = TRUE; Private->Media->ReadOnly = FALSE; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; Done: if (Token != NULL) { @@ -486,7 +475,6 @@ Done: return Status; } - /** Flush the Block Device. @@ -511,22 +499,21 @@ Done: **/ EFI_STATUS EmuBlockIoFlushBlocks ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN OUT EFI_BLOCK_IO2_TOKEN *Token + IN EMU_BLOCK_IO_PROTOCOL *This, + IN OUT EFI_BLOCK_IO2_TOKEN *Token ) { - EMU_BLOCK_IO_PRIVATE *Private; + EMU_BLOCK_IO_PRIVATE *Private; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); if (Private->fd >= 0) { fsync (Private->fd); -#if __APPLE__ + #if __APPLE__ fcntl (Private->fd, F_FULLFSYNC); -#endif + #endif } - if (Token != NULL) { if (Token->Event != NULL) { // Caller is responsible for signaling EFI Event @@ -538,7 +525,6 @@ EmuBlockIoFlushBlocks ( return EFI_SUCCESS; } - /** Reset the block device hardware. @@ -554,11 +540,11 @@ EmuBlockIoFlushBlocks ( **/ EFI_STATUS EmuBlockIoReset ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - EMU_BLOCK_IO_PRIVATE *Private; + EMU_BLOCK_IO_PRIVATE *Private; Private = EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -570,17 +556,16 @@ EmuBlockIoReset ( return EFI_SUCCESS; } - char * StdDupUnicodeToAscii ( - IN CHAR16 *Str + IN CHAR16 *Str ) { - UINTN Size; - char *Ascii; - char *Ptr; + UINTN Size; + char *Ascii; + char *Ptr; - Size = StrLen (Str) + 1; + Size = StrLen (Str) + 1; Ascii = malloc (Size); if (Ascii == NULL) { return NULL; @@ -589,13 +574,13 @@ StdDupUnicodeToAscii ( for (Ptr = Ascii; *Str != '\0'; Ptr++, Str++) { *Ptr = *Str; } + *Ptr = 0; return Ascii; } - -EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = { +EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = { GasketEmuBlockIoReset, GasketEmuBlockIoReadBlocks, GasketEmuBlockIoWriteBlocks, @@ -605,7 +590,7 @@ EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = { EFI_STATUS EmuBlockIoThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_BLOCK_IO_PRIVATE *Private; @@ -624,7 +609,6 @@ EmuBlockIoThunkOpen ( return EFI_OUT_OF_RESOURCES; } - Private->Signature = EMU_BLOCK_IO_PRIVATE_SIGNATURE; Private->Thunk = This; CopyMem (&Private->EmuBlockIo, &gEmuBlockIoProtocol, sizeof (gEmuBlockIoProtocol)); @@ -642,12 +626,14 @@ EmuBlockIoThunkOpen ( Private->WriteProtected = FALSE; } else { for (*Str++ = '\0'; *Str != 0; Str++) { - if (*Str == 'R' || *Str == 'F') { - Private->RemovableMedia = (BOOLEAN) (*Str == 'R'); + if ((*Str == 'R') || (*Str == 'F')) { + Private->RemovableMedia = (BOOLEAN)(*Str == 'R'); } - if (*Str == 'O' || *Str == 'W') { - Private->WriteProtected = (BOOLEAN) (*Str == 'O'); + + if ((*Str == 'O') || (*Str == 'W')) { + Private->WriteProtected = (BOOLEAN)(*Str == 'O'); } + if (*Str == ':') { Private->BlockSize = strtol (++Str, NULL, 0); break; @@ -662,10 +648,9 @@ EmuBlockIoThunkOpen ( return EFI_SUCCESS; } - EFI_STATUS EmuBlockIoThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_BLOCK_IO_PRIVATE *Private; @@ -680,6 +665,7 @@ EmuBlockIoThunkClose ( if (Private->Filename != NULL) { free (Private->Filename); } + free (This->Private); This->Private = NULL; } @@ -687,9 +673,7 @@ EmuBlockIoThunkClose ( return EFI_SUCCESS; } - - -EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo = { +EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo = { &gEmuBlockIoProtocolGuid, NULL, NULL, diff --git a/EmulatorPkg/Unix/Host/EmuThunk.c b/EmulatorPkg/Unix/Host/EmuThunk.c index b8b0651c6a..6422f056a6 100644 --- a/EmulatorPkg/Unix/Host/EmuThunk.c +++ b/EmulatorPkg/Unix/Host/EmuThunk.c @@ -18,43 +18,41 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Host.h" #ifdef __APPLE__ -#define DebugAssert _Mangle__DebugAssert +#define DebugAssert _Mangle__DebugAssert -#include -#include -#include -#include + #include + #include + #include + #include -#undef DebugAssert + #undef DebugAssert #endif -int settimer_initialized; -struct timeval settimer_timeval; -UINTN settimer_callback = 0; - -BOOLEAN gEmulatorInterruptEnabled = FALSE; +int settimer_initialized; +struct timeval settimer_timeval; +UINTN settimer_callback = 0; +BOOLEAN gEmulatorInterruptEnabled = FALSE; UINTN SecWriteStdErr ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - ssize_t Return; + ssize_t Return; Return = write (STDERR_FILENO, (const void *)Buffer, (size_t)NumberOfBytes); return (Return == -1) ? 0 : Return; } - EFI_STATUS SecConfigStdIn ( VOID ) { - struct termios tty; + struct termios tty; // // Need to turn off line buffering, ECHO, and make it unbuffered. @@ -63,7 +61,7 @@ SecConfigStdIn ( tty.c_lflag &= ~(ICANON | ECHO); tcsetattr (STDIN_FILENO, TCSANOW, &tty); -// setvbuf (STDIN_FILENO, NULL, _IONBF, 0); + // setvbuf (STDIN_FILENO, NULL, _IONBF, 0); // now ioctl FIONREAD will do what we need return EFI_SUCCESS; @@ -71,11 +69,11 @@ SecConfigStdIn ( UINTN SecWriteStdOut ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - ssize_t Return; + ssize_t Return; Return = write (STDOUT_FILENO, (const void *)Buffer, (size_t)NumberOfBytes); @@ -84,11 +82,11 @@ SecWriteStdOut ( UINTN SecReadStdIn ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - ssize_t Return; + ssize_t Return; Return = read (STDIN_FILENO, Buffer, (size_t)NumberOfBytes); @@ -100,8 +98,8 @@ SecPollStdIn ( VOID ) { - int Result; - int Bytes; + int Result; + int Bytes; Result = ioctl (STDIN_FILENO, FIONREAD, &Bytes); if (Result == -1) { @@ -111,10 +109,9 @@ SecPollStdIn ( return (BOOLEAN)(Bytes > 0); } - VOID * SecMalloc ( - IN UINTN Size + IN UINTN Size ) { return malloc ((size_t)Size); @@ -122,7 +119,7 @@ SecMalloc ( VOID * SecValloc ( - IN UINTN Size + IN UINTN Size ) { return valloc ((size_t)Size); @@ -130,7 +127,7 @@ SecValloc ( BOOLEAN SecFree ( - IN VOID *Ptr + IN VOID *Ptr ) { if (EfiSystemMemoryRange (Ptr)) { @@ -143,17 +140,18 @@ SecFree ( return TRUE; } - void -settimer_handler (int sig) +settimer_handler ( + int sig + ) { - struct timeval timeval; - UINT64 delta; + struct timeval timeval; + UINT64 delta; gettimeofday (&timeval, NULL); delta = ((UINT64)timeval.tv_sec * 1000) + (timeval.tv_usec / 1000) - - ((UINT64)settimer_timeval.tv_sec * 1000) - - (settimer_timeval.tv_usec / 1000); + - ((UINT64)settimer_timeval.tv_sec * 1000) + - (settimer_timeval.tv_usec / 1000); settimer_timeval = timeval; if (settimer_callback) { @@ -167,37 +165,39 @@ SecSetTimer ( IN EMU_SET_TIMER_CALLBACK CallBack ) { - struct itimerval timerval; - UINT32 remainder; + struct itimerval timerval; + UINT32 remainder; if (!settimer_initialized) { - struct sigaction act; + struct sigaction act; settimer_initialized = 1; - act.sa_handler = settimer_handler; - act.sa_flags = 0; + act.sa_handler = settimer_handler; + act.sa_flags = 0; sigemptyset (&act.sa_mask); gEmulatorInterruptEnabled = TRUE; if (sigaction (SIGALRM, &act, NULL) != 0) { printf ("SetTimer: sigaction error %s\n", strerror (errno)); } + if (gettimeofday (&settimer_timeval, NULL) != 0) { printf ("SetTimer: gettimeofday error %s\n", strerror (errno)); } } - timerval.it_value.tv_sec = DivU64x32(PeriodMs, 1000); - DivU64x32Remainder(PeriodMs, 1000, &remainder); + + timerval.it_value.tv_sec = DivU64x32 (PeriodMs, 1000); + DivU64x32Remainder (PeriodMs, 1000, &remainder); timerval.it_value.tv_usec = remainder * 1000; - timerval.it_value.tv_sec = DivU64x32(PeriodMs, 1000); - timerval.it_interval = timerval.it_value; + timerval.it_value.tv_sec = DivU64x32 (PeriodMs, 1000); + timerval.it_interval = timerval.it_value; if (setitimer (ITIMER_REAL, &timerval, NULL) != 0) { printf ("SetTimer: setitimer error %s\n", strerror (errno)); } + settimer_callback = (UINTN)CallBack; } - VOID SecEnableInterrupt ( VOID @@ -213,7 +213,6 @@ SecEnableInterrupt ( pthread_sigmask (SIG_UNBLOCK, &sigset, NULL); } - VOID SecDisableInterrupt ( VOID @@ -229,14 +228,14 @@ SecDisableInterrupt ( gEmulatorInterruptEnabled = FALSE; } - BOOLEAN -SecInterruptEanbled (void) +SecInterruptEanbled ( + void + ) { return gEmulatorInterruptEnabled; } - UINT64 QueryPerformanceFrequency ( VOID @@ -251,10 +250,9 @@ QueryPerformanceCounter ( VOID ) { -#if __APPLE__ - UINT64 Start; - static mach_timebase_info_data_t sTimebaseInfo; - + #if __APPLE__ + UINT64 Start; + static mach_timebase_info_data_t sTimebaseInfo; Start = mach_absolute_time (); @@ -266,29 +264,27 @@ QueryPerformanceCounter ( // denominator is a fraction. if ( sTimebaseInfo.denom == 0 ) { - (void) mach_timebase_info(&sTimebaseInfo); + (void)mach_timebase_info (&sTimebaseInfo); } // Do the maths. We hope that the multiplication doesn't // overflow; the price you pay for working in fixed point. return (Start * sTimebaseInfo.numer) / sTimebaseInfo.denom; -#else + #else // Need to figure out what to do for Linux? return 0; -#endif + #endif } - - VOID SecSleep ( - IN UINT64 Nanoseconds + IN UINT64 Nanoseconds ) { - struct timespec rq, rm; - struct timeval start, end; - unsigned long MicroSec; + struct timespec rq, rm; + struct timeval start, end; + unsigned long MicroSec; rq.tv_sec = DivU64x32 (Nanoseconds, 1000000000); rq.tv_nsec = ModU64x32 (Nanoseconds, 1000000000); @@ -299,7 +295,7 @@ SecSleep ( // gettimeofday (&start, NULL); end.tv_sec = start.tv_sec + rq.tv_sec; - MicroSec = (start.tv_usec + rq.tv_nsec/1000); + MicroSec = (start.tv_usec + rq.tv_nsec/1000); end.tv_usec = MicroSec % 1000000; if (MicroSec > 1000000) { end.tv_sec++; @@ -309,23 +305,26 @@ SecSleep ( if (errno != EINTR) { break; } + gettimeofday (&start, NULL); if (start.tv_sec > end.tv_sec) { break; - } if ((start.tv_sec == end.tv_sec) && (start.tv_usec > end.tv_usec)) { + } + + if ((start.tv_sec == end.tv_sec) && (start.tv_usec > end.tv_usec)) { break; } + rq = rm; } } - VOID SecCpuSleep ( VOID ) { - struct timespec rq, rm; + struct timespec rq, rm; // nanosleep gets interrupted by the timer tic rq.tv_sec = 1; @@ -334,51 +333,47 @@ SecCpuSleep ( nanosleep (&rq, &rm); } - VOID SecExit ( - UINTN Status + UINTN Status ) { exit (Status); } - VOID SecGetTime ( - OUT EFI_TIME *Time, - OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL ) { - struct tm *tm; - time_t t; + struct tm *tm; + time_t t; - t = time (NULL); + t = time (NULL); tm = localtime (&t); - Time->Year = 1900 + tm->tm_year; - Time->Month = tm->tm_mon + 1; - Time->Day = tm->tm_mday; - Time->Hour = tm->tm_hour; - Time->Minute = tm->tm_min; - Time->Second = tm->tm_sec; + Time->Year = 1900 + tm->tm_year; + Time->Month = tm->tm_mon + 1; + Time->Day = tm->tm_mday; + Time->Hour = tm->tm_hour; + Time->Minute = tm->tm_min; + Time->Second = tm->tm_sec; Time->Nanosecond = 0; - Time->TimeZone = timezone / 60; - Time->Daylight = (daylight ? EFI_TIME_ADJUST_DAYLIGHT : 0) - | (tm->tm_isdst > 0 ? EFI_TIME_IN_DAYLIGHT : 0); + Time->TimeZone = timezone / 60; + Time->Daylight = (daylight ? EFI_TIME_ADJUST_DAYLIGHT : 0) + | (tm->tm_isdst > 0 ? EFI_TIME_IN_DAYLIGHT : 0); if (Capabilities != NULL) { - Capabilities->Resolution = 1; - Capabilities->Accuracy = 50000000; - Capabilities->SetsToZero = FALSE; + Capabilities->Resolution = 1; + Capabilities->Accuracy = 50000000; + Capabilities->SetsToZero = FALSE; } } - - VOID SecSetTime ( - IN EFI_TIME *Time + IN EFI_TIME *Time ) { // Don't change the time on the system @@ -386,18 +381,16 @@ SecSetTime ( return; } - EFI_STATUS SecGetNextProtocol ( - IN BOOLEAN EmuBusDriver, - OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL + IN BOOLEAN EmuBusDriver, + OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL ) { return GetNextThunkProtocol (EmuBusDriver, Instance); } - -EMU_THUNK_PROTOCOL gEmuThunkProtocol = { +EMU_THUNK_PROTOCOL gEmuThunkProtocol = { GasketSecWriteStdErr, GasketSecConfigStdIn, GasketSecWriteStdOut, @@ -422,7 +415,6 @@ EMU_THUNK_PROTOCOL gEmuThunkProtocol = { GasketSecGetNextProtocol }; - VOID SecInitThunkProtocol ( VOID @@ -431,4 +423,3 @@ SecInitThunkProtocol ( // timezone and daylight lib globals depend on tzset be called 1st. tzset (); } - diff --git a/EmulatorPkg/Unix/Host/Gasket.h b/EmulatorPkg/Unix/Host/Gasket.h index e082397d23..6dafc903cf 100644 --- a/EmulatorPkg/Unix/Host/Gasket.h +++ b/EmulatorPkg/Unix/Host/Gasket.h @@ -17,8 +17,8 @@ UINTN EFIAPI GasketSecWriteStdErr ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ); EFI_STATUS @@ -30,15 +30,15 @@ GasketSecConfigStdIn ( UINTN EFIAPI GasketSecWriteStdOut ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ); UINTN EFIAPI GasketSecReadStdIn ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ); BOOLEAN @@ -50,22 +50,21 @@ GasketSecPollStdIn ( VOID * EFIAPI GasketSecMalloc ( - IN UINTN Size + IN UINTN Size ); VOID * EFIAPI GasketSecValloc ( - IN UINTN Size + IN UINTN Size ); BOOLEAN EFIAPI GasketSecFree ( - IN VOID *Ptr + IN VOID *Ptr ); - RETURN_STATUS EFIAPI GasketSecPeCoffGetEntryPoint ( @@ -116,11 +115,10 @@ GasketQueryPerformanceCounter ( VOID ); - VOID EFIAPI GasketSecSleep ( - IN UINT64 Nanoseconds + IN UINT64 Nanoseconds ); VOID @@ -132,33 +130,31 @@ GasketSecCpuSleep ( VOID EFIAPI GasketSecExit ( - UINTN Status + UINTN Status ); VOID EFIAPI GasketSecGetTime ( - OUT EFI_TIME *Time, - OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL ); VOID EFIAPI GasketSecSetTime ( - IN EFI_TIME *Time + IN EFI_TIME *Time ); EFI_STATUS EFIAPI GasketSecGetNextProtocol ( - IN BOOLEAN EmuBusDriver, - OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL + IN BOOLEAN EmuBusDriver, + OUT EMU_IO_THUNK_PROTOCOL **Instance OPTIONAL ); - // PPIs produced by SEC - EFI_STATUS EFIAPI GasketSecUnixPeiAutoScan ( @@ -173,7 +169,6 @@ GasketSecEmuThunkAddress ( VOID ); - EFI_STATUS EFIAPI GasketSecUnixUnixFwhAddress ( @@ -181,55 +176,52 @@ GasketSecUnixUnixFwhAddress ( IN OUT EFI_PHYSICAL_ADDRESS *FwhBase ); - - // // Reverse (UNIX to EFIAPI) gaskets // typedef void -(EFIAPI *CALL_BACK) ( +(EFIAPI *CALL_BACK)( UINT64 Delta ); UINTN ReverseGasketUint64 ( - UINTN CallBack, - UINT64 a + UINTN CallBack, + UINT64 a ); UINTN ReverseGasketUint64Uint64 ( - VOID *CallBack, - VOID *Context, - VOID *Key + VOID *CallBack, + VOID *Context, + VOID *Key ); // // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL // - EFI_STATUS EFIAPI GasketX11Size ( - EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, - UINT32 Width, - UINT32 Height + EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, + UINT32 Width, + UINT32 Height ); EFI_STATUS EFIAPI GasketX11CheckKey ( - EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo + EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo ); EFI_STATUS EFIAPI GasketX11GetKey ( - EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, - EFI_KEY_DATA *key + EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, + EFI_KEY_DATA *key ); EFI_STATUS @@ -242,45 +234,44 @@ GasketX11KeySetState ( EFI_STATUS EFIAPI GasketX11RegisterKeyNotify ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, - IN VOID *Context + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, + IN VOID *Context ); - EFI_STATUS EFIAPI GasketX11Blt ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, - IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, - IN EFI_UGA_BLT_OPERATION BltOperation, - IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, + IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, + IN EFI_UGA_BLT_OPERATION BltOperation, + IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args ); EFI_STATUS EFIAPI GasketX11CheckPointer ( - EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo + EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo ); EFI_STATUS EFIAPI GasketX11GetPointerState ( - EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, - EFI_SIMPLE_POINTER_STATE *state + EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindowsIo, + EFI_SIMPLE_POINTER_STATE *state ); EFI_STATUS EFIAPI GasketX11GraphicsWindowOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketX11GraphicsWindowClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); // Pthreads @@ -288,55 +279,48 @@ GasketX11GraphicsWindowClose ( UINTN EFIAPI GasketPthreadMutexLock ( - IN VOID *Mutex + IN VOID *Mutex ); - - UINTN EFIAPI GasketPthreadMutexUnLock ( - IN VOID *Mutex + IN VOID *Mutex ); - UINTN EFIAPI GasketPthreadMutexTryLock ( - IN VOID *Mutex + IN VOID *Mutex ); - VOID * EFIAPI GasketPthreadMutexInit ( IN VOID ); - UINTN EFIAPI GasketPthreadMutexDestroy ( - IN VOID *Mutex + IN VOID *Mutex ); - UINTN EFIAPI GasketPthreadCreate ( - IN VOID *Thread, - IN VOID *Attribute, - IN THREAD_THUNK_THREAD_ENTRY Start, - IN VOID *Context + IN VOID *Thread, + IN VOID *Attribute, + IN THREAD_THUNK_THREAD_ENTRY Start, + IN VOID *Context ); VOID EFIAPI GasketPthreadExit ( - IN VOID *ValuePtr + IN VOID *ValuePtr ); - UINTN EFIAPI GasketPthreadSelf ( @@ -346,33 +330,32 @@ GasketPthreadSelf ( EFI_STATUS EFIAPI GasketPthreadOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketPthreadClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); - // PosixFileSystem EFI_STATUS EFIAPI GasketPosixOpenVolume ( - IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **Root + IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **Root ); EFI_STATUS EFIAPI GasketPosixFileOpen ( - IN EFI_FILE_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes + IN EFI_FILE_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **NewHandle, + IN CHAR16 *FileName, + IN UINT64 OpenMode, + IN UINT64 Attributes ); EFI_STATUS @@ -390,49 +373,49 @@ GasketPosixFileDelete ( EFI_STATUS EFIAPI GasketPosixFileRead ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ); EFI_STATUS EFIAPI GasketPosixFileWrite ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN OUT UINTN *BufferSize, + IN VOID *Buffer ); EFI_STATUS EFIAPI GasketPosixFileSetPossition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position + IN EFI_FILE_PROTOCOL *This, + IN UINT64 Position ); EFI_STATUS EFIAPI GasketPosixFileGetPossition ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position + IN EFI_FILE_PROTOCOL *This, + OUT UINT64 *Position ); EFI_STATUS EFIAPI GasketPosixFileGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ); EFI_STATUS EFIAPI GasketPosixFileSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN UINTN BufferSize, + IN VOID *Buffer ); EFI_STATUS @@ -444,20 +427,20 @@ GasketPosixFileFlush ( EFI_STATUS EFIAPI GasketPosixFileSystmeThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketPosixFileSystmeThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketEmuBlockIoReset ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ); EFI_STATUS @@ -468,7 +451,7 @@ GasketEmuBlockIoReadBlocks ( IN EFI_LBA LBA, IN OUT EFI_BLOCK_IO2_TOKEN *Token, IN UINTN BufferSize, - OUT VOID *Buffer + OUT VOID *Buffer ); EFI_STATUS @@ -485,39 +468,39 @@ GasketEmuBlockIoWriteBlocks ( EFI_STATUS EFIAPI GasketEmuBlockIoFlushBlocks ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN OUT EFI_BLOCK_IO2_TOKEN *Token + IN EMU_BLOCK_IO_PROTOCOL *This, + IN OUT EFI_BLOCK_IO2_TOKEN *Token ); EFI_STATUS EFIAPI GasketEmuBlockIoCreateMapping ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN EFI_BLOCK_IO_MEDIA *Media + IN EMU_BLOCK_IO_PROTOCOL *This, + IN EFI_BLOCK_IO_MEDIA *Media ); EFI_STATUS EFIAPI GasketBlockIoThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketBlockIoThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketSnpThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS EFIAPI GasketSnpThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ); EFI_STATUS @@ -542,16 +525,16 @@ GasketSnpStop ( EFI_STATUS EFIAPI GasketSnpInitialize ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ); EFI_STATUS EFIAPI GasketSnpReset ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ); EFI_STATUS @@ -563,83 +546,80 @@ GasketSnpShutdown ( EFI_STATUS EFIAPI GasketSnpReceiveFilters ( - IN EMU_SNP_PROTOCOL *This, - IN UINT32 Enable, - IN UINT32 Disable, - IN BOOLEAN ResetMCastFilter, - IN UINTN MCastFilterCnt OPTIONAL, - IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINT32 Enable, + IN UINT32 Disable, + IN BOOLEAN ResetMCastFilter, + IN UINTN MCastFilterCnt OPTIONAL, + IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ); EFI_STATUS EFIAPI GasketSnpStationAddress ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *New OPTIONAL ); EFI_STATUS EFIAPI GasketSnpStatistics ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ); EFI_STATUS EFIAPI GasketSnpMCastIpToMac ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - OUT EFI_MAC_ADDRESS *MAC + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ); EFI_STATUS EFIAPI GasketSnpNvData ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ReadWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ReadWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ); EFI_STATUS EFIAPI GasketSnpGetStatus ( - IN EMU_SNP_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINT32 *InterruptStatus OPTIONAL, + OUT VOID **TxBuf OPTIONAL ); EFI_STATUS EFIAPI GasketSnpTransmit ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ); EFI_STATUS EFIAPI GasketSnpReceive ( - IN EMU_SNP_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ); - #endif - - diff --git a/EmulatorPkg/Unix/Host/Host.c b/EmulatorPkg/Unix/Host/Host.c index b4e5510613..38c01c84af 100644 --- a/EmulatorPkg/Unix/Host/Host.c +++ b/EmulatorPkg/Unix/Host/Host.c @@ -9,23 +9,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Host.h" #ifdef __APPLE__ -#define MAP_ANONYMOUS MAP_ANON +#define MAP_ANONYMOUS MAP_ANON #endif - // // Globals // -EMU_THUNK_PPI mSecEmuThunkPpi = { +EMU_THUNK_PPI mSecEmuThunkPpi = { GasketSecUnixPeiAutoScan, GasketSecUnixFdAddress, GasketSecEmuThunkAddress }; -char *gGdbWorkingFileName = NULL; -unsigned int mScriptSymbolChangesCount = 0; - +char *gGdbWorkingFileName = NULL; +unsigned int mScriptSymbolChangesCount = 0; // // Default information about where the FD is located. @@ -34,8 +32,8 @@ unsigned int mScriptSymbolChangesCount = 0; // The number of array elements is allocated base on parsing // EFI_FIRMWARE_VOLUMES and the memory is never freed. // -UINTN gFdInfoCount = 0; -EMU_FD_INFO *gFdInfo; +UINTN gFdInfoCount = 0; +EMU_FD_INFO *gFdInfo; // // Array that supports separate memory ranges. @@ -46,16 +44,12 @@ EMU_FD_INFO *gFdInfo; UINTN gSystemMemoryCount = 0; EMU_SYSTEM_MEMORY *gSystemMemory; - - UINTN mImageContextModHandleArraySize = 0; -IMAGE_CONTEXT_TO_MOD_HANDLE *mImageContextModHandleArray = NULL; +IMAGE_CONTEXT_TO_MOD_HANDLE *mImageContextModHandleArray = NULL; EFI_PEI_PPI_DESCRIPTOR *gPpiList; - -int gInXcode = 0; - +int gInXcode = 0; /*++ Breakpoint target for Xcode project. Set in the Xcode XML @@ -71,8 +65,6 @@ SecGdbConfigBreak ( { } - - /*++ Routine Description: @@ -121,8 +113,8 @@ main ( // If dlopen doesn't work, then we build a gdb script to allow the // symbols to be loaded. // - Index = strlen (*Argv); - gGdbWorkingFileName = AllocatePool (Index + strlen(".gdb") + 1); + Index = strlen (*Argv); + gGdbWorkingFileName = AllocatePool (Index + strlen (".gdb") + 1); strcpy (gGdbWorkingFileName, *Argv); strcat (gGdbWorkingFileName, ".gdb"); @@ -139,8 +131,8 @@ main ( setbuf (stdout, 0); setbuf (stderr, 0); - MemorySizeStr = (CHAR16 *) PcdGetPtr (PcdEmuMemorySize); - FirmwareVolumesStr = (CHAR16 *) PcdGetPtr (PcdEmuFirmwareVolume); + MemorySizeStr = (CHAR16 *)PcdGetPtr (PcdEmuMemorySize); + FirmwareVolumesStr = (CHAR16 *)PcdGetPtr (PcdEmuFirmwareVolume); // // PPIs pased into PEI_CORE @@ -169,17 +161,18 @@ main ( // // Allocate space for gSystemMemory Array // - gSystemMemoryCount = CountSeparatorsInString (MemorySizeStr, '!') + 1; - gSystemMemory = AllocateZeroPool (gSystemMemoryCount * sizeof (EMU_SYSTEM_MEMORY)); + gSystemMemoryCount = CountSeparatorsInString (MemorySizeStr, '!') + 1; + gSystemMemory = AllocateZeroPool (gSystemMemoryCount * sizeof (EMU_SYSTEM_MEMORY)); if (gSystemMemory == NULL) { printf ("ERROR : Can not allocate memory for system. Exiting.\n"); exit (1); } + // // Allocate space for gSystemMemory Array // - gFdInfoCount = CountSeparatorsInString (FirmwareVolumesStr, '!') + 1; - gFdInfo = AllocateZeroPool (gFdInfoCount * sizeof (EMU_FD_INFO)); + gFdInfoCount = CountSeparatorsInString (FirmwareVolumesStr, '!') + 1; + gFdInfo = AllocateZeroPool (gFdInfoCount * sizeof (EMU_FD_INFO)); if (gFdInfo == NULL) { printf ("ERROR : Can not allocate memory for fd info. Exiting.\n"); exit (1); @@ -192,31 +185,35 @@ main ( // on a real platform this would be SRAM, or using the cache as RAM. // Set InitialStackMemory to zero so UnixOpenFile will allocate a new mapping // - InitialStackMemorySize = STACK_SIZE; - InitialStackMemory = (UINTN)MapMemory ( - 0, (UINT32) InitialStackMemorySize, - PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE - ); + InitialStackMemorySize = STACK_SIZE; + InitialStackMemory = (UINTN)MapMemory ( + 0, + (UINT32)InitialStackMemorySize, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_ANONYMOUS | MAP_PRIVATE + ); if (InitialStackMemory == 0) { printf ("ERROR : Can not open SecStack Exiting\n"); exit (1); } - printf (" OS Emulator passing in %u KB of temp RAM at 0x%08lx to SEC\n", + printf ( + " OS Emulator passing in %u KB of temp RAM at 0x%08lx to SEC\n", (unsigned int)(InitialStackMemorySize / 1024), (unsigned long)InitialStackMemory ); - for (StackPointer = (UINTN*) (UINTN) InitialStackMemory; - StackPointer < (UINTN*)(UINTN)((UINTN) InitialStackMemory + (UINT64) InitialStackMemorySize); - StackPointer ++) { + for (StackPointer = (UINTN *)(UINTN)InitialStackMemory; + StackPointer < (UINTN *)(UINTN)((UINTN)InitialStackMemory + (UINT64)InitialStackMemorySize); + StackPointer++) + { *StackPointer = 0x5AA55AA5; } // // Open All the firmware volumes and remember the info in the gFdInfo global // - FileName = (CHAR8 *) AllocatePool (StrLen (FirmwareVolumesStr) + 1); + FileName = (CHAR8 *)AllocatePool (StrLen (FirmwareVolumesStr) + 1); if (FileName == NULL) { printf ("ERROR : Can not allocate memory for firmware volume string\n"); exit (1); @@ -225,39 +222,43 @@ main ( Index2 = 0; for (Done = FALSE, Index = 0, PeiIndex = 0, SecFile = NULL; FirmwareVolumesStr[Index2] != 0; - Index++) { + Index++) + { for (Index1 = 0; (FirmwareVolumesStr[Index2] != '!') && (FirmwareVolumesStr[Index2] != 0); Index2++) { FileName[Index1++] = FirmwareVolumesStr[Index2]; } + if (FirmwareVolumesStr[Index2] == '!') { Index2++; } - FileName[Index1] = '\0'; + + FileName[Index1] = '\0'; if (Index == 0) { // Map FV Recovery Read Only and other areas Read/Write Status = MapFd0 ( - FileName, - &gFdInfo[0].Address, - &gFdInfo[0].Size - ); + FileName, + &gFdInfo[0].Address, + &gFdInfo[0].Size + ); } else { // // Open the FD and remember where it got mapped into our processes address space // Maps Read Only // Status = MapFile ( - FileName, - &gFdInfo[Index].Address, - &gFdInfo[Index].Size - ); + FileName, + &gFdInfo[Index].Address, + &gFdInfo[Index].Size + ); } + if (EFI_ERROR (Status)) { printf ("ERROR : Can not open Firmware Device File %s (%x). Exiting.\n", FileName, (unsigned int)Status); exit (1); } - printf (" FD loaded from %s at 0x%08lx",FileName, (unsigned long)gFdInfo[Index].Address); + printf (" FD loaded from %s at 0x%08lx", FileName, (unsigned long)gFdInfo[Index].Address); if (SecFile == NULL) { // @@ -265,11 +266,11 @@ main ( // Load the first one we find. // FileHandle = NULL; - Status = PeiServicesFfsFindNextFile ( - EFI_FV_FILETYPE_SECURITY_CORE, - (EFI_PEI_FV_HANDLE)(UINTN)gFdInfo[Index].Address, - &FileHandle - ); + Status = PeiServicesFfsFindNextFile ( + EFI_FV_FILETYPE_SECURITY_CORE, + (EFI_PEI_FV_HANDLE)(UINTN)gFdInfo[Index].Address, + &FileHandle + ); if (!EFI_ERROR (Status)) { Status = PeiServicesFfsFindSectionData (EFI_SECTION_PE32, FileHandle, &SecFile); if (!EFI_ERROR (Status)) { @@ -293,9 +294,9 @@ main ( // map this memory into the SEC process memory space. // Index1 = 0; - Index = 0; + Index = 0; while (1) { - UINTN val = 0; + UINTN val = 0; // // Save the size of the memory. // @@ -303,10 +304,12 @@ main ( val = val * 10 + MemorySizeStr[Index1] - '0'; Index1++; } + gSystemMemory[Index++].Size = val * 0x100000; if (MemorySizeStr[Index1] == 0) { break; } + Index1++; } @@ -315,7 +318,7 @@ main ( // // Hand off to SEC // - SecLoadFromCore ((UINTN) InitialStackMemory, (UINTN) InitialStackMemorySize, (UINTN) gFdInfo[0].Address, SecFile); + SecLoadFromCore ((UINTN)InitialStackMemory, (UINTN)InitialStackMemorySize, (UINTN)gFdInfo[0].Address, SecFile); // // If we get here, then the SEC Core returned. This is an error as SEC should @@ -325,40 +328,40 @@ main ( exit (1); } - EFI_PHYSICAL_ADDRESS * MapMemory ( - IN INTN fd, - IN UINT64 length, - IN INTN prot, - IN INTN flags + IN INTN fd, + IN UINT64 length, + IN INTN prot, + IN INTN flags ) { - STATIC UINTN base = 0x40000000; - CONST UINTN align = (1 << 24); - VOID *res = NULL; - BOOLEAN isAligned = 0; + STATIC UINTN base = 0x40000000; + CONST UINTN align = (1 << 24); + VOID *res = NULL; + BOOLEAN isAligned = 0; // // Try to get an aligned block somewhere in the address space of this // process. // - while((!isAligned) && (base != 0)) { + while ((!isAligned) && (base != 0)) { res = mmap ((void *)base, length, prot, flags, fd, 0); if (res == MAP_FAILED) { return NULL; } + if ((((UINTN)res) & ~(align-1)) == (UINTN)res) { - isAligned=1; + isAligned = 1; } else { - munmap(res, length); + munmap (res, length); base += align; } } + return res; } - /*++ Routine Description: @@ -389,16 +392,16 @@ MapFile ( OUT UINT64 *Length ) { - int fd; - VOID *res; - UINTN FileSize; + int fd; + VOID *res; + UINTN FileSize; fd = open (FileName, O_RDWR); if (fd < 0) { return EFI_NOT_FOUND; } - FileSize = lseek (fd, 0, SEEK_END); + FileSize = lseek (fd, 0, SEEK_END); res = MapMemory (fd, FileSize, PROT_READ | PROT_EXEC, MAP_PRIVATE); @@ -409,8 +412,8 @@ MapFile ( return EFI_DEVICE_ERROR; } - *Length = (UINT64) FileSize; - *BaseAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) res; + *Length = (UINT64)FileSize; + *BaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)res; return EFI_SUCCESS; } @@ -422,16 +425,17 @@ MapFd0 ( OUT UINT64 *Length ) { - int fd; - void *res, *res2, *res3; - UINTN FileSize; - UINTN FvSize; - void *EmuMagicPage; + int fd; + void *res, *res2, *res3; + UINTN FileSize; + UINTN FvSize; + void *EmuMagicPage; fd = open (FileName, O_RDWR); if (fd < 0) { return EFI_NOT_FOUND; } + FileSize = lseek (fd, 0, SEEK_END); FvSize = FixedPcdGet64 (PcdEmuFlashFvRecoverySize); @@ -469,13 +473,13 @@ MapFd0 ( // Map the rest of the FD as read/write res2 = mmap ( - (void *)(UINTN)(FixedPcdGet64 (PcdEmuFlashFvRecoveryBase) + FvSize), - FileSize - FvSize, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_SHARED, - fd, - FvSize - ); + (void *)(UINTN)(FixedPcdGet64 (PcdEmuFlashFvRecoveryBase) + FvSize), + FileSize - FvSize, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_SHARED, + fd, + FvSize + ); close (fd); if (res2 == MAP_FAILED) { perror ("MapFd0() Failed res2 ="); @@ -504,13 +508,12 @@ MapFd0 ( } } - *Length = (UINT64) FileSize; - *BaseAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) res; + *Length = (UINT64)FileSize; + *BaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)res; return EFI_SUCCESS; } - /*++ Routine Description: @@ -528,24 +531,24 @@ Returns: **/ VOID SecLoadFromCore ( - IN UINTN LargestRegion, - IN UINTN LargestRegionSize, - IN UINTN BootFirmwareVolumeBase, - IN VOID *PeiCorePe32File + IN UINTN LargestRegion, + IN UINTN LargestRegionSize, + IN UINTN BootFirmwareVolumeBase, + IN VOID *PeiCorePe32File ) { - EFI_STATUS Status; - EFI_PHYSICAL_ADDRESS TopOfMemory; - VOID *TopOfStack; - EFI_PHYSICAL_ADDRESS PeiCoreEntryPoint; - EFI_SEC_PEI_HAND_OFF *SecCoreData; - UINTN PeiStackSize; + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS TopOfMemory; + VOID *TopOfStack; + EFI_PHYSICAL_ADDRESS PeiCoreEntryPoint; + EFI_SEC_PEI_HAND_OFF *SecCoreData; + UINTN PeiStackSize; // // Compute Top Of Memory for Stack and PEI Core Allocations // TopOfMemory = LargestRegion + LargestRegionSize; - PeiStackSize = (UINTN)RShiftU64((UINT64)STACK_SIZE,1); + PeiStackSize = (UINTN)RShiftU64 ((UINT64)STACK_SIZE, 1); // // |-----------| <---- TemporaryRamBase + TemporaryRamSize @@ -562,22 +565,21 @@ SecLoadFromCore ( // // Reservet space for storing PeiCore's parament in stack. // - TopOfStack = (VOID *)((UINTN)TopOfStack - sizeof (EFI_SEC_PEI_HAND_OFF) - CPU_STACK_ALIGNMENT); - TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); - + TopOfStack = (VOID *)((UINTN)TopOfStack - sizeof (EFI_SEC_PEI_HAND_OFF) - CPU_STACK_ALIGNMENT); + TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); // // Bind this information into the SEC hand-off state // - SecCoreData = (EFI_SEC_PEI_HAND_OFF*)(UINTN) TopOfStack; - SecCoreData->DataSize = sizeof(EFI_SEC_PEI_HAND_OFF); - SecCoreData->BootFirmwareVolumeBase = (VOID*)BootFirmwareVolumeBase; + SecCoreData = (EFI_SEC_PEI_HAND_OFF *)(UINTN)TopOfStack; + SecCoreData->DataSize = sizeof (EFI_SEC_PEI_HAND_OFF); + SecCoreData->BootFirmwareVolumeBase = (VOID *)BootFirmwareVolumeBase; SecCoreData->BootFirmwareVolumeSize = PcdGet32 (PcdEmuFirmwareFdSize); - SecCoreData->TemporaryRamBase = (VOID*)(UINTN)LargestRegion; + SecCoreData->TemporaryRamBase = (VOID *)(UINTN)LargestRegion; SecCoreData->TemporaryRamSize = STACK_SIZE; SecCoreData->StackBase = SecCoreData->TemporaryRamBase; SecCoreData->StackSize = PeiStackSize; - SecCoreData->PeiTemporaryRamBase = (VOID*) ((UINTN) SecCoreData->TemporaryRamBase + PeiStackSize); + SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->TemporaryRamBase + PeiStackSize); SecCoreData->PeiTemporaryRamSize = STACK_SIZE - PeiStackSize; // @@ -585,14 +587,14 @@ SecLoadFromCore ( // Status = SecPeCoffGetEntryPoint (PeiCorePe32File, (VOID **)&PeiCoreEntryPoint); if (EFI_ERROR (Status)) { - return ; + return; } // // Transfer control to the SEC Core // PeiSwitchStacks ( - (SWITCH_STACK_ENTRY_POINT) (UINTN) PeiCoreEntryPoint, + (SWITCH_STACK_ENTRY_POINT)(UINTN)PeiCoreEntryPoint, SecCoreData, (VOID *)gPpiList, TopOfStack @@ -600,10 +602,9 @@ SecLoadFromCore ( // // If we get here, then the SEC Core returned. This is an error // - return ; + return; } - /*++ Routine Description: @@ -631,29 +632,30 @@ SecUnixPeiAutoScan ( OUT UINT64 *MemorySize ) { - void *res; + void *res; if (Index >= gSystemMemoryCount) { return EFI_UNSUPPORTED; } *MemoryBase = 0; - res = MapMemory ( - 0, gSystemMemory[Index].Size, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_PRIVATE | MAP_ANONYMOUS - ); + res = MapMemory ( + 0, + gSystemMemory[Index].Size, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS + ); if (res == MAP_FAILED) { return EFI_DEVICE_ERROR; } - *MemorySize = gSystemMemory[Index].Size; - *MemoryBase = (UINTN)res; + + *MemorySize = gSystemMemory[Index].Size; + *MemoryBase = (UINTN)res; gSystemMemory[Index].Memory = *MemoryBase; return EFI_SUCCESS; } - /*++ Routine Description: @@ -675,7 +677,7 @@ Returns: **/ BOOLEAN EfiSystemMemoryRange ( - IN VOID *MemoryAddress + IN VOID *MemoryAddress ) { UINTN Index; @@ -684,7 +686,8 @@ EfiSystemMemoryRange ( MemoryBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MemoryAddress; for (Index = 0; Index < gSystemMemoryCount; Index++) { if ((MemoryBase >= gSystemMemory[Index].Memory) && - (MemoryBase < (gSystemMemory[Index].Memory + gSystemMemory[Index].Size)) ) { + (MemoryBase < (gSystemMemory[Index].Memory + gSystemMemory[Index].Size))) + { return TRUE; } } @@ -692,7 +695,6 @@ EfiSystemMemoryRange ( return FALSE; } - /*++ Routine Description: @@ -715,8 +717,6 @@ SecEmuThunkAddress ( return &gEmuThunkProtocol; } - - RETURN_STATUS EFIAPI SecPeCoffGetEntryPoint ( @@ -728,10 +728,10 @@ SecPeCoffGetEntryPoint ( PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; ZeroMem (&ImageContext, sizeof (ImageContext)); - ImageContext.Handle = Pe32Data; - ImageContext.ImageRead = (PE_COFF_LOADER_READ_FILE) SecImageRead; + ImageContext.Handle = Pe32Data; + ImageContext.ImageRead = (PE_COFF_LOADER_READ_FILE)SecImageRead; - Status = PeCoffLoaderGetImageInfo (&ImageContext); + Status = PeCoffLoaderGetImageInfo (&ImageContext); if (EFI_ERROR (Status)) { return Status; } @@ -741,7 +741,7 @@ SecPeCoffGetEntryPoint ( // Relocate image to match the address where it resides // ImageContext.ImageAddress = (UINTN)Pe32Data; - Status = PeCoffLoaderLoadImage (&ImageContext); + Status = PeCoffLoaderLoadImage (&ImageContext); if (EFI_ERROR (Status)) { return Status; } @@ -755,10 +755,11 @@ SecPeCoffGetEntryPoint ( // Or just return image entry point // ImageContext.PdbPointer = PeCoffLoaderGetPdbPointer (Pe32Data); - Status = PeCoffLoaderGetEntryPoint (Pe32Data, EntryPoint); + Status = PeCoffLoaderGetEntryPoint (Pe32Data, EntryPoint); if (EFI_ERROR (Status)) { return Status; } + ImageContext.EntryPoint = (UINTN)*EntryPoint; } @@ -769,8 +770,6 @@ SecPeCoffGetEntryPoint ( return Status; } - - /*++ Routine Description: @@ -804,7 +803,7 @@ SecUnixFdAddress ( *FdSize = gFdInfo[Index].Size; *FixUp = 0; - if (*FdBase == 0 && *FdSize == 0) { + if ((*FdBase == 0) && (*FdSize == 0)) { return EFI_UNSUPPORTED; } @@ -820,7 +819,6 @@ SecUnixFdAddress ( return EFI_SUCCESS; } - /*++ Routine Description: @@ -836,11 +834,11 @@ Returns: **/ UINTN CountSeparatorsInString ( - IN const CHAR16 *String, - IN CHAR16 Separator + IN const CHAR16 *String, + IN CHAR16 Separator ) { - UINTN Count; + UINTN Count; for (Count = 0; *String != '\0'; String++) { if (*String == Separator) { @@ -851,15 +849,15 @@ CountSeparatorsInString ( return Count; } - EFI_STATUS EFIAPI SecImageRead ( - IN VOID *FileHandle, - IN UINTN FileOffset, - IN OUT UINTN *ReadSize, - OUT VOID *Buffer + IN VOID *FileHandle, + IN UINTN FileOffset, + IN OUT UINTN *ReadSize, + OUT VOID *Buffer ) + /*++ Routine Description: @@ -876,13 +874,13 @@ Returns: **/ { - CHAR8 *Destination8; - CHAR8 *Source8; - UINTN Length; + CHAR8 *Destination8; + CHAR8 *Source8; + UINTN Length; - Destination8 = Buffer; - Source8 = (CHAR8 *) ((UINTN) FileHandle + FileOffset); - Length = *ReadSize; + Destination8 = Buffer; + Source8 = (CHAR8 *)((UINTN)FileHandle + FileOffset); + Length = *ReadSize; while (Length--) { *(Destination8++) = *(Source8++); } @@ -890,7 +888,6 @@ Returns: return EFI_SUCCESS; } - /*++ Routine Description: @@ -909,14 +906,13 @@ Returns: **/ EFI_STATUS AddHandle ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext, - IN VOID *ModHandle + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext, + IN VOID *ModHandle ) { - UINTN Index; - IMAGE_CONTEXT_TO_MOD_HANDLE *Array; - UINTN PreviousSize; - + UINTN Index; + IMAGE_CONTEXT_TO_MOD_HANDLE *Array; + UINTN PreviousSize; Array = mImageContextModHandleArray; for (Index = 0; Index < mImageContextModHandleArraySize; Index++, Array++) { @@ -936,7 +932,7 @@ AddHandle ( // copy the old values to the new location. But it does // not zero the new memory area. // - PreviousSize = mImageContextModHandleArraySize * sizeof (IMAGE_CONTEXT_TO_MOD_HANDLE); + PreviousSize = mImageContextModHandleArraySize * sizeof (IMAGE_CONTEXT_TO_MOD_HANDLE); mImageContextModHandleArraySize += MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE; mImageContextModHandleArray = ReallocatePool ( @@ -954,7 +950,6 @@ AddHandle ( return AddHandle (ImageContext, ModHandle); } - /*++ Routine Description: @@ -971,7 +966,7 @@ Returns: **/ VOID * RemoveHandle ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { UINTN Index; @@ -998,60 +993,60 @@ RemoveHandle ( return NULL; } - - BOOLEAN IsPdbFile ( - IN CHAR8 *PdbFileName + IN CHAR8 *PdbFileName ) { - UINTN Len; + UINTN Len; if (PdbFileName == NULL) { return FALSE; } Len = strlen (PdbFileName); - if ((Len < 5)|| (PdbFileName[Len - 4] != '.')) { + if ((Len < 5) || (PdbFileName[Len - 4] != '.')) { return FALSE; } - if ((PdbFileName[Len - 3] == 'P' || PdbFileName[Len - 3] == 'p') && - (PdbFileName[Len - 2] == 'D' || PdbFileName[Len - 2] == 'd') && - (PdbFileName[Len - 1] == 'B' || PdbFileName[Len - 1] == 'b')) { + if (((PdbFileName[Len - 3] == 'P') || (PdbFileName[Len - 3] == 'p')) && + ((PdbFileName[Len - 2] == 'D') || (PdbFileName[Len - 2] == 'd')) && + ((PdbFileName[Len - 1] == 'B') || (PdbFileName[Len - 1] == 'b'))) + { return TRUE; } return FALSE; } - -#define MAX_SPRINT_BUFFER_SIZE 0x200 +#define MAX_SPRINT_BUFFER_SIZE 0x200 void PrintLoadAddress ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { if (ImageContext->PdbPointer == NULL) { - fprintf (stderr, + fprintf ( + stderr, "0x%08lx Loading NO DEBUG with entry point 0x%08lx\n", (unsigned long)(ImageContext->ImageAddress), (unsigned long)ImageContext->EntryPoint ); } else { - fprintf (stderr, + fprintf ( + stderr, "0x%08lx Loading %s with entry point 0x%08lx\n", (unsigned long)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders), ImageContext->PdbPointer, (unsigned long)ImageContext->EntryPoint ); } + // Keep output synced up fflush (stderr); } - /** Loads the image using dlopen so symbols will be automatically loaded by gdb. @@ -1064,18 +1059,17 @@ PrintLoadAddress ( **/ BOOLEAN DlLoadImage ( - IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { - -#ifdef __APPLE__ + #ifdef __APPLE__ return FALSE; -#else + #else - void *Handle = NULL; - void *Entry = NULL; + void *Handle = NULL; + void *Entry = NULL; if (ImageContext->PdbPointer == NULL) { return FALSE; @@ -1086,19 +1080,19 @@ DlLoadImage ( } fprintf ( - stderr, - "Loading %s 0x%08lx - entry point 0x%08lx\n", - ImageContext->PdbPointer, - (unsigned long)ImageContext->ImageAddress, - (unsigned long)ImageContext->EntryPoint - ); + stderr, + "Loading %s 0x%08lx - entry point 0x%08lx\n", + ImageContext->PdbPointer, + (unsigned long)ImageContext->ImageAddress, + (unsigned long)ImageContext->EntryPoint + ); Handle = dlopen (ImageContext->PdbPointer, RTLD_NOW); if (Handle != NULL) { Entry = dlsym (Handle, "_ModuleEntryPoint"); AddHandle (ImageContext, Handle); } else { - printf("%s\n", dlerror()); + printf ("%s\n", dlerror ()); } if (Entry != NULL) { @@ -1109,25 +1103,23 @@ DlLoadImage ( return FALSE; } -#endif + #endif } - #ifdef __APPLE__ -__attribute__((noinline)) +__attribute__ ((noinline)) #endif VOID SecGdbScriptBreak ( - char *FileName, - int FileNameLength, - long unsigned int LoadAddress, - int AddSymbolFlag + char *FileName, + int FileNameLength, + long unsigned int LoadAddress, + int AddSymbolFlag ) { return; } - /** Adds the image to a gdb script so its symbols can be loaded. The AddFirmwareSymbolFile helper macro is used. @@ -1137,18 +1129,17 @@ SecGdbScriptBreak ( **/ VOID GdbScriptAddImage ( - IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { - PrintLoadAddress (ImageContext); - if (ImageContext->PdbPointer != NULL && !IsPdbFile (ImageContext->PdbPointer)) { + if ((ImageContext->PdbPointer != NULL) && !IsPdbFile (ImageContext->PdbPointer)) { FILE *GdbTempFile; if (FeaturePcdGet (PcdEmulatorLazyLoadSymbols)) { GdbTempFile = fopen (gGdbWorkingFileName, "a"); if (GdbTempFile != NULL) { - long unsigned int SymbolsAddr = (long unsigned int)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders); + long unsigned int SymbolsAddr = (long unsigned int)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders); mScriptSymbolChangesCount++; fprintf ( GdbTempFile, @@ -1188,11 +1179,10 @@ GdbScriptAddImage ( } } - VOID EFIAPI SecPeCoffRelocateImageExtraAction ( - IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { if (!DlLoadImage (ImageContext)) { @@ -1200,7 +1190,6 @@ SecPeCoffRelocateImageExtraAction ( } } - /** Adds the image to a gdb script so its symbols can be unloaded. The RemoveFirmwareSymbolFile helper macro is used. @@ -1210,7 +1199,7 @@ SecPeCoffRelocateImageExtraAction ( **/ VOID GdbScriptRemoveImage ( - IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { FILE *GdbTempFile; @@ -1257,27 +1246,24 @@ GdbScriptRemoveImage ( } } - VOID EFIAPI SecPeCoffUnloadImageExtraAction ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { - VOID *Handle; + VOID *Handle; // // Check to see if the image symbols were loaded with gdb script, or dlopen // Handle = RemoveHandle (ImageContext); if (Handle != NULL) { -#ifndef __APPLE__ + #ifndef __APPLE__ dlclose (Handle); -#endif + #endif return; } GdbScriptRemoveImage (ImageContext); } - - diff --git a/EmulatorPkg/Unix/Host/Host.h b/EmulatorPkg/Unix/Host/Host.h index a372ecaadb..0c81cdfc01 100644 --- a/EmulatorPkg/Unix/Host/Host.h +++ b/EmulatorPkg/Unix/Host/Host.h @@ -30,9 +30,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #if __CYGWIN__ -#include + #include #else -#include + #include #endif #include @@ -56,19 +56,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #ifdef __APPLE__ -#include -#include -#include -#include -#include + #include + #include + #include + #include + #include #define _XOPEN_SOURCE -#ifndef _Bool - #define _Bool char // for clang debug -#endif + #ifndef _Bool +#define _Bool char // for clang debug + #endif #else -#include -#include -#include + #include + #include + #include #endif #include @@ -120,31 +120,27 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - #include "Gasket.h" - -#define STACK_SIZE 0x20000 +#define STACK_SIZE 0x20000 typedef struct { - EFI_PHYSICAL_ADDRESS Address; - UINT64 Size; + EFI_PHYSICAL_ADDRESS Address; + UINT64 Size; } EMU_FD_INFO; typedef struct { - EFI_PHYSICAL_ADDRESS Memory; - UINT64 Size; + EFI_PHYSICAL_ADDRESS Memory; + UINT64 Size; } EMU_SYSTEM_MEMORY; - -#define MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE 0x100 +#define MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE 0x100 typedef struct { - PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext; - VOID *ModHandle; + PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext; + VOID *ModHandle; } IMAGE_CONTEXT_TO_MOD_HANDLE; - EFI_STATUS EFIAPI SecUnixPeiLoadFile ( @@ -163,18 +159,18 @@ main ( VOID SecLoadFromCore ( - IN UINTN LargestRegion, - IN UINTN LargestRegionSize, - IN UINTN BootFirmwareVolumeBase, - IN VOID *PeiCoreFile + IN UINTN LargestRegion, + IN UINTN LargestRegionSize, + IN UINTN BootFirmwareVolumeBase, + IN VOID *PeiCoreFile ); EFI_STATUS SecLoadFile ( - IN VOID *Pe32Data, - IN EFI_PHYSICAL_ADDRESS *ImageAddress, - IN UINT64 *ImageSize, - IN EFI_PHYSICAL_ADDRESS *EntryPoint + IN VOID *Pe32Data, + IN EFI_PHYSICAL_ADDRESS *ImageAddress, + IN UINT64 *ImageSize, + IN EFI_PHYSICAL_ADDRESS *EntryPoint ); EFI_STATUS @@ -192,23 +188,23 @@ SecFfsFindNextFile ( EFI_STATUS SecFfsFindSectionData ( - IN EFI_SECTION_TYPE SectionType, - IN EFI_FFS_FILE_HEADER *FfsFileHeader, - IN OUT VOID **SectionData + IN EFI_SECTION_TYPE SectionType, + IN EFI_FFS_FILE_HEADER *FfsFileHeader, + IN OUT VOID **SectionData ); EFI_STATUS EFIAPI SecUnixPeCoffLoaderLoadAsDll ( - IN CHAR8 *PdbFileName, - IN VOID **ImageEntryPoint, - OUT VOID **ModHandle + IN CHAR8 *PdbFileName, + IN VOID **ImageEntryPoint, + OUT VOID **ModHandle ); EFI_STATUS EFIAPI SecUnixPeCoffLoaderFreeLibrary ( - OUT VOID *ModHandle + OUT VOID *ModHandle ); EFI_STATUS @@ -230,53 +226,51 @@ GasketSecUnixFdAddress ( ) ; - EFI_STATUS GetImageReadFunction ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext, - IN EFI_PHYSICAL_ADDRESS *TopOfMemory + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext, + IN EFI_PHYSICAL_ADDRESS *TopOfMemory ); EFI_STATUS EFIAPI SecImageRead ( - IN VOID *FileHandle, - IN UINTN FileOffset, - IN OUT UINTN *ReadSize, - OUT VOID *Buffer + IN VOID *FileHandle, + IN UINTN FileOffset, + IN OUT UINTN *ReadSize, + OUT VOID *Buffer ); CHAR16 * AsciiToUnicode ( - IN CHAR8 *Ascii, - IN UINTN *StrLen OPTIONAL + IN CHAR8 *Ascii, + IN UINTN *StrLen OPTIONAL ); UINTN CountSeparatorsInString ( - IN const CHAR16 *String, - IN CHAR16 Separator + IN const CHAR16 *String, + IN CHAR16 Separator ); EFI_STATUS EFIAPI SecTemporaryRamSupport ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, - IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, - IN UINTN CopySize + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, + IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, + IN UINTN CopySize ); EFI_STATUS EFIAPI GasketSecTemporaryRamSupport ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, - IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, - IN UINTN CopySize + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, + IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, + IN UINTN CopySize ); - RETURN_STATUS EFIAPI SecPeCoffGetEntryPoint ( @@ -296,7 +290,6 @@ SecPeCoffLoaderUnloadImageExtraAction ( IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ); - VOID PeiSwitchStacks ( IN SWITCH_STACK_ENTRY_POINT EntryPoint, @@ -310,13 +303,13 @@ SecInitThunkProtocol ( VOID ); - EFI_PHYSICAL_ADDRESS * MapMemory ( - INTN fd, - UINT64 length, - INTN prot, - INTN flags); + INTN fd, + UINT64 length, + INTN prot, + INTN flags + ); EFI_STATUS MapFile ( @@ -334,21 +327,34 @@ MapFd0 ( BOOLEAN EfiSystemMemoryRange ( - IN VOID *MemoryAddress + IN VOID *MemoryAddress + ); + +VOID +SecSleep ( + UINT64 Nanoseconds ); +VOID +SecEnableInterrupt ( + VOID + ); -VOID SecSleep (UINT64 Nanoseconds); -VOID SecEnableInterrupt (VOID); -VOID SecDisableInterrupt (VOID); -BOOLEAN SecInterruptEanbled (VOID); +VOID +SecDisableInterrupt ( + VOID + ); +BOOLEAN +SecInterruptEanbled ( + VOID + ); -extern EMU_THUNK_PROTOCOL gEmuThunkProtocol; -extern EMU_IO_THUNK_PROTOCOL gX11ThunkIo; -extern EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo; -extern EMU_IO_THUNK_PROTOCOL gPthreadThunkIo; -extern EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo; -extern EMU_IO_THUNK_PROTOCOL gSnpThunkIo; +extern EMU_THUNK_PROTOCOL gEmuThunkProtocol; +extern EMU_IO_THUNK_PROTOCOL gX11ThunkIo; +extern EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo; +extern EMU_IO_THUNK_PROTOCOL gPthreadThunkIo; +extern EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo; +extern EMU_IO_THUNK_PROTOCOL gSnpThunkIo; #endif diff --git a/EmulatorPkg/Unix/Host/Ia32/SwitchStack.c b/EmulatorPkg/Unix/Host/Ia32/SwitchStack.c index 0184de2894..18028f3791 100644 --- a/EmulatorPkg/Unix/Host/Ia32/SwitchStack.c +++ b/EmulatorPkg/Unix/Host/Ia32/SwitchStack.c @@ -9,7 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Host.h" - /** Transfers control to a function starting with a new stack. @@ -49,15 +48,14 @@ PeiSwitchStacks ( // ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0); - JumpBuffer.Eip = (UINTN)EntryPoint; - JumpBuffer.Esp = (UINTN)NewStack - sizeof (VOID*); - JumpBuffer.Esp -= sizeof (Context1) + sizeof (Context2); - ((VOID**)JumpBuffer.Esp)[1] = Context1; - ((VOID**)JumpBuffer.Esp)[2] = Context2; + JumpBuffer.Eip = (UINTN)EntryPoint; + JumpBuffer.Esp = (UINTN)NewStack - sizeof (VOID *); + JumpBuffer.Esp -= sizeof (Context1) + sizeof (Context2); + ((VOID **)JumpBuffer.Esp)[1] = Context1; + ((VOID **)JumpBuffer.Esp)[2] = Context2; LongJump (&JumpBuffer, (UINTN)-1); - // // PeiSwitchStacks () will never return // diff --git a/EmulatorPkg/Unix/Host/LinuxPacketFilter.c b/EmulatorPkg/Unix/Host/LinuxPacketFilter.c index 2b772ab884..87c3dd6be4 100644 --- a/EmulatorPkg/Unix/Host/LinuxPacketFilter.c +++ b/EmulatorPkg/Unix/Host/LinuxPacketFilter.c @@ -12,21 +12,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Host.h" #ifndef __APPLE__ -#define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n') +#define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n') typedef struct { - UINTN Signature; - - EMU_IO_THUNK_PROTOCOL *Thunk; - + UINTN Signature; - EMU_SNP_PROTOCOL EmuSnp; - EFI_SIMPLE_NETWORK_MODE *Mode; + EMU_IO_THUNK_PROTOCOL *Thunk; + EMU_SNP_PROTOCOL EmuSnp; + EFI_SIMPLE_NETWORK_MODE *Mode; } EMU_SNP_PRIVATE; #define EMU_SNP_PRIVATE_DATA_FROM_THIS(a) \ @@ -48,7 +45,7 @@ EmuSnpCreateMapping ( IN EFI_SIMPLE_NETWORK_MODE *Mode ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -74,7 +71,7 @@ EmuSnpStart ( IN EMU_SNP_PROTOCOL *This ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -98,7 +95,7 @@ EmuSnpStop ( IN EMU_SNP_PROTOCOL *This ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -133,12 +130,12 @@ EmuSnpStop ( **/ EFI_STATUS EmuSnpInitialize ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -163,11 +160,11 @@ EmuSnpInitialize ( **/ EFI_STATUS EmuSnpReset ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -192,7 +189,7 @@ EmuSnpShutdown ( IN EMU_SNP_PROTOCOL *This ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -225,15 +222,15 @@ EmuSnpShutdown ( **/ EFI_STATUS EmuSnpReceiveFilters ( - IN EMU_SNP_PROTOCOL *This, - IN UINT32 Enable, - IN UINT32 Disable, - IN BOOLEAN ResetMCastFilter, - IN UINTN MCastFilterCnt OPTIONAL, - IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINT32 Enable, + IN UINT32 Disable, + IN BOOLEAN ResetMCastFilter, + IN UINTN MCastFilterCnt OPTIONAL, + IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -257,12 +254,12 @@ EmuSnpReceiveFilters ( **/ EFI_STATUS EmuSnpStationAddress ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *New OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -292,13 +289,13 @@ EmuSnpStationAddress ( **/ EFI_STATUS EmuSnpStatistics ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -328,13 +325,13 @@ EmuSnpStatistics ( **/ EFI_STATUS EmuSnpMCastIpToMac ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - OUT EFI_MAC_ADDRESS *MAC + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -363,14 +360,14 @@ EmuSnpMCastIpToMac ( **/ EFI_STATUS EmuSnpNvData ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ReadWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ReadWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -404,12 +401,12 @@ EmuSnpNvData ( **/ EFI_STATUS EmuSnpGetStatus ( - IN EMU_SNP_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINT32 *InterruptStatus OPTIONAL, + OUT VOID **TxBuf OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -451,16 +448,16 @@ EmuSnpGetStatus ( **/ EFI_STATUS EmuSnpTransmit ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -501,24 +498,23 @@ EmuSnpTransmit ( **/ EFI_STATUS EmuSnpReceive ( - IN EMU_SNP_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ) { - EMU_SNP_PRIVATE *Private; + EMU_SNP_PRIVATE *Private; Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; } - -EMU_SNP_PROTOCOL gEmuSnpProtocol = { +EMU_SNP_PROTOCOL gEmuSnpProtocol = { GasketSnpCreateMapping, GasketSnpStart, GasketSnpStop, @@ -537,7 +533,7 @@ EMU_SNP_PROTOCOL gEmuSnpProtocol = { EFI_STATUS EmuSnpThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_SNP_PRIVATE *Private; @@ -555,7 +551,6 @@ EmuSnpThunkOpen ( return EFI_OUT_OF_RESOURCES; } - Private->Signature = EMU_SNP_PRIVATE_SIGNATURE; Private->Thunk = This; CopyMem (&Private->EmuSnp, &gEmuSnpProtocol, sizeof (gEmuSnpProtocol)); @@ -565,10 +560,9 @@ EmuSnpThunkOpen ( return EFI_SUCCESS; } - EFI_STATUS EmuSnpThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_SNP_PRIVATE *Private; @@ -583,9 +577,7 @@ EmuSnpThunkClose ( return EFI_SUCCESS; } - - -EMU_IO_THUNK_PROTOCOL gSnpThunkIo = { +EMU_IO_THUNK_PROTOCOL gSnpThunkIo = { &gEmuSnpProtocolGuid, NULL, NULL, diff --git a/EmulatorPkg/Unix/Host/MemoryAllocationLib.c b/EmulatorPkg/Unix/Host/MemoryAllocationLib.c index 456f451c16..4e3c8faa3c 100644 --- a/EmulatorPkg/Unix/Host/MemoryAllocationLib.c +++ b/EmulatorPkg/Unix/Host/MemoryAllocationLib.c @@ -30,10 +30,9 @@ AllocatePool ( IN UINTN AllocationSize ) { - return (VOID*) malloc (AllocationSize); + return (VOID *)malloc (AllocationSize); } - /** Allocates and zeros a buffer of type EfiBootServicesData. @@ -53,7 +52,7 @@ AllocateZeroPool ( IN UINTN AllocationSize ) { - VOID *Buffer; + VOID *Buffer; Buffer = AllocatePool (AllocationSize); if (Buffer == NULL) { @@ -65,7 +64,6 @@ AllocateZeroPool ( return Buffer; } - /** Reallocates a buffer of type EfiBootServicesData. @@ -95,7 +93,7 @@ ReallocatePool ( IN VOID *OldBuffer OPTIONAL ) { - VOID *NewBuffer; + VOID *NewBuffer; NewBuffer = AllocatePool (NewSize); if (NewBuffer == NULL) { @@ -113,7 +111,6 @@ ReallocatePool ( return NewBuffer; } - /** Frees a buffer that was previously allocated with one of the pool allocation functions in the Memory Allocation Library. @@ -131,9 +128,8 @@ ReallocatePool ( VOID EFIAPI FreePool ( - IN VOID *Buffer + IN VOID *Buffer ) { - free ((void *) Buffer); + free ((void *)Buffer); } - diff --git a/EmulatorPkg/Unix/Host/PosixFileSystem.c b/EmulatorPkg/Unix/Host/PosixFileSystem.c index 0a618abcd8..ae3fe72a05 100644 --- a/EmulatorPkg/Unix/Host/PosixFileSystem.c +++ b/EmulatorPkg/Unix/Host/PosixFileSystem.c @@ -10,16 +10,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Host.h" - -#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'P', 'f', 's') +#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'P', 'f', 's') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; - CHAR8 *FilePath; - CHAR16 *VolumeLabel; - BOOLEAN FileHandlesOpen; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *Thunk; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; + CHAR8 *FilePath; + CHAR16 *VolumeLabel; + BOOLEAN FileHandlesOpen; } EMU_SIMPLE_FILE_SYSTEM_PRIVATE; #define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS(a) \ @@ -29,21 +28,20 @@ typedef struct { EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE \ ) - -#define EMU_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'P', 'f', 'i') +#define EMU_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'P', 'f', 'i') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; - EFI_FILE_PROTOCOL EfiFile; - int fd; - DIR *Dir; - BOOLEAN IsRootDirectory; - BOOLEAN IsDirectoryPath; - BOOLEAN IsOpenedByRead; - char *FileName; - struct dirent *Dirent; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *Thunk; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; + EFI_FILE_PROTOCOL EfiFile; + int fd; + DIR *Dir; + BOOLEAN IsRootDirectory; + BOOLEAN IsDirectoryPath; + BOOLEAN IsOpenedByRead; + char *FileName; + struct dirent *Dirent; } EMU_EFI_FILE_PRIVATE; #define EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS(a) \ @@ -55,22 +53,21 @@ typedef struct { EFI_STATUS PosixFileGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ); EFI_STATUS PosixFileSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN UINTN BufferSize, + IN VOID *Buffer ); - -EFI_FILE_PROTOCOL gPosixFileProtocol = { +EFI_FILE_PROTOCOL gPosixFileProtocol = { EFI_FILE_REVISION, GasketPosixFileOpen, GasketPosixFileCLose, @@ -84,12 +81,11 @@ EFI_FILE_PROTOCOL gPosixFileProtocol = { GasketPosixFileFlush }; -EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gPosixFileSystemProtocol = { +EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gPosixFileSystemProtocol = { EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION, GasketPosixOpenVolume, }; - /** Open the root directory on a volume. @@ -107,17 +103,17 @@ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gPosixFileSystemProtocol = { **/ EFI_STATUS PosixOpenVolume ( - IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **Root + IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **Root ) { - EFI_STATUS Status; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; - EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_STATUS Status; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; + EMU_EFI_FILE_PRIVATE *PrivateFile; - Private = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (This); + Private = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (This); - Status = EFI_OUT_OF_RESOURCES; + Status = EFI_OUT_OF_RESOURCES; PrivateFile = malloc (sizeof (EMU_EFI_FILE_PRIVATE)); if (PrivateFile == NULL) { goto Done; @@ -127,24 +123,25 @@ PosixOpenVolume ( if (PrivateFile->FileName == NULL) { goto Done; } + AsciiStrCpyS ( PrivateFile->FileName, AsciiStrSize (Private->FilePath), Private->FilePath ); - PrivateFile->Signature = EMU_EFI_FILE_PRIVATE_SIGNATURE; - PrivateFile->Thunk = Private->Thunk; - PrivateFile->SimpleFileSystem = This; - PrivateFile->IsRootDirectory = TRUE; - PrivateFile->IsDirectoryPath = TRUE; - PrivateFile->IsOpenedByRead = TRUE; + PrivateFile->Signature = EMU_EFI_FILE_PRIVATE_SIGNATURE; + PrivateFile->Thunk = Private->Thunk; + PrivateFile->SimpleFileSystem = This; + PrivateFile->IsRootDirectory = TRUE; + PrivateFile->IsDirectoryPath = TRUE; + PrivateFile->IsOpenedByRead = TRUE; CopyMem (&PrivateFile->EfiFile, &gPosixFileProtocol, sizeof (EFI_FILE_PROTOCOL)); - PrivateFile->fd = -1; - PrivateFile->Dir = NULL; - PrivateFile->Dirent = NULL; + PrivateFile->fd = -1; + PrivateFile->Dir = NULL; + PrivateFile->Dirent = NULL; *Root = &PrivateFile->EfiFile; @@ -171,27 +168,27 @@ Done: return Status; } - EFI_STATUS -ErrnoToEfiStatus () +ErrnoToEfiStatus ( + ) { switch (errno) { - case EACCES: - return EFI_ACCESS_DENIED; + case EACCES: + return EFI_ACCESS_DENIED; - case EDQUOT: - case ENOSPC: - return EFI_VOLUME_FULL; + case EDQUOT: + case ENOSPC: + return EFI_VOLUME_FULL; - default: - return EFI_DEVICE_ERROR; + default: + return EFI_DEVICE_ERROR; } } VOID CutPrefix ( IN CHAR8 *Str, - IN UINTN Count + IN UINTN Count ) { CHAR8 *Pointer; @@ -207,53 +204,51 @@ CutPrefix ( *Pointer = *(Pointer + Count); } - VOID PosixSystemTimeToEfiTime ( - IN time_t SystemTime, - OUT EFI_TIME *Time + IN time_t SystemTime, + OUT EFI_TIME *Time ) { - struct tm *tm; - - tm = gmtime (&SystemTime); - Time->Year = tm->tm_year; - Time->Month = tm->tm_mon + 1; - Time->Day = tm->tm_mday; - Time->Hour = tm->tm_hour; - Time->Minute = tm->tm_min; - Time->Second = tm->tm_sec; + struct tm *tm; + + tm = gmtime (&SystemTime); + Time->Year = tm->tm_year; + Time->Month = tm->tm_mon + 1; + Time->Day = tm->tm_mday; + Time->Hour = tm->tm_hour; + Time->Minute = tm->tm_min; + Time->Second = tm->tm_sec; Time->Nanosecond = 0; Time->TimeZone = timezone / 60; Time->Daylight = (daylight ? EFI_TIME_ADJUST_DAYLIGHT : 0) | (tm->tm_isdst > 0 ? EFI_TIME_IN_DAYLIGHT : 0); } - EFI_STATUS UnixSimpleFileSystemFileInfo ( - EMU_EFI_FILE_PRIVATE *PrivateFile, - IN CHAR8 *FileName, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + EMU_EFI_FILE_PRIVATE *PrivateFile, + IN CHAR8 *FileName, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ) { - EFI_STATUS Status; - UINTN Size; - UINTN NameSize; - UINTN ResultSize; - EFI_FILE_INFO *Info; - CHAR8 *RealFileName; - CHAR8 *TempPointer; - CHAR16 *BufferFileName; - struct stat buf; + EFI_STATUS Status; + UINTN Size; + UINTN NameSize; + UINTN ResultSize; + EFI_FILE_INFO *Info; + CHAR8 *RealFileName; + CHAR8 *TempPointer; + CHAR16 *BufferFileName; + struct stat buf; if (FileName != NULL) { RealFileName = FileName; } else if (PrivateFile->IsRootDirectory) { RealFileName = ""; } else { - RealFileName = PrivateFile->FileName; + RealFileName = PrivateFile->FileName; } TempPointer = RealFileName; @@ -265,26 +260,27 @@ UnixSimpleFileSystemFileInfo ( TempPointer++; } - Size = SIZE_OF_EFI_FILE_INFO; - NameSize = AsciiStrSize (RealFileName) * 2; - ResultSize = Size + NameSize; + Size = SIZE_OF_EFI_FILE_INFO; + NameSize = AsciiStrSize (RealFileName) * 2; + ResultSize = Size + NameSize; if (*BufferSize < ResultSize) { *BufferSize = ResultSize; return EFI_BUFFER_TOO_SMALL; } - if (stat (FileName == NULL ? PrivateFile->FileName : FileName, &buf) < 0) { + + if (stat ((FileName == NULL) ? PrivateFile->FileName : FileName, &buf) < 0) { return EFI_DEVICE_ERROR; } - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; - Info = Buffer; + Info = Buffer; ZeroMem (Info, ResultSize); - Info->Size = ResultSize; - Info->FileSize = buf.st_size; - Info->PhysicalSize = MultU64x32 (buf.st_blocks, buf.st_blksize); + Info->Size = ResultSize; + Info->FileSize = buf.st_size; + Info->PhysicalSize = MultU64x32 (buf.st_blocks, buf.st_blksize); PosixSystemTimeToEfiTime (buf.st_ctime, &Info->CreateTime); PosixSystemTimeToEfiTime (buf.st_atime, &Info->LastAccessTime); @@ -294,15 +290,15 @@ UnixSimpleFileSystemFileInfo ( Info->Attribute |= EFI_FILE_READ_ONLY; } - if (S_ISDIR(buf.st_mode)) { + if (S_ISDIR (buf.st_mode)) { Info->Attribute |= EFI_FILE_DIRECTORY; } - - BufferFileName = (CHAR16 *)((CHAR8 *) Buffer + Size); + BufferFileName = (CHAR16 *)((CHAR8 *)Buffer + Size); while (*RealFileName) { *BufferFileName++ = *RealFileName++; } + *BufferFileName = 0; *BufferSize = ResultSize; @@ -315,16 +311,16 @@ IsZero ( IN UINTN Length ) { - if (Buffer == NULL || Length == 0) { + if ((Buffer == NULL) || (Length == 0)) { return FALSE; } - if (*(UINT8 *) Buffer != 0) { + if (*(UINT8 *)Buffer != 0) { return FALSE; } if (Length > 1) { - if (!CompareMem (Buffer, (UINT8 *) Buffer + 1, Length - 1)) { + if (!CompareMem (Buffer, (UINT8 *)Buffer + 1, Length - 1)) { return FALSE; } } @@ -332,8 +328,6 @@ IsZero ( return TRUE; } - - /** Opens a new file relative to the source file's location. @@ -356,37 +350,37 @@ IsZero ( **/ EFI_STATUS PosixFileOpen ( - IN EFI_FILE_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes + IN EFI_FILE_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **NewHandle, + IN CHAR16 *FileName, + IN UINT64 OpenMode, + IN UINT64 Attributes ) { - EFI_FILE_PROTOCOL *Root; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EMU_EFI_FILE_PRIVATE *NewPrivateFile; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; - EFI_STATUS Status; - CHAR16 *Src; - char *Dst; - CHAR8 *RealFileName; - char *ParseFileName; - char *GuardPointer; - CHAR8 TempChar; - UINTN Count; - BOOLEAN TrailingDash; - BOOLEAN LoopFinish; - UINTN InfoSize; - EFI_FILE_INFO *Info; - struct stat finfo; - int res; - UINTN Size; - - PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); - PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); - NewPrivateFile = NULL; - Status = EFI_OUT_OF_RESOURCES; + EFI_FILE_PROTOCOL *Root; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EMU_EFI_FILE_PRIVATE *NewPrivateFile; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; + EFI_STATUS Status; + CHAR16 *Src; + char *Dst; + CHAR8 *RealFileName; + char *ParseFileName; + char *GuardPointer; + CHAR8 TempChar; + UINTN Count; + BOOLEAN TrailingDash; + BOOLEAN LoopFinish; + UINTN InfoSize; + EFI_FILE_INFO *Info; + struct stat finfo; + int res; + UINTN Size; + + PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); + PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); + NewPrivateFile = NULL; + Status = EFI_OUT_OF_RESOURCES; // // BUGBUG: assume an open of root @@ -394,16 +388,17 @@ PosixFileOpen ( // TrailingDash = FALSE; if ((StrCmp (FileName, L"\\") == 0) || - (StrCmp (FileName, L".") == 0 && PrivateFile->IsRootDirectory)) { + ((StrCmp (FileName, L".") == 0) && PrivateFile->IsRootDirectory)) + { OpenRoot: - Status = PosixOpenVolume (PrivateFile->SimpleFileSystem, &Root); - NewPrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (Root); + Status = PosixOpenVolume (PrivateFile->SimpleFileSystem, &Root); + NewPrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (Root); goto Done; } if (FileName[StrLen (FileName) - 1] == L'\\') { - TrailingDash = TRUE; - FileName[StrLen (FileName) - 1] = 0; + TrailingDash = TRUE; + FileName[StrLen (FileName) - 1] = 0; } // @@ -416,7 +411,7 @@ OpenRoot: CopyMem (NewPrivateFile, PrivateFile, sizeof (EMU_EFI_FILE_PRIVATE)); - Size = AsciiStrSize (PrivateFile->FileName) + 1 + StrLen (FileName) + 1; + Size = AsciiStrSize (PrivateFile->FileName) + 1 + StrLen (FileName) + 1; NewPrivateFile->FileName = malloc (Size); if (NewPrivateFile->FileName == NULL) { goto Done; @@ -430,9 +425,10 @@ OpenRoot: AsciiStrCpyS (NewPrivateFile->FileName, Size, PrivateFile->FileName); Src = FileName; } - Dst = NewPrivateFile->FileName + AsciiStrLen (NewPrivateFile->FileName); + + Dst = NewPrivateFile->FileName + AsciiStrLen (NewPrivateFile->FileName); GuardPointer = NewPrivateFile->FileName + AsciiStrLen (PrivateRoot->FilePath); - *Dst++ = '/'; + *Dst++ = '/'; // Convert unicode to ascii and '\' to '/' while (*Src) { if (*Src == '\\') { @@ -440,10 +436,11 @@ OpenRoot: } else { *Dst++ = *Src; } + Src++; } - *Dst = 0; + *Dst = 0; // // Get rid of . and .., except leading . or .. @@ -453,16 +450,16 @@ OpenRoot: // GuardPointer protect simplefilesystem root path not be destroyed // - LoopFinish = FALSE; + LoopFinish = FALSE; while (!LoopFinish) { LoopFinish = TRUE; for (ParseFileName = GuardPointer; *ParseFileName; ParseFileName++) { - if (*ParseFileName == '.' && - (*(ParseFileName + 1) == 0 || *(ParseFileName + 1) == '/') && - *(ParseFileName - 1) == '/' - ) { - + if ((*ParseFileName == '.') && + ((*(ParseFileName + 1) == 0) || (*(ParseFileName + 1) == '/')) && + (*(ParseFileName - 1) == '/') + ) + { // // cut /. // @@ -471,12 +468,12 @@ OpenRoot: break; } - if (*ParseFileName == '.' && - *(ParseFileName + 1) == '.' && - (*(ParseFileName + 2) == 0 || *(ParseFileName + 2) == '/') && - *(ParseFileName - 1) == '/' - ) { - + if ((*ParseFileName == '.') && + (*(ParseFileName + 1) == '.') && + ((*(ParseFileName + 2) == 0) || (*(ParseFileName + 2) == '/')) && + (*(ParseFileName - 1) == '/') + ) + { ParseFileName--; Count = 3; @@ -505,7 +502,7 @@ OpenRoot: goto OpenRoot; } - RealFileName = NewPrivateFile->FileName + AsciiStrLen(NewPrivateFile->FileName) - 1; + RealFileName = NewPrivateFile->FileName + AsciiStrLen (NewPrivateFile->FileName) - 1; while (RealFileName > NewPrivateFile->FileName && *RealFileName != '/') { RealFileName--; } @@ -514,13 +511,12 @@ OpenRoot: *(RealFileName - 1) = 0; *(RealFileName - 1) = TempChar; - // // Test whether file or directory // NewPrivateFile->IsRootDirectory = FALSE; - NewPrivateFile->fd = -1; - NewPrivateFile->Dir = NULL; + NewPrivateFile->fd = -1; + NewPrivateFile->Dir = NULL; if (OpenMode & EFI_FILE_MODE_CREATE) { if (Attributes & EFI_FILE_DIRECTORY) { NewPrivateFile->IsDirectoryPath = TRUE; @@ -529,7 +525,7 @@ OpenRoot: } } else { res = stat (NewPrivateFile->FileName, &finfo); - if (res == 0 && S_ISDIR(finfo.st_mode)) { + if ((res == 0) && S_ISDIR (finfo.st_mode)) { NewPrivateFile->IsDirectoryPath = TRUE; } else { NewPrivateFile->IsDirectoryPath = FALSE; @@ -554,7 +550,7 @@ OpenRoot: // if (mkdir (NewPrivateFile->FileName, 0777) != 0) { if (errno != EEXIST) { - //free (TempFileName); + // free (TempFileName); Status = EFI_ACCESS_DENIED; goto Done; } @@ -571,16 +567,15 @@ OpenRoot: goto Done; } - } else { // // deal with file // NewPrivateFile->fd = open ( - NewPrivateFile->FileName, - ((OpenMode & EFI_FILE_MODE_CREATE) ? O_CREAT : 0) | (NewPrivateFile->IsOpenedByRead ? O_RDONLY : O_RDWR), - 0666 - ); + NewPrivateFile->FileName, + ((OpenMode & EFI_FILE_MODE_CREATE) ? O_CREAT : 0) | (NewPrivateFile->IsOpenedByRead ? O_RDONLY : O_RDWR), + 0666 + ); if (NewPrivateFile->fd < 0) { if (errno == ENOENT) { Status = EFI_NOT_FOUND; @@ -590,13 +585,13 @@ OpenRoot: } } - if ((OpenMode & EFI_FILE_MODE_CREATE) && Status == EFI_SUCCESS) { + if ((OpenMode & EFI_FILE_MODE_CREATE) && (Status == EFI_SUCCESS)) { // // Set the attribute // - InfoSize = 0; - Info = NULL; - Status = PosixFileGetInfo (&NewPrivateFile->EfiFile, &gEfiFileInfoGuid, &InfoSize, Info); + InfoSize = 0; + Info = NULL; + Status = PosixFileGetInfo (&NewPrivateFile->EfiFile, &gEfiFileInfoGuid, &InfoSize, Info); if (Status != EFI_BUFFER_TOO_SMALL) { Status = EFI_DEVICE_ERROR; goto Done; @@ -618,10 +613,10 @@ OpenRoot: free (Info); } -Done: ; +Done:; if (TrailingDash) { - FileName[StrLen (FileName) + 1] = 0; - FileName[StrLen (FileName)] = L'\\'; + FileName[StrLen (FileName) + 1] = 0; + FileName[StrLen (FileName)] = L'\\'; } if (EFI_ERROR (Status)) { @@ -639,8 +634,6 @@ Done: ; return Status; } - - /** Close the file handle @@ -654,18 +647,19 @@ PosixFileCLose ( IN EFI_FILE_PROTOCOL *This ) { - EMU_EFI_FILE_PRIVATE *PrivateFile; + EMU_EFI_FILE_PRIVATE *PrivateFile; PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); if (PrivateFile->fd >= 0) { close (PrivateFile->fd); } + if (PrivateFile->Dir != NULL) { closedir (PrivateFile->Dir); } - PrivateFile->fd = -1; + PrivateFile->fd = -1; PrivateFile->Dir = NULL; if (PrivateFile->FileName) { @@ -677,7 +671,6 @@ PosixFileCLose ( return EFI_SUCCESS; } - /** Close and delete the file handle. @@ -692,8 +685,8 @@ PosixFileDelete ( IN EFI_FILE_PROTOCOL *This ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); Status = EFI_WARN_DELETE_FAILURE; @@ -724,7 +717,6 @@ PosixFileDelete ( return Status; } - /** Read data from the file. @@ -741,19 +733,19 @@ PosixFileDelete ( **/ EFI_STATUS PosixFileRead ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ) { - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_STATUS Status; - int Res; - UINTN Size; - UINTN NameSize; - UINTN ResultSize; - CHAR8 *FullFileName; - UINTN FullFileNameSize; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_STATUS Status; + int Res; + UINTN Size; + UINTN NameSize; + UINTN ResultSize; + CHAR8 *FullFileName; + UINTN FullFileNameSize; PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -768,8 +760,9 @@ PosixFileRead ( Status = EFI_DEVICE_ERROR; goto Done; } + *BufferSize = Res; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; goto Done; } @@ -785,26 +778,27 @@ PosixFileRead ( PrivateFile->Dirent = readdir (PrivateFile->Dir); if (PrivateFile->Dirent == NULL) { *BufferSize = 0; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; goto Done; } } - Size = SIZE_OF_EFI_FILE_INFO; - NameSize = AsciiStrLen (PrivateFile->Dirent->d_name) + 1; - ResultSize = Size + 2 * NameSize; + Size = SIZE_OF_EFI_FILE_INFO; + NameSize = AsciiStrLen (PrivateFile->Dirent->d_name) + 1; + ResultSize = Size + 2 * NameSize; if (*BufferSize < ResultSize) { *BufferSize = ResultSize; - Status = EFI_BUFFER_TOO_SMALL; + Status = EFI_BUFFER_TOO_SMALL; goto Done; } - Status = EFI_SUCCESS; + + Status = EFI_SUCCESS; *BufferSize = ResultSize; - FullFileNameSize = AsciiStrLen(PrivateFile->FileName) + 1 + NameSize; - FullFileName = malloc (FullFileNameSize); + FullFileNameSize = AsciiStrLen (PrivateFile->FileName) + 1 + NameSize; + FullFileName = malloc (FullFileNameSize); if (FullFileName == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Done; @@ -814,11 +808,11 @@ PosixFileRead ( AsciiStrCatS (FullFileName, FullFileNameSize, "/"); AsciiStrCatS (FullFileName, FullFileNameSize, PrivateFile->Dirent->d_name); Status = UnixSimpleFileSystemFileInfo ( - PrivateFile, - FullFileName, - BufferSize, - Buffer - ); + PrivateFile, + FullFileName, + BufferSize, + Buffer + ); free (FullFileName); PrivateFile->Dirent = NULL; @@ -827,8 +821,6 @@ Done: return Status; } - - /** Write data to a file. @@ -849,15 +841,14 @@ Done: **/ EFI_STATUS PosixFileWrite ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN OUT UINTN *BufferSize, + IN VOID *Buffer ) { EMU_EFI_FILE_PRIVATE *PrivateFile; int Res; - PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); if (PrivateFile->fd < 0) { @@ -881,8 +872,6 @@ PosixFileWrite ( return EFI_SUCCESS; } - - /** Set a files current position @@ -895,12 +884,12 @@ PosixFileWrite ( **/ EFI_STATUS PosixFileSetPossition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position + IN EFI_FILE_PROTOCOL *This, + IN UINT64 Position ) { - EMU_EFI_FILE_PRIVATE *PrivateFile; - off_t Pos; + EMU_EFI_FILE_PRIVATE *PrivateFile; + off_t Pos; PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -912,23 +901,24 @@ PosixFileSetPossition ( if (PrivateFile->Dir == NULL) { return EFI_DEVICE_ERROR; } + rewinddir (PrivateFile->Dir); return EFI_SUCCESS; } else { - if (Position == (UINT64) -1) { + if (Position == (UINT64)-1) { Pos = lseek (PrivateFile->fd, 0, SEEK_END); } else { Pos = lseek (PrivateFile->fd, Position, SEEK_SET); } + if (Pos == (off_t)-1) { return ErrnoToEfiStatus (); } + return EFI_SUCCESS; } } - - /** Get a file's current position @@ -941,26 +931,25 @@ PosixFileSetPossition ( **/ EFI_STATUS PosixFileGetPossition ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position + IN EFI_FILE_PROTOCOL *This, + OUT UINT64 *Position ) { EFI_STATUS Status; EMU_EFI_FILE_PRIVATE *PrivateFile; - PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); + PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); if (PrivateFile->IsDirectoryPath) { Status = EFI_UNSUPPORTED; } else { *Position = (UINT64)lseek (PrivateFile->fd, 0, SEEK_CUR); - Status = (*Position == (UINT64) -1) ? ErrnoToEfiStatus () : EFI_SUCCESS; + Status = (*Position == (UINT64)-1) ? ErrnoToEfiStatus () : EFI_SUCCESS; } return Status; } - /** Get information about a file. @@ -981,18 +970,18 @@ PosixFileGetPossition ( **/ EFI_STATUS PosixFileGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ) { - EFI_STATUS Status; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_FILE_SYSTEM_INFO *FileSystemInfoBuffer; - int UnixStatus; - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; - struct statfs buf; + EFI_STATUS Status; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_FILE_SYSTEM_INFO *FileSystemInfoBuffer; + int UnixStatus; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; + struct statfs buf; PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); @@ -1011,25 +1000,23 @@ PosixFileGetInfo ( return EFI_DEVICE_ERROR; } - FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *) Buffer; - FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); - FileSystemInfoBuffer->ReadOnly = FALSE; + FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *)Buffer; + FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); + FileSystemInfoBuffer->ReadOnly = FALSE; // // Succeeded // - FileSystemInfoBuffer->VolumeSize = MultU64x32 (buf.f_blocks, buf.f_bsize); - FileSystemInfoBuffer->FreeSpace = MultU64x32 (buf.f_bavail, buf.f_bsize); - FileSystemInfoBuffer->BlockSize = buf.f_bsize; - + FileSystemInfoBuffer->VolumeSize = MultU64x32 (buf.f_blocks, buf.f_bsize); + FileSystemInfoBuffer->FreeSpace = MultU64x32 (buf.f_bavail, buf.f_bsize); + FileSystemInfoBuffer->BlockSize = buf.f_bsize; StrCpyS ( - (CHAR16 *) FileSystemInfoBuffer->VolumeLabel, + (CHAR16 *)FileSystemInfoBuffer->VolumeLabel, (*BufferSize - SIZE_OF_EFI_FILE_SYSTEM_INFO) / sizeof (CHAR16), PrivateRoot->VolumeLabel ); *BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); - } else if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) { if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) { *BufferSize = StrSize (PrivateRoot->VolumeLabel); @@ -1037,18 +1024,16 @@ PosixFileGetInfo ( } StrCpyS ( - (CHAR16 *) Buffer, + (CHAR16 *)Buffer, *BufferSize / sizeof (CHAR16), PrivateRoot->VolumeLabel ); *BufferSize = StrSize (PrivateRoot->VolumeLabel); - } return Status; } - /** Set information about a file @@ -1068,42 +1053,42 @@ PosixFileGetInfo ( **/ EFI_STATUS PosixFileSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN UINTN BufferSize, + IN VOID *Buffer ) { - EMU_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; - EMU_EFI_FILE_PRIVATE *PrivateFile; - EFI_FILE_INFO *OldFileInfo; - EFI_FILE_INFO *NewFileInfo; - EFI_STATUS Status; - UINTN OldInfoSize; - mode_t NewAttr; - struct stat OldAttr; - CHAR8 *OldFileName; - CHAR8 *NewFileName; - CHAR8 *CharPointer; - BOOLEAN AttrChangeFlag; - BOOLEAN NameChangeFlag; - BOOLEAN SizeChangeFlag; - BOOLEAN TimeChangeFlag; - struct tm NewLastAccessSystemTime; - struct tm NewLastWriteSystemTime; - EFI_FILE_SYSTEM_INFO *NewFileSystemInfo; - CHAR8 *AsciiFilePtr; - CHAR16 *UnicodeFilePtr; - int UnixStatus; - struct utimbuf Utime; - UINTN Size; - - PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); - PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); - errno = 0; - Status = EFI_UNSUPPORTED; - OldFileInfo = NewFileInfo = NULL; - OldFileName = NewFileName = NULL; + EMU_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; + EMU_EFI_FILE_PRIVATE *PrivateFile; + EFI_FILE_INFO *OldFileInfo; + EFI_FILE_INFO *NewFileInfo; + EFI_STATUS Status; + UINTN OldInfoSize; + mode_t NewAttr; + struct stat OldAttr; + CHAR8 *OldFileName; + CHAR8 *NewFileName; + CHAR8 *CharPointer; + BOOLEAN AttrChangeFlag; + BOOLEAN NameChangeFlag; + BOOLEAN SizeChangeFlag; + BOOLEAN TimeChangeFlag; + struct tm NewLastAccessSystemTime; + struct tm NewLastWriteSystemTime; + EFI_FILE_SYSTEM_INFO *NewFileSystemInfo; + CHAR8 *AsciiFilePtr; + CHAR16 *UnicodeFilePtr; + int UnixStatus; + struct utimbuf Utime; + UINTN Size; + + PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); + PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); + errno = 0; + Status = EFI_UNSUPPORTED; + OldFileInfo = NewFileInfo = NULL; + OldFileName = NewFileName = NULL; AttrChangeFlag = NameChangeFlag = SizeChangeFlag = TimeChangeFlag = FALSE; // @@ -1115,7 +1100,7 @@ PosixFileSetInfo ( goto Done; } - NewFileSystemInfo = (EFI_FILE_SYSTEM_INFO *) Buffer; + NewFileSystemInfo = (EFI_FILE_SYSTEM_INFO *)Buffer; free (PrivateRoot->VolumeLabel); @@ -1146,7 +1131,7 @@ PosixFileSetInfo ( StrCpyS ( PrivateRoot->VolumeLabel, StrSize (PrivateRoot->VolumeLabel) / sizeof (CHAR16), - (CHAR16 *) Buffer + (CHAR16 *)Buffer ); Status = EFI_SUCCESS; @@ -1170,11 +1155,12 @@ PosixFileSetInfo ( // // Check for invalid set file information parameters. // - NewFileInfo = (EFI_FILE_INFO *) Buffer; - if (NewFileInfo->Size <= sizeof (EFI_FILE_INFO) || + NewFileInfo = (EFI_FILE_INFO *)Buffer; + if ((NewFileInfo->Size <= sizeof (EFI_FILE_INFO)) || (NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) || - (sizeof (UINTN) == 4 && NewFileInfo->Size > 0xFFFFFFFF) - ) { + ((sizeof (UINTN) == 4) && (NewFileInfo->Size > 0xFFFFFFFF)) + ) + { Status = EFI_INVALID_PARAMETER; goto Done; } @@ -1184,7 +1170,7 @@ PosixFileSetInfo ( // of change request this is. // OldInfoSize = 0; - Status = UnixSimpleFileSystemFileInfo (PrivateFile, NULL, &OldInfoSize, NULL); + Status = UnixSimpleFileSystemFileInfo (PrivateFile, NULL, &OldInfoSize, NULL); if (Status != EFI_BUFFER_TOO_SMALL) { Status = EFI_DEVICE_ERROR; goto Done; @@ -1215,37 +1201,40 @@ PosixFileSetInfo ( // Make full pathname from new filename and rootpath. // if (NewFileInfo->FileName[0] == '\\') { - Size = AsciiStrLen (PrivateRoot->FilePath) + 1 + StrLen (NewFileInfo->FileName) + 1; + Size = AsciiStrLen (PrivateRoot->FilePath) + 1 + StrLen (NewFileInfo->FileName) + 1; NewFileName = malloc (Size); if (NewFileName == NULL) { goto Done; } AsciiStrCpyS (NewFileName, Size, PrivateRoot->FilePath); - AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName); - UnicodeFilePtr = NewFileInfo->FileName + 1; - *AsciiFilePtr++ ='/'; + AsciiFilePtr = NewFileName + AsciiStrLen (NewFileName); + UnicodeFilePtr = NewFileInfo->FileName + 1; + *AsciiFilePtr++ = '/'; } else { - Size = AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1; + Size = AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1; NewFileName = malloc (Size); if (NewFileName == NULL) { goto Done; } AsciiStrCpyS (NewFileName, Size, PrivateRoot->FilePath); - AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName); + AsciiFilePtr = NewFileName + AsciiStrLen (NewFileName); if ((AsciiFilePtr[-1] != '/') && (NewFileInfo->FileName[0] != '/')) { // make sure there is a / between Root FilePath and NewFileInfo Filename AsciiFilePtr[0] = '/'; AsciiFilePtr[1] = '\0'; AsciiFilePtr++; } + UnicodeFilePtr = NewFileInfo->FileName; } + // Convert to ascii. while (*UnicodeFilePtr) { *AsciiFilePtr++ = *UnicodeFilePtr++; } + *AsciiFilePtr = 0; // @@ -1280,15 +1269,18 @@ PosixFileSetInfo ( // if (!IsZero (&NewFileInfo->CreateTime, sizeof (EFI_TIME)) && CompareMem (&NewFileInfo->CreateTime, &OldFileInfo->CreateTime, sizeof (EFI_TIME)) - ) { + ) + { TimeChangeFlag = TRUE; } else if (!IsZero (&NewFileInfo->LastAccessTime, sizeof (EFI_TIME)) && CompareMem (&NewFileInfo->LastAccessTime, &OldFileInfo->LastAccessTime, sizeof (EFI_TIME)) - ) { + ) + { TimeChangeFlag = TRUE; } else if (!IsZero (&NewFileInfo->ModificationTime, sizeof (EFI_TIME)) && CompareMem (&NewFileInfo->ModificationTime, &OldFileInfo->ModificationTime, sizeof (EFI_TIME)) - ) { + ) + { TimeChangeFlag = TRUE; } @@ -1346,7 +1338,7 @@ PosixFileSetInfo ( NewFileName ); } else { - Status = EFI_DEVICE_ERROR; + Status = EFI_DEVICE_ERROR; goto Done; } } @@ -1369,34 +1361,33 @@ PosixFileSetInfo ( Status = ErrnoToEfiStatus (); goto Done; } - } // // Time change // if (TimeChangeFlag) { - NewLastAccessSystemTime.tm_year = NewFileInfo->LastAccessTime.Year; - NewLastAccessSystemTime.tm_mon = NewFileInfo->LastAccessTime.Month; - NewLastAccessSystemTime.tm_mday = NewFileInfo->LastAccessTime.Day; - NewLastAccessSystemTime.tm_hour = NewFileInfo->LastAccessTime.Hour; - NewLastAccessSystemTime.tm_min = NewFileInfo->LastAccessTime.Minute; - NewLastAccessSystemTime.tm_sec = NewFileInfo->LastAccessTime.Second; - NewLastAccessSystemTime.tm_isdst = 0; + NewLastAccessSystemTime.tm_year = NewFileInfo->LastAccessTime.Year; + NewLastAccessSystemTime.tm_mon = NewFileInfo->LastAccessTime.Month; + NewLastAccessSystemTime.tm_mday = NewFileInfo->LastAccessTime.Day; + NewLastAccessSystemTime.tm_hour = NewFileInfo->LastAccessTime.Hour; + NewLastAccessSystemTime.tm_min = NewFileInfo->LastAccessTime.Minute; + NewLastAccessSystemTime.tm_sec = NewFileInfo->LastAccessTime.Second; + NewLastAccessSystemTime.tm_isdst = 0; Utime.actime = mktime (&NewLastAccessSystemTime); - NewLastWriteSystemTime.tm_year = NewFileInfo->ModificationTime.Year; - NewLastWriteSystemTime.tm_mon = NewFileInfo->ModificationTime.Month; - NewLastWriteSystemTime.tm_mday = NewFileInfo->ModificationTime.Day; - NewLastWriteSystemTime.tm_hour = NewFileInfo->ModificationTime.Hour; - NewLastWriteSystemTime.tm_min = NewFileInfo->ModificationTime.Minute; - NewLastWriteSystemTime.tm_sec = NewFileInfo->ModificationTime.Second; - NewLastWriteSystemTime.tm_isdst = 0; + NewLastWriteSystemTime.tm_year = NewFileInfo->ModificationTime.Year; + NewLastWriteSystemTime.tm_mon = NewFileInfo->ModificationTime.Month; + NewLastWriteSystemTime.tm_mday = NewFileInfo->ModificationTime.Day; + NewLastWriteSystemTime.tm_hour = NewFileInfo->ModificationTime.Hour; + NewLastWriteSystemTime.tm_min = NewFileInfo->ModificationTime.Minute; + NewLastWriteSystemTime.tm_sec = NewFileInfo->ModificationTime.Second; + NewLastWriteSystemTime.tm_isdst = 0; Utime.modtime = mktime (&NewLastWriteSystemTime); - if (Utime.actime == (time_t)-1 || Utime.modtime == (time_t)-1) { + if ((Utime.actime == (time_t)-1) || (Utime.modtime == (time_t)-1)) { goto Done; } @@ -1438,7 +1429,6 @@ Done: return Status; } - /** Flush data back for the file handle. @@ -1459,8 +1449,7 @@ PosixFileFlush ( IN EFI_FILE_PROTOCOL *This ) { - EMU_EFI_FILE_PRIVATE *PrivateFile; - + EMU_EFI_FILE_PRIVATE *PrivateFile; PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -1483,11 +1472,9 @@ PosixFileFlush ( return EFI_SUCCESS; } - - EFI_STATUS PosixFileSystmeThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; @@ -1516,8 +1503,8 @@ PosixFileSystmeThunkOpen ( for (i = 0; This->ConfigString[i] != 0; i++) { Private->FilePath[i] = This->ConfigString[i]; } - Private->FilePath[i] = 0; + Private->FilePath[i] = 0; Private->VolumeLabel = malloc (StrSize (L"EFI_EMULATED")); if (Private->VolumeLabel == NULL) { @@ -1525,6 +1512,7 @@ PosixFileSystmeThunkOpen ( free (Private); return EFI_OUT_OF_RESOURCES; } + StrCpyS ( Private->VolumeLabel, StrSize (L"EFI_EMULATED") / sizeof (CHAR16), @@ -1541,10 +1529,9 @@ PosixFileSystmeThunkOpen ( return EFI_SUCCESS; } - EFI_STATUS PosixFileSystmeThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { EMU_SIMPLE_FILE_SYSTEM_PRIVATE *Private; @@ -1566,6 +1553,7 @@ PosixFileSystmeThunkClose ( if (Private->VolumeLabel != NULL) { free (Private->VolumeLabel); } + free (This->Private); This->Private = NULL; } @@ -1573,8 +1561,7 @@ PosixFileSystmeThunkClose ( return EFI_SUCCESS; } - -EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo = { +EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo = { &gEfiSimpleFileSystemProtocolGuid, NULL, NULL, @@ -1583,5 +1570,3 @@ EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo = { GasketPosixFileSystmeThunkClose, NULL }; - - diff --git a/EmulatorPkg/Unix/Host/Pthreads.c b/EmulatorPkg/Unix/Host/Pthreads.c index 025687c356..ec3a38e573 100644 --- a/EmulatorPkg/Unix/Host/Pthreads.c +++ b/EmulatorPkg/Unix/Host/Pthreads.c @@ -12,48 +12,43 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Host.h" #include - UINTN EFIAPI PthreadMutexLock ( - IN VOID *Mutex + IN VOID *Mutex ) { return (UINTN)pthread_mutex_lock ((pthread_mutex_t *)Mutex); } - - UINTN EFIAPI PthreadMutexUnLock ( - IN VOID *Mutex + IN VOID *Mutex ) { return (UINTN)pthread_mutex_unlock ((pthread_mutex_t *)Mutex); } - UINTN EFIAPI PthreadMutexTryLock ( - IN VOID *Mutex + IN VOID *Mutex ) { return (UINTN)pthread_mutex_trylock ((pthread_mutex_t *)Mutex); } - VOID * PthreadMutexInit ( IN VOID ) { - pthread_mutex_t *Mutex; - int err; + pthread_mutex_t *Mutex; + int err; Mutex = malloc (sizeof (pthread_mutex_t)); - err = pthread_mutex_init (Mutex, NULL); + err = pthread_mutex_init (Mutex, NULL); if (err == 0) { return Mutex; } @@ -61,10 +56,9 @@ PthreadMutexInit ( return NULL; } - UINTN PthreadMutexDestroy ( - IN VOID *Mutex + IN VOID *Mutex ) { if (Mutex != NULL) { @@ -76,11 +70,11 @@ PthreadMutexDestroy ( // Can't store this data on PthreadCreate stack so we need a global typedef struct { - pthread_mutex_t Mutex; - THREAD_THUNK_THREAD_ENTRY Start; + pthread_mutex_t Mutex; + THREAD_THUNK_THREAD_ENTRY Start; } THREAD_MANGLE; -THREAD_MANGLE mThreadMangle = { +THREAD_MANGLE mThreadMangle = { PTHREAD_MUTEX_INITIALIZER, NULL }; @@ -90,11 +84,11 @@ SecFakePthreadStart ( VOID *Context ) { - THREAD_THUNK_THREAD_ENTRY Start; - sigset_t SigMask; + THREAD_THUNK_THREAD_ENTRY Start; + sigset_t SigMask; // Save global on the stack before we unlock - Start = mThreadMangle.Start; + Start = mThreadMangle.Start; pthread_mutex_unlock (&mThreadMangle.Mutex); // Mask all signals to the APs @@ -109,19 +103,19 @@ SecFakePthreadStart ( // This is a great example of how all problems in computer // science can be solved by adding another level of indirection // - return (VOID *)ReverseGasketUint64 ((UINTN)Start, (UINTN)Context); + return (VOID *)ReverseGasketUint64 ((UINTN)Start, (UINTN)Context); } UINTN PthreadCreate ( - IN VOID *Thread, - IN VOID *Attribute, - IN THREAD_THUNK_THREAD_ENTRY Start, - IN VOID *Context + IN VOID *Thread, + IN VOID *Attribute, + IN THREAD_THUNK_THREAD_ENTRY Start, + IN VOID *Context ) { - int err; - BOOLEAN EnabledOnEntry; + int err; + BOOLEAN EnabledOnEntry; // // Threads inherit interrupt state so disable interrupts before we start thread @@ -135,7 +129,7 @@ PthreadCreate ( // Acquire lock for global, SecFakePthreadStart runs in a different thread. pthread_mutex_lock (&mThreadMangle.Mutex); - mThreadMangle.Start = Start; + mThreadMangle.Start = Start; err = pthread_create (Thread, Attribute, SecFakePthreadStart, Context); if (err != 0) { @@ -151,17 +145,15 @@ PthreadCreate ( return err; } - VOID PthreadExit ( - IN VOID *ValuePtr + IN VOID *ValuePtr ) { pthread_exit (ValuePtr); return; } - UINTN PthreadSelf ( VOID @@ -173,8 +165,7 @@ PthreadSelf ( return (UINTN)pthread_self (); } - -EMU_THREAD_THUNK_PROTOCOL gPthreadThunk = { +EMU_THREAD_THUNK_PROTOCOL gPthreadThunk = { GasketPthreadMutexLock, GasketPthreadMutexUnLock, GasketPthreadMutexTryLock, @@ -185,10 +176,9 @@ EMU_THREAD_THUNK_PROTOCOL gPthreadThunk = { GasketPthreadSelf }; - EFI_STATUS PthreadOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { if (This->Instance != 0) { @@ -206,17 +196,15 @@ PthreadOpen ( return EFI_SUCCESS; } - EFI_STATUS PthreadClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { return EFI_SUCCESS; } - -EMU_IO_THUNK_PROTOCOL gPthreadThunkIo = { +EMU_IO_THUNK_PROTOCOL gPthreadThunkIo = { &gEmuThreadThunkProtocolGuid, NULL, NULL, @@ -225,5 +213,3 @@ EMU_IO_THUNK_PROTOCOL gPthreadThunkIo = { GasketPthreadClose, NULL }; - - diff --git a/EmulatorPkg/Unix/Host/X11GraphicsWindow.c b/EmulatorPkg/Unix/Host/X11GraphicsWindow.c index 5325a0e35b..a30cc19dbe 100644 --- a/EmulatorPkg/Unix/Host/X11GraphicsWindow.c +++ b/EmulatorPkg/Unix/Host/X11GraphicsWindow.c @@ -22,140 +22,147 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define KEYSYM_LOWER 0 #define KEYSYM_UPPER 1 - struct uga_drv_shift_mask { - unsigned char shift; - unsigned char size; - unsigned char csize; + unsigned char shift; + unsigned char size; + unsigned char csize; }; -#define NBR_KEYS 32 +#define NBR_KEYS 32 typedef struct { - EMU_GRAPHICS_WINDOW_PROTOCOL GraphicsIo; + EMU_GRAPHICS_WINDOW_PROTOCOL GraphicsIo; - Display *display; - int screen; // values for window_size in main - Window win; - GC gc; - Visual *visual; + Display *display; + int screen; // values for window_size in main + Window win; + GC gc; + Visual *visual; - int depth; - unsigned int width; - unsigned int height; - unsigned int line_bytes; - unsigned int pixel_shift; - unsigned char *image_data; + int depth; + unsigned int width; + unsigned int height; + unsigned int line_bytes; + unsigned int pixel_shift; + unsigned char *image_data; - struct uga_drv_shift_mask r, g, b; + struct uga_drv_shift_mask r, g, b; - int use_shm; - XShmSegmentInfo xshm_info; - XImage *image; - char *Title; + int use_shm; + XShmSegmentInfo xshm_info; + XImage *image; + char *Title; - unsigned int key_rd; - unsigned int key_wr; - unsigned int key_count; - EFI_KEY_DATA keys[NBR_KEYS]; + unsigned int key_rd; + unsigned int key_wr; + unsigned int key_count; + EFI_KEY_DATA keys[NBR_KEYS]; - EFI_KEY_STATE KeyState; + EFI_KEY_STATE KeyState; EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeRegisterdKeyCallback; EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakRegisterdKeyCallback; VOID *RegisterdKeyCallbackContext; - int previous_x; - int previous_y; - EFI_SIMPLE_POINTER_STATE pointer_state; - int pointer_state_changed; + int previous_x; + int previous_y; + EFI_SIMPLE_POINTER_STATE pointer_state; + int pointer_state_changed; } GRAPHICS_IO_PRIVATE; void -HandleEvents( - IN GRAPHICS_IO_PRIVATE *Drv +HandleEvents ( + IN GRAPHICS_IO_PRIVATE *Drv ); void fill_shift_mask ( - IN struct uga_drv_shift_mask *sm, - IN unsigned long mask + IN struct uga_drv_shift_mask *sm, + IN unsigned long mask ) { sm->shift = 0; - sm->size = 0; + sm->size = 0; while ((mask & 1) == 0) { mask >>= 1; sm->shift++; } + while (mask & 1) { sm->size++; mask >>= 1; } + sm->csize = 8 - sm->size; } int TryCreateShmImage ( - IN GRAPHICS_IO_PRIVATE *Drv + IN GRAPHICS_IO_PRIVATE *Drv ) { Drv->image = XShmCreateImage ( - Drv->display, Drv->visual, - Drv->depth, ZPixmap, NULL, &Drv->xshm_info, - Drv->width, Drv->height + Drv->display, + Drv->visual, + Drv->depth, + ZPixmap, + NULL, + &Drv->xshm_info, + Drv->width, + Drv->height ); if (Drv->image == NULL) { return 0; } switch (Drv->image->bitmap_unit) { - case 32: - Drv->pixel_shift = 2; - break; - case 16: - Drv->pixel_shift = 1; - break; - case 8: - Drv->pixel_shift = 0; - break; + case 32: + Drv->pixel_shift = 2; + break; + case 16: + Drv->pixel_shift = 1; + break; + case 8: + Drv->pixel_shift = 0; + break; } Drv->xshm_info.shmid = shmget ( - IPC_PRIVATE, Drv->image->bytes_per_line * Drv->image->height, - IPC_CREAT | 0777 - ); + IPC_PRIVATE, + Drv->image->bytes_per_line * Drv->image->height, + IPC_CREAT | 0777 + ); if (Drv->xshm_info.shmid < 0) { - XDestroyImage(Drv->image); + XDestroyImage (Drv->image); return 0; } Drv->image_data = shmat (Drv->xshm_info.shmid, NULL, 0); - if(!Drv->image_data) { + if (!Drv->image_data) { shmctl (Drv->xshm_info.shmid, IPC_RMID, NULL); - XDestroyImage(Drv->image); + XDestroyImage (Drv->image); return 0; } -#ifndef __APPLE__ + #ifndef __APPLE__ // // This closes shared memory in real time on OS X. Only closes after folks quit using // it on Linux. // shmctl (Drv->xshm_info.shmid, IPC_RMID, NULL); -#endif + #endif - Drv->xshm_info.shmaddr = (char*)Drv->image_data; - Drv->image->data = (char*)Drv->image_data; + Drv->xshm_info.shmaddr = (char *)Drv->image_data; + Drv->image->data = (char *)Drv->image_data; if (!XShmAttach (Drv->display, &Drv->xshm_info)) { shmdt (Drv->image_data); - XDestroyImage(Drv->image); + XDestroyImage (Drv->image); return 0; } + return 1; } - EFI_STATUS X11Size ( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, @@ -163,8 +170,8 @@ X11Size ( IN UINT32 Height ) { - GRAPHICS_IO_PRIVATE *Drv; - XSizeHints size_hints; + GRAPHICS_IO_PRIVATE *Drv; + XSizeHints size_hints; // Destroy current buffer if created. Drv = (GRAPHICS_IO_PRIVATE *)GraphicsIo; @@ -177,15 +184,15 @@ X11Size ( } Drv->image_data = NULL; - Drv->image = NULL; + Drv->image = NULL; } - Drv->width = Width; + Drv->width = Width; Drv->height = Height; XResizeWindow (Drv->display, Drv->win, Width, Height); // Allocate image. - if (XShmQueryExtension(Drv->display) && TryCreateShmImage(Drv)) { + if (XShmQueryExtension (Drv->display) && TryCreateShmImage (Drv)) { Drv->use_shm = 1; } else { Drv->use_shm = 0; @@ -198,12 +205,18 @@ X11Size ( } Drv->image_data = malloc ((Drv->width * Drv->height) << Drv->pixel_shift); - Drv->image = XCreateImage ( - Drv->display, Drv->visual, Drv->depth, - ZPixmap, 0, (char *)Drv->image_data, - Drv->width, Drv->height, - 8 << Drv->pixel_shift, 0 - ); + Drv->image = XCreateImage ( + Drv->display, + Drv->visual, + Drv->depth, + ZPixmap, + 0, + (char *)Drv->image_data, + Drv->width, + Drv->height, + 8 << Drv->pixel_shift, + 0 + ); } Drv->line_bytes = Drv->image->bytes_per_line; @@ -213,8 +226,8 @@ X11Size ( fill_shift_mask (&Drv->b, Drv->image->blue_mask); // Set WM hints. - size_hints.flags = PSize | PMinSize | PMaxSize; - size_hints.min_width = size_hints.max_width = size_hints.base_width = Width; + size_hints.flags = PSize | PMinSize | PMaxSize; + size_hints.min_width = size_hints.max_width = size_hints.base_width = Width; size_hints.min_height = size_hints.max_height = size_hints.base_height = Height; XSetWMNormalHints (Drv->display, Drv->win, &size_hints); @@ -225,9 +238,9 @@ X11Size ( void handleKeyEvent ( - IN GRAPHICS_IO_PRIVATE *Drv, - IN XEvent *ev, - IN BOOLEAN Make + IN GRAPHICS_IO_PRIVATE *Drv, + IN XEvent *ev, + IN BOOLEAN Make ) { KeySym *KeySym; @@ -250,8 +263,8 @@ handleKeyEvent ( // KeySym = XGetKeyboardMapping (Drv->display, ev->xkey.keycode, 1, &KeySymArraySize); - KeyData.Key.ScanCode = 0; - KeyData.Key.UnicodeChar = 0; + KeyData.Key.ScanCode = 0; + KeyData.Key.UnicodeChar = 0; KeyData.KeyState.KeyShiftState = 0; // @@ -268,186 +281,250 @@ handleKeyEvent ( // Skipping EFI_MENU_KEY_PRESSED and EFI_SYS_REQ_PRESSED switch (*KeySym) { - case XK_Control_R: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_RIGHT_CONTROL_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_RIGHT_CONTROL_PRESSED; - } - break; - case XK_Control_L: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_LEFT_CONTROL_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_LEFT_CONTROL_PRESSED; - } - break; - - case XK_Shift_R: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_RIGHT_SHIFT_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_RIGHT_SHIFT_PRESSED; - } - break; - case XK_Shift_L: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_LEFT_SHIFT_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_LEFT_SHIFT_PRESSED; - } - break; - - case XK_Mode_switch: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_LEFT_ALT_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_LEFT_ALT_PRESSED; - } - break; - - case XK_Meta_R: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_RIGHT_LOGO_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_RIGHT_LOGO_PRESSED; - } - break; - case XK_Meta_L: - if (Make) { - Drv->KeyState.KeyShiftState |= EFI_LEFT_LOGO_PRESSED; - } else { - Drv->KeyState.KeyShiftState &= ~EFI_LEFT_LOGO_PRESSED; - } - break; - - case XK_KP_Home: - case XK_Home: KeyData.Key.ScanCode = SCAN_HOME; break; - - case XK_KP_End: - case XK_End: KeyData.Key.ScanCode = SCAN_END; break; - - case XK_KP_Left: - case XK_Left: KeyData.Key.ScanCode = SCAN_LEFT; break; - - case XK_KP_Right: - case XK_Right: KeyData.Key.ScanCode = SCAN_RIGHT; break; - - case XK_KP_Up: - case XK_Up: KeyData.Key.ScanCode = SCAN_UP; break; - - case XK_KP_Down: - case XK_Down: KeyData.Key.ScanCode = SCAN_DOWN; break; - - case XK_KP_Delete: - case XK_Delete: KeyData.Key.ScanCode = SCAN_DELETE; break; - - case XK_KP_Insert: - case XK_Insert: KeyData.Key.ScanCode = SCAN_INSERT; break; - - case XK_KP_Page_Up: - case XK_Page_Up: KeyData.Key.ScanCode = SCAN_PAGE_UP; break; - - case XK_KP_Page_Down: - case XK_Page_Down: KeyData.Key.ScanCode = SCAN_PAGE_DOWN; break; - - case XK_Escape: KeyData.Key.ScanCode = SCAN_ESC; break; - - case XK_Pause: KeyData.Key.ScanCode = SCAN_PAUSE; break; - - case XK_KP_F1: - case XK_F1: KeyData.Key.ScanCode = SCAN_F1; break; - - case XK_KP_F2: - case XK_F2: KeyData.Key.ScanCode = SCAN_F2; break; - - case XK_KP_F3: - case XK_F3: KeyData.Key.ScanCode = SCAN_F3; break; - - case XK_KP_F4: - case XK_F4: KeyData.Key.ScanCode = SCAN_F4; break; + case XK_Control_R: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_RIGHT_CONTROL_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_RIGHT_CONTROL_PRESSED; + } - case XK_F5: KeyData.Key.ScanCode = SCAN_F5; break; - case XK_F6: KeyData.Key.ScanCode = SCAN_F6; break; - case XK_F7: KeyData.Key.ScanCode = SCAN_F7; break; + break; + case XK_Control_L: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_LEFT_CONTROL_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_LEFT_CONTROL_PRESSED; + } - // Don't map into X11 by default on a Mac - // System Preferences->Keyboard->Keyboard Shortcuts can be configured - // to not use higher function keys as shortcuts and the will show up - // in X11. - case XK_F8: KeyData.Key.ScanCode = SCAN_F8; break; - case XK_F9: KeyData.Key.ScanCode = SCAN_F9; break; - case XK_F10: KeyData.Key.ScanCode = SCAN_F10; break; + break; - case XK_F11: KeyData.Key.ScanCode = SCAN_F11; break; - case XK_F12: KeyData.Key.ScanCode = SCAN_F12; break; + case XK_Shift_R: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_RIGHT_SHIFT_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_RIGHT_SHIFT_PRESSED; + } - case XK_F13: KeyData.Key.ScanCode = SCAN_F13; break; - case XK_F14: KeyData.Key.ScanCode = SCAN_F14; break; - case XK_F15: KeyData.Key.ScanCode = SCAN_F15; break; - case XK_F16: KeyData.Key.ScanCode = SCAN_F16; break; - case XK_F17: KeyData.Key.ScanCode = SCAN_F17; break; - case XK_F18: KeyData.Key.ScanCode = SCAN_F18; break; - case XK_F19: KeyData.Key.ScanCode = SCAN_F19; break; - case XK_F20: KeyData.Key.ScanCode = SCAN_F20; break; - case XK_F21: KeyData.Key.ScanCode = SCAN_F21; break; - case XK_F22: KeyData.Key.ScanCode = SCAN_F22; break; - case XK_F23: KeyData.Key.ScanCode = SCAN_F23; break; - case XK_F24: KeyData.Key.ScanCode = SCAN_F24; break; + break; + case XK_Shift_L: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_LEFT_SHIFT_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_LEFT_SHIFT_PRESSED; + } - // No mapping in X11 - //case XK_: KeyData.Key.ScanCode = SCAN_MUTE; break; - //case XK_: KeyData.Key.ScanCode = SCAN_VOLUME_UP; break; - //case XK_: KeyData.Key.ScanCode = SCAN_VOLUME_DOWN; break; - //case XK_: KeyData.Key.ScanCode = SCAN_BRIGHTNESS_UP; break; - //case XK_: KeyData.Key.ScanCode = SCAN_BRIGHTNESS_DOWN; break; - //case XK_: KeyData.Key.ScanCode = SCAN_SUSPEND; break; - //case XK_: KeyData.Key.ScanCode = SCAN_HIBERNATE; break; - //case XK_: KeyData.Key.ScanCode = SCAN_TOGGLE_DISPLAY; break; - //case XK_: KeyData.Key.ScanCode = SCAN_RECOVERY; break; - //case XK_: KeyData.Key.ScanCode = SCAN_EJECT; break; + break; - case XK_BackSpace: KeyData.Key.UnicodeChar = 0x0008; break; + case XK_Mode_switch: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_LEFT_ALT_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_LEFT_ALT_PRESSED; + } - case XK_KP_Tab: - case XK_Tab: KeyData.Key.UnicodeChar = 0x0009; break; + break; - case XK_Linefeed: KeyData.Key.UnicodeChar = 0x000a; break; + case XK_Meta_R: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_RIGHT_LOGO_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_RIGHT_LOGO_PRESSED; + } - case XK_KP_Enter: - case XK_Return: KeyData.Key.UnicodeChar = 0x000d; break; + break; + case XK_Meta_L: + if (Make) { + Drv->KeyState.KeyShiftState |= EFI_LEFT_LOGO_PRESSED; + } else { + Drv->KeyState.KeyShiftState &= ~EFI_LEFT_LOGO_PRESSED; + } - case XK_KP_Equal : KeyData.Key.UnicodeChar = L'='; break; - case XK_KP_Multiply : KeyData.Key.UnicodeChar = L'*'; break; - case XK_KP_Add : KeyData.Key.UnicodeChar = L'+'; break; - case XK_KP_Separator : KeyData.Key.UnicodeChar = L'~'; break; - case XK_KP_Subtract : KeyData.Key.UnicodeChar = L'-'; break; - case XK_KP_Decimal : KeyData.Key.UnicodeChar = L'.'; break; - case XK_KP_Divide : KeyData.Key.UnicodeChar = L'/'; break; - - case XK_KP_0 : KeyData.Key.UnicodeChar = L'0'; break; - case XK_KP_1 : KeyData.Key.UnicodeChar = L'1'; break; - case XK_KP_2 : KeyData.Key.UnicodeChar = L'2'; break; - case XK_KP_3 : KeyData.Key.UnicodeChar = L'3'; break; - case XK_KP_4 : KeyData.Key.UnicodeChar = L'4'; break; - case XK_KP_5 : KeyData.Key.UnicodeChar = L'5'; break; - case XK_KP_6 : KeyData.Key.UnicodeChar = L'6'; break; - case XK_KP_7 : KeyData.Key.UnicodeChar = L'7'; break; - case XK_KP_8 : KeyData.Key.UnicodeChar = L'8'; break; - case XK_KP_9 : KeyData.Key.UnicodeChar = L'9'; break; - - default: - ; + break; + + case XK_KP_Home: + case XK_Home: KeyData.Key.ScanCode = SCAN_HOME; + break; + + case XK_KP_End: + case XK_End: KeyData.Key.ScanCode = SCAN_END; + break; + + case XK_KP_Left: + case XK_Left: KeyData.Key.ScanCode = SCAN_LEFT; + break; + + case XK_KP_Right: + case XK_Right: KeyData.Key.ScanCode = SCAN_RIGHT; + break; + + case XK_KP_Up: + case XK_Up: KeyData.Key.ScanCode = SCAN_UP; + break; + + case XK_KP_Down: + case XK_Down: KeyData.Key.ScanCode = SCAN_DOWN; + break; + + case XK_KP_Delete: + case XK_Delete: KeyData.Key.ScanCode = SCAN_DELETE; + break; + + case XK_KP_Insert: + case XK_Insert: KeyData.Key.ScanCode = SCAN_INSERT; + break; + + case XK_KP_Page_Up: + case XK_Page_Up: KeyData.Key.ScanCode = SCAN_PAGE_UP; + break; + + case XK_KP_Page_Down: + case XK_Page_Down: KeyData.Key.ScanCode = SCAN_PAGE_DOWN; + break; + + case XK_Escape: KeyData.Key.ScanCode = SCAN_ESC; + break; + + case XK_Pause: KeyData.Key.ScanCode = SCAN_PAUSE; + break; + + case XK_KP_F1: + case XK_F1: KeyData.Key.ScanCode = SCAN_F1; + break; + + case XK_KP_F2: + case XK_F2: KeyData.Key.ScanCode = SCAN_F2; + break; + + case XK_KP_F3: + case XK_F3: KeyData.Key.ScanCode = SCAN_F3; + break; + + case XK_KP_F4: + case XK_F4: KeyData.Key.ScanCode = SCAN_F4; + break; + + case XK_F5: KeyData.Key.ScanCode = SCAN_F5; + break; + case XK_F6: KeyData.Key.ScanCode = SCAN_F6; + break; + case XK_F7: KeyData.Key.ScanCode = SCAN_F7; + break; + + // Don't map into X11 by default on a Mac + // System Preferences->Keyboard->Keyboard Shortcuts can be configured + // to not use higher function keys as shortcuts and the will show up + // in X11. + case XK_F8: KeyData.Key.ScanCode = SCAN_F8; + break; + case XK_F9: KeyData.Key.ScanCode = SCAN_F9; + break; + case XK_F10: KeyData.Key.ScanCode = SCAN_F10; + break; + + case XK_F11: KeyData.Key.ScanCode = SCAN_F11; + break; + case XK_F12: KeyData.Key.ScanCode = SCAN_F12; + break; + + case XK_F13: KeyData.Key.ScanCode = SCAN_F13; + break; + case XK_F14: KeyData.Key.ScanCode = SCAN_F14; + break; + case XK_F15: KeyData.Key.ScanCode = SCAN_F15; + break; + case XK_F16: KeyData.Key.ScanCode = SCAN_F16; + break; + case XK_F17: KeyData.Key.ScanCode = SCAN_F17; + break; + case XK_F18: KeyData.Key.ScanCode = SCAN_F18; + break; + case XK_F19: KeyData.Key.ScanCode = SCAN_F19; + break; + case XK_F20: KeyData.Key.ScanCode = SCAN_F20; + break; + case XK_F21: KeyData.Key.ScanCode = SCAN_F21; + break; + case XK_F22: KeyData.Key.ScanCode = SCAN_F22; + break; + case XK_F23: KeyData.Key.ScanCode = SCAN_F23; + break; + case XK_F24: KeyData.Key.ScanCode = SCAN_F24; + break; + + // No mapping in X11 + // case XK_: KeyData.Key.ScanCode = SCAN_MUTE; break; + // case XK_: KeyData.Key.ScanCode = SCAN_VOLUME_UP; break; + // case XK_: KeyData.Key.ScanCode = SCAN_VOLUME_DOWN; break; + // case XK_: KeyData.Key.ScanCode = SCAN_BRIGHTNESS_UP; break; + // case XK_: KeyData.Key.ScanCode = SCAN_BRIGHTNESS_DOWN; break; + // case XK_: KeyData.Key.ScanCode = SCAN_SUSPEND; break; + // case XK_: KeyData.Key.ScanCode = SCAN_HIBERNATE; break; + // case XK_: KeyData.Key.ScanCode = SCAN_TOGGLE_DISPLAY; break; + // case XK_: KeyData.Key.ScanCode = SCAN_RECOVERY; break; + // case XK_: KeyData.Key.ScanCode = SCAN_EJECT; break; + + case XK_BackSpace: KeyData.Key.UnicodeChar = 0x0008; + break; + + case XK_KP_Tab: + case XK_Tab: KeyData.Key.UnicodeChar = 0x0009; + break; + + case XK_Linefeed: KeyData.Key.UnicodeChar = 0x000a; + break; + + case XK_KP_Enter: + case XK_Return: KeyData.Key.UnicodeChar = 0x000d; + break; + + case XK_KP_Equal: KeyData.Key.UnicodeChar = L'='; + break; + case XK_KP_Multiply: KeyData.Key.UnicodeChar = L'*'; + break; + case XK_KP_Add: KeyData.Key.UnicodeChar = L'+'; + break; + case XK_KP_Separator: KeyData.Key.UnicodeChar = L'~'; + break; + case XK_KP_Subtract: KeyData.Key.UnicodeChar = L'-'; + break; + case XK_KP_Decimal: KeyData.Key.UnicodeChar = L'.'; + break; + case XK_KP_Divide: KeyData.Key.UnicodeChar = L'/'; + break; + + case XK_KP_0: KeyData.Key.UnicodeChar = L'0'; + break; + case XK_KP_1: KeyData.Key.UnicodeChar = L'1'; + break; + case XK_KP_2: KeyData.Key.UnicodeChar = L'2'; + break; + case XK_KP_3: KeyData.Key.UnicodeChar = L'3'; + break; + case XK_KP_4: KeyData.Key.UnicodeChar = L'4'; + break; + case XK_KP_5: KeyData.Key.UnicodeChar = L'5'; + break; + case XK_KP_6: KeyData.Key.UnicodeChar = L'6'; + break; + case XK_KP_7: KeyData.Key.UnicodeChar = L'7'; + break; + case XK_KP_8: KeyData.Key.UnicodeChar = L'8'; + break; + case XK_KP_9: KeyData.Key.UnicodeChar = L'9'; + break; + + default: + ; } // The global state is our state - KeyData.KeyState.KeyShiftState = Drv->KeyState.KeyShiftState; + KeyData.KeyState.KeyShiftState = Drv->KeyState.KeyShiftState; KeyData.KeyState.KeyToggleState = Drv->KeyState.KeyToggleState; if (*KeySym < XK_BackSpace) { if (((Drv->KeyState.KeyShiftState & (EFI_LEFT_SHIFT_PRESSED | EFI_RIGHT_SHIFT_PRESSED)) != 0) || - ((Drv->KeyState.KeyToggleState & EFI_CAPS_LOCK_ACTIVE) != 0) ) { - + ((Drv->KeyState.KeyToggleState & EFI_CAPS_LOCK_ACTIVE) != 0)) + { KeyData.Key.UnicodeChar = (CHAR16)KeySym[KEYSYM_UPPER]; // Per UEFI spec since we converted the Unicode clear the shift bits we pass up @@ -457,7 +534,6 @@ handleKeyEvent ( } } else { // XK_BackSpace is the start of XK_MISCELLANY. These are the XK_? keys we process in this file - ; } if (Make) { @@ -465,32 +541,31 @@ handleKeyEvent ( Drv->key_wr = (Drv->key_wr + 1) % NBR_KEYS; Drv->key_count++; if (Drv->MakeRegisterdKeyCallback != NULL) { - ReverseGasketUint64Uint64 (Drv->MakeRegisterdKeyCallback ,Drv->RegisterdKeyCallbackContext, &KeyData); + ReverseGasketUint64Uint64 (Drv->MakeRegisterdKeyCallback, Drv->RegisterdKeyCallbackContext, &KeyData); } } else { if (Drv->BreakRegisterdKeyCallback != NULL) { - ReverseGasketUint64Uint64 (Drv->BreakRegisterdKeyCallback ,Drv->RegisterdKeyCallbackContext, &KeyData); + ReverseGasketUint64Uint64 (Drv->BreakRegisterdKeyCallback, Drv->RegisterdKeyCallbackContext, &KeyData); } } } - void -handleMouseMoved( - IN GRAPHICS_IO_PRIVATE *Drv, - IN XEvent *ev +handleMouseMoved ( + IN GRAPHICS_IO_PRIVATE *Drv, + IN XEvent *ev ) { if (ev->xmotion.x != Drv->previous_x) { - Drv->pointer_state.RelativeMovementX += ( ev->xmotion.x - Drv->previous_x ); - Drv->previous_x = ev->xmotion.x; - Drv->pointer_state_changed = 1; + Drv->pointer_state.RelativeMovementX += (ev->xmotion.x - Drv->previous_x); + Drv->previous_x = ev->xmotion.x; + Drv->pointer_state_changed = 1; } if (ev->xmotion.y != Drv->previous_y) { - Drv->pointer_state.RelativeMovementY += ( ev->xmotion.y - Drv->previous_y ); - Drv->previous_y = ev->xmotion.y; - Drv->pointer_state_changed = 1; + Drv->pointer_state.RelativeMovementY += (ev->xmotion.y - Drv->previous_y); + Drv->previous_y = ev->xmotion.y; + Drv->pointer_state_changed = 1; } Drv->pointer_state.RelativeMovementZ = 0; @@ -498,90 +573,124 @@ handleMouseMoved( void handleMouseDown ( - IN GRAPHICS_IO_PRIVATE *Drv, - IN XEvent *ev, - IN BOOLEAN Pressed + IN GRAPHICS_IO_PRIVATE *Drv, + IN XEvent *ev, + IN BOOLEAN Pressed ) { if (ev->xbutton.button == Button1) { - Drv->pointer_state_changed = (Drv->pointer_state.LeftButton != Pressed); + Drv->pointer_state_changed = (Drv->pointer_state.LeftButton != Pressed); Drv->pointer_state.LeftButton = Pressed; } + if ( ev->xbutton.button == Button2 ) { - Drv->pointer_state_changed = (Drv->pointer_state.RightButton != Pressed); + Drv->pointer_state_changed = (Drv->pointer_state.RightButton != Pressed); Drv->pointer_state.RightButton = Pressed; } } void Redraw ( - IN GRAPHICS_IO_PRIVATE *Drv, - IN UINTN X, - IN UINTN Y, - IN UINTN Width, - IN UINTN Height + IN GRAPHICS_IO_PRIVATE *Drv, + IN UINTN X, + IN UINTN Y, + IN UINTN Width, + IN UINTN Height ) { if (Drv->use_shm) { XShmPutImage ( - Drv->display, Drv->win, Drv->gc, Drv->image, X, Y, X, Y, Width, Height, False + Drv->display, + Drv->win, + Drv->gc, + Drv->image, + X, + Y, + X, + Y, + Width, + Height, + False ); } else { XPutImage ( - Drv->display, Drv->win, Drv->gc, Drv->image, X, Y, X, Y, Width, Height + Drv->display, + Drv->win, + Drv->gc, + Drv->image, + X, + Y, + X, + Y, + Width, + Height ); } - XFlush(Drv->display); + + XFlush (Drv->display); } void -HandleEvent(GRAPHICS_IO_PRIVATE *Drv, XEvent *ev) +HandleEvent ( + GRAPHICS_IO_PRIVATE *Drv, + XEvent *ev + ) { switch (ev->type) { - case Expose: - Redraw (Drv, ev->xexpose.x, ev->xexpose.y, - ev->xexpose.width, ev->xexpose.height); - break; - case GraphicsExpose: - Redraw (Drv, ev->xgraphicsexpose.x, ev->xgraphicsexpose.y, - ev->xgraphicsexpose.width, ev->xgraphicsexpose.height); - break; - case KeyPress: - handleKeyEvent (Drv, ev, TRUE); - break; - case KeyRelease: - handleKeyEvent (Drv, ev, FALSE); - break; - case MappingNotify: - XRefreshKeyboardMapping (&ev->xmapping); - break; - case MotionNotify: - handleMouseMoved (Drv, ev); - break; - case ButtonPress: - handleMouseDown (Drv, ev, TRUE); - break; - case ButtonRelease: - handleMouseDown (Drv, ev, FALSE); - break; -#if 0 - case DestroyNotify: - XCloseDisplay (Drv->display); - exit (1); - break; -#endif - case NoExpose: - default: - break; + case Expose: + Redraw ( + Drv, + ev->xexpose.x, + ev->xexpose.y, + ev->xexpose.width, + ev->xexpose.height + ); + break; + case GraphicsExpose: + Redraw ( + Drv, + ev->xgraphicsexpose.x, + ev->xgraphicsexpose.y, + ev->xgraphicsexpose.width, + ev->xgraphicsexpose.height + ); + break; + case KeyPress: + handleKeyEvent (Drv, ev, TRUE); + break; + case KeyRelease: + handleKeyEvent (Drv, ev, FALSE); + break; + case MappingNotify: + XRefreshKeyboardMapping (&ev->xmapping); + break; + case MotionNotify: + handleMouseMoved (Drv, ev); + break; + case ButtonPress: + handleMouseDown (Drv, ev, TRUE); + break; + case ButtonRelease: + handleMouseDown (Drv, ev, FALSE); + break; + #if 0 + case DestroyNotify: + XCloseDisplay (Drv->display); + exit (1); + break; + #endif + case NoExpose: + default: + break; } } void HandleEvents ( - IN GRAPHICS_IO_PRIVATE *Drv + IN GRAPHICS_IO_PRIVATE *Drv ) { - XEvent ev; + XEvent ev; while (XPending (Drv->display) != 0) { XNextEvent (Drv->display, &ev); @@ -591,37 +700,36 @@ HandleEvents ( unsigned long X11PixelToColor ( - IN GRAPHICS_IO_PRIVATE *Drv, - IN EFI_UGA_PIXEL pixel + IN GRAPHICS_IO_PRIVATE *Drv, + IN EFI_UGA_PIXEL pixel ) { return ((pixel.Red >> Drv->r.csize) << Drv->r.shift) - | ((pixel.Green >> Drv->g.csize) << Drv->g.shift) - | ((pixel.Blue >> Drv->b.csize) << Drv->b.shift); + | ((pixel.Green >> Drv->g.csize) << Drv->g.shift) + | ((pixel.Blue >> Drv->b.csize) << Drv->b.shift); } EFI_UGA_PIXEL X11ColorToPixel ( - IN GRAPHICS_IO_PRIVATE *Drv, - IN unsigned long val + IN GRAPHICS_IO_PRIVATE *Drv, + IN unsigned long val ) { - EFI_UGA_PIXEL Pixel; + EFI_UGA_PIXEL Pixel; memset (&Pixel, 0, sizeof (EFI_UGA_PIXEL)); // Truncation not an issue since X11 and EFI are both using 8 bits per color - Pixel.Red = (val >> Drv->r.shift) << Drv->r.csize; + Pixel.Red = (val >> Drv->r.shift) << Drv->r.csize; Pixel.Green = (val >> Drv->g.shift) << Drv->g.csize; - Pixel.Blue = (val >> Drv->b.shift) << Drv->b.csize; + Pixel.Blue = (val >> Drv->b.shift) << Drv->b.csize; return Pixel; } - EFI_STATUS X11CheckKey ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo ) { GRAPHICS_IO_PRIVATE *Drv; @@ -643,8 +751,8 @@ X11GetKey ( IN EFI_KEY_DATA *KeyData ) { - EFI_STATUS EfiStatus; - GRAPHICS_IO_PRIVATE *Drv; + EFI_STATUS EfiStatus; + GRAPHICS_IO_PRIVATE *Drv; Drv = (GRAPHICS_IO_PRIVATE *)GraphicsIo; @@ -660,11 +768,10 @@ X11GetKey ( return EFI_SUCCESS; } - EFI_STATUS X11KeySetState ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EFI_KEY_TOGGLE_STATE *KeyToggleState + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EFI_KEY_TOGGLE_STATE *KeyToggleState ) { GRAPHICS_IO_PRIVATE *Drv; @@ -684,13 +791,12 @@ X11KeySetState ( return EFI_SUCCESS; } - EFI_STATUS X11RegisterKeyNotify ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, - IN VOID *Context + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, + IN VOID *Context ) { GRAPHICS_IO_PRIVATE *Drv; @@ -704,36 +810,35 @@ X11RegisterKeyNotify ( return EFI_SUCCESS; } - EFI_STATUS X11Blt ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, - IN EFI_UGA_BLT_OPERATION BltOperation, - IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, + IN EFI_UGA_BLT_OPERATION BltOperation, + IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args ) { - GRAPHICS_IO_PRIVATE *Private; - UINTN DstY; - UINTN SrcY; - UINTN DstX; - UINTN SrcX; - UINTN Index; - EFI_UGA_PIXEL *Blt; - UINT8 *Dst; - UINT8 *Src; - UINTN Nbr; - unsigned long Color; - XEvent ev; + GRAPHICS_IO_PRIVATE *Private; + UINTN DstY; + UINTN SrcY; + UINTN DstX; + UINTN SrcX; + UINTN Index; + EFI_UGA_PIXEL *Blt; + UINT8 *Dst; + UINT8 *Src; + UINTN Nbr; + unsigned long Color; + XEvent ev; Private = (GRAPHICS_IO_PRIVATE *)GraphicsIo; - // // Check bounds // - if (BltOperation == EfiUgaVideoToBltBuffer - || BltOperation == EfiUgaVideoToVideo) { + if ( (BltOperation == EfiUgaVideoToBltBuffer) + || (BltOperation == EfiUgaVideoToVideo)) + { // // Source is Video. // @@ -746,9 +851,10 @@ X11Blt ( } } - if (BltOperation == EfiUgaBltBufferToVideo - || BltOperation == EfiUgaVideoToVideo - || BltOperation == EfiUgaVideoFill) { + if ( (BltOperation == EfiUgaBltBufferToVideo) + || (BltOperation == EfiUgaVideoToVideo) + || (BltOperation == EfiUgaVideoFill)) + { // // Destination is Video // @@ -762,106 +868,125 @@ X11Blt ( } switch (BltOperation) { - case EfiUgaVideoToBltBuffer: - Blt = (EFI_UGA_PIXEL *)((UINT8 *)BltBuffer + (Args->DestinationY * Args->Delta) + Args->DestinationX * sizeof (EFI_UGA_PIXEL)); - Args->Delta -= Args->Width * sizeof (EFI_UGA_PIXEL); - for (SrcY = Args->SourceY; SrcY < (Args->Height + Args->SourceY); SrcY++) { - for (SrcX = Args->SourceX; SrcX < (Args->Width + Args->SourceX); SrcX++) { - *Blt++ = X11ColorToPixel (Private, XGetPixel (Private->image, SrcX, SrcY)); + case EfiUgaVideoToBltBuffer: + Blt = (EFI_UGA_PIXEL *)((UINT8 *)BltBuffer + (Args->DestinationY * Args->Delta) + Args->DestinationX * sizeof (EFI_UGA_PIXEL)); + Args->Delta -= Args->Width * sizeof (EFI_UGA_PIXEL); + for (SrcY = Args->SourceY; SrcY < (Args->Height + Args->SourceY); SrcY++) { + for (SrcX = Args->SourceX; SrcX < (Args->Width + Args->SourceX); SrcX++) { + *Blt++ = X11ColorToPixel (Private, XGetPixel (Private->image, SrcX, SrcY)); + } + + Blt = (EFI_UGA_PIXEL *)((UINT8 *)Blt + Args->Delta); } - Blt = (EFI_UGA_PIXEL *) ((UINT8 *) Blt + Args->Delta); - } - break; - case EfiUgaBltBufferToVideo: - Blt = (EFI_UGA_PIXEL *)((UINT8 *)BltBuffer + (Args->SourceY * Args->Delta) + Args->SourceX * sizeof (EFI_UGA_PIXEL)); - Args->Delta -= Args->Width * sizeof (EFI_UGA_PIXEL); - for (DstY = Args->DestinationY; DstY < (Args->Height + Args->DestinationY); DstY++) { - for (DstX = Args->DestinationX; DstX < (Args->Width + Args->DestinationX); DstX++) { - XPutPixel(Private->image, DstX, DstY, X11PixelToColor(Private, *Blt)); - Blt++; - } - Blt = (EFI_UGA_PIXEL *) ((UINT8 *) Blt + Args->Delta); - } - break; - case EfiUgaVideoToVideo: - Dst = Private->image_data + (Args->DestinationX << Private->pixel_shift) - + Args->DestinationY * Private->line_bytes; - Src = Private->image_data + (Args->SourceX << Private->pixel_shift) - + Args->SourceY * Private->line_bytes; - Nbr = Args->Width << Private->pixel_shift; - if (Args->DestinationY < Args->SourceY) { - for (Index = 0; Index < Args->Height; Index++) { - memcpy (Dst, Src, Nbr); - Dst += Private->line_bytes; - Src += Private->line_bytes; + + break; + case EfiUgaBltBufferToVideo: + Blt = (EFI_UGA_PIXEL *)((UINT8 *)BltBuffer + (Args->SourceY * Args->Delta) + Args->SourceX * sizeof (EFI_UGA_PIXEL)); + Args->Delta -= Args->Width * sizeof (EFI_UGA_PIXEL); + for (DstY = Args->DestinationY; DstY < (Args->Height + Args->DestinationY); DstY++) { + for (DstX = Args->DestinationX; DstX < (Args->Width + Args->DestinationX); DstX++) { + XPutPixel (Private->image, DstX, DstY, X11PixelToColor (Private, *Blt)); + Blt++; + } + + Blt = (EFI_UGA_PIXEL *)((UINT8 *)Blt + Args->Delta); } - } else { - Dst += (Args->Height - 1) * Private->line_bytes; - Src += (Args->Height - 1) * Private->line_bytes; - for (Index = 0; Index < Args->Height; Index++) { - // - // Source and Destination Y may be equal, therefore Dst and Src may - // overlap. - // - memmove (Dst, Src, Nbr); - Dst -= Private->line_bytes; - Src -= Private->line_bytes; + + break; + case EfiUgaVideoToVideo: + Dst = Private->image_data + (Args->DestinationX << Private->pixel_shift) + + Args->DestinationY * Private->line_bytes; + Src = Private->image_data + (Args->SourceX << Private->pixel_shift) + + Args->SourceY * Private->line_bytes; + Nbr = Args->Width << Private->pixel_shift; + if (Args->DestinationY < Args->SourceY) { + for (Index = 0; Index < Args->Height; Index++) { + memcpy (Dst, Src, Nbr); + Dst += Private->line_bytes; + Src += Private->line_bytes; + } + } else { + Dst += (Args->Height - 1) * Private->line_bytes; + Src += (Args->Height - 1) * Private->line_bytes; + for (Index = 0; Index < Args->Height; Index++) { + // + // Source and Destination Y may be equal, therefore Dst and Src may + // overlap. + // + memmove (Dst, Src, Nbr); + Dst -= Private->line_bytes; + Src -= Private->line_bytes; + } } - } - break; - case EfiUgaVideoFill: - Color = X11PixelToColor(Private, *BltBuffer); - for (DstY = Args->DestinationY; DstY < (Args->Height + Args->DestinationY); DstY++) { - for (DstX = Args->DestinationX; DstX < (Args->Width + Args->DestinationX); DstX++) { - XPutPixel(Private->image, DstX, DstY, Color); + + break; + case EfiUgaVideoFill: + Color = X11PixelToColor (Private, *BltBuffer); + for (DstY = Args->DestinationY; DstY < (Args->Height + Args->DestinationY); DstY++) { + for (DstX = Args->DestinationX; DstX < (Args->Width + Args->DestinationX); DstX++) { + XPutPixel (Private->image, DstX, DstY, Color); + } } - } - break; - default: - return EFI_INVALID_PARAMETER; + + break; + default: + return EFI_INVALID_PARAMETER; } // // Refresh screen. // switch (BltOperation) { - case EfiUgaVideoToVideo: - XCopyArea( - Private->display, Private->win, Private->win, Private->gc, - Args->SourceX, Args->SourceY, Args->Width, Args->Height, - Args->DestinationX, Args->DestinationY - ); - - while (1) { - XNextEvent (Private->display, &ev); - HandleEvent (Private, &ev); - if (ev.type == NoExpose || ev.type == GraphicsExpose) { - break; + case EfiUgaVideoToVideo: + XCopyArea ( + Private->display, + Private->win, + Private->win, + Private->gc, + Args->SourceX, + Args->SourceY, + Args->Width, + Args->Height, + Args->DestinationX, + Args->DestinationY + ); + + while (1) { + XNextEvent (Private->display, &ev); + HandleEvent (Private, &ev); + if ((ev.type == NoExpose) || (ev.type == GraphicsExpose)) { + break; + } } - } - break; - case EfiUgaVideoFill: - Color = X11PixelToColor (Private, *BltBuffer); - XSetForeground (Private->display, Private->gc, Color); - XFillRectangle ( - Private->display, Private->win, Private->gc, - Args->DestinationX, Args->DestinationY, Args->Width, Args->Height - ); - XFlush (Private->display); - break; - case EfiUgaBltBufferToVideo: - Redraw (Private, Args->DestinationX, Args->DestinationY, Args->Width, Args->Height); - break; - default: - break; + + break; + case EfiUgaVideoFill: + Color = X11PixelToColor (Private, *BltBuffer); + XSetForeground (Private->display, Private->gc, Color); + XFillRectangle ( + Private->display, + Private->win, + Private->gc, + Args->DestinationX, + Args->DestinationY, + Args->Width, + Args->Height + ); + XFlush (Private->display); + break; + case EfiUgaBltBufferToVideo: + Redraw (Private, Args->DestinationX, Args->DestinationY, Args->Width, Args->Height); + break; + default: + break; } + return EFI_SUCCESS; } - EFI_STATUS X11CheckPointer ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo ) { GRAPHICS_IO_PRIVATE *Drv; @@ -876,15 +1001,14 @@ X11CheckPointer ( return EFI_NOT_READY; } - EFI_STATUS X11GetPointerState ( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, IN EFI_SIMPLE_POINTER_STATE *State ) { - EFI_STATUS EfiStatus; - GRAPHICS_IO_PRIVATE *Drv; + EFI_STATUS EfiStatus; + GRAPHICS_IO_PRIVATE *Drv; Drv = (GRAPHICS_IO_PRIVATE *)GraphicsIo; @@ -898,60 +1022,62 @@ X11GetPointerState ( Drv->pointer_state.RelativeMovementX = 0; Drv->pointer_state.RelativeMovementY = 0; Drv->pointer_state.RelativeMovementZ = 0; - Drv->pointer_state_changed = 0; + Drv->pointer_state_changed = 0; return EFI_SUCCESS; } - - EFI_STATUS X11GraphicsWindowOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { - GRAPHICS_IO_PRIVATE *Drv; - unsigned int border_width = 0; - char *display_name = NULL; + GRAPHICS_IO_PRIVATE *Drv; + unsigned int border_width = 0; + char *display_name = NULL; Drv = (GRAPHICS_IO_PRIVATE *)calloc (1, sizeof (GRAPHICS_IO_PRIVATE)); if (Drv == NULL) { return EFI_OUT_OF_RESOURCES; } - Drv->GraphicsIo.Size = GasketX11Size; - Drv->GraphicsIo.CheckKey = GasketX11CheckKey; - Drv->GraphicsIo.GetKey = GasketX11GetKey; - Drv->GraphicsIo.KeySetState = GasketX11KeySetState; - Drv->GraphicsIo.RegisterKeyNotify = GasketX11RegisterKeyNotify; - Drv->GraphicsIo.Blt = GasketX11Blt; - Drv->GraphicsIo.CheckPointer = GasketX11CheckPointer; - Drv->GraphicsIo.GetPointerState = GasketX11GetPointerState; - - - Drv->key_count = 0; - Drv->key_rd = 0; - Drv->key_wr = 0; + Drv->GraphicsIo.Size = GasketX11Size; + Drv->GraphicsIo.CheckKey = GasketX11CheckKey; + Drv->GraphicsIo.GetKey = GasketX11GetKey; + Drv->GraphicsIo.KeySetState = GasketX11KeySetState; + Drv->GraphicsIo.RegisterKeyNotify = GasketX11RegisterKeyNotify; + Drv->GraphicsIo.Blt = GasketX11Blt; + Drv->GraphicsIo.CheckPointer = GasketX11CheckPointer; + Drv->GraphicsIo.GetPointerState = GasketX11GetPointerState; + + Drv->key_count = 0; + Drv->key_rd = 0; + Drv->key_wr = 0; Drv->KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID; Drv->KeyState.KeyToggleState = EFI_TOGGLE_STATE_VALID; Drv->MakeRegisterdKeyCallback = NULL; Drv->BreakRegisterdKeyCallback = NULL; Drv->RegisterdKeyCallbackContext = NULL; - Drv->display = XOpenDisplay (display_name); if (Drv->display == NULL) { fprintf (stderr, "uga: cannot connect to X server %s\n", XDisplayName (display_name)); free (Drv); return EFI_DEVICE_ERROR; } + Drv->screen = DefaultScreen (Drv->display); Drv->visual = DefaultVisual (Drv->display, Drv->screen); - Drv->win = XCreateSimpleWindow ( - Drv->display, RootWindow (Drv->display, Drv->screen), - 0, 0, 4, 4, border_width, - WhitePixel (Drv->display, Drv->screen), - BlackPixel (Drv->display, Drv->screen) - ); + Drv->win = XCreateSimpleWindow ( + Drv->display, + RootWindow (Drv->display, Drv->screen), + 0, + 0, + 4, + 4, + border_width, + WhitePixel (Drv->display, Drv->screen), + BlackPixel (Drv->display, Drv->screen) + ); Drv->depth = DefaultDepth (Drv->display, Drv->screen); XDefineCursor (Drv->display, Drv->win, XCreateFontCursor (Drv->display, XC_pirate)); @@ -960,9 +1086,10 @@ X11GraphicsWindowOpen ( UnicodeStrToAsciiStrS (This->ConfigString, Drv->Title, StrSize (This->ConfigString)); XStoreName (Drv->display, Drv->win, Drv->Title); -// XAutoRepeatOff (Drv->display); + // XAutoRepeatOff (Drv->display); XSelectInput ( - Drv->display, Drv->win, + Drv->display, + Drv->win, ExposureMask | KeyPressMask | KeyReleaseMask | PointerMotionMask | ButtonPressMask | ButtonReleaseMask ); Drv->gc = DefaultGC (Drv->display, Drv->screen); @@ -972,13 +1099,12 @@ X11GraphicsWindowOpen ( return EFI_SUCCESS; } - EFI_STATUS X11GraphicsWindowClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { - GRAPHICS_IO_PRIVATE *Drv; + GRAPHICS_IO_PRIVATE *Drv; Drv = (GRAPHICS_IO_PRIVATE *)This->Private; @@ -987,29 +1113,29 @@ X11GraphicsWindowClose ( } if (Drv->image != NULL) { - XDestroyImage(Drv->image); + XDestroyImage (Drv->image); if (Drv->use_shm) { shmdt (Drv->image_data); } Drv->image_data = NULL; - Drv->image = NULL; + Drv->image = NULL; } + XDestroyWindow (Drv->display, Drv->win); XCloseDisplay (Drv->display); -#ifdef __APPLE__ + #ifdef __APPLE__ // Free up the shared memory shmctl (Drv->xshm_info.shmid, IPC_RMID, NULL); -#endif + #endif free (Drv); return EFI_SUCCESS; } - -EMU_IO_THUNK_PROTOCOL gX11ThunkIo = { +EMU_IO_THUNK_PROTOCOL gX11ThunkIo = { &gEmuGraphicsWindowProtocolGuid, NULL, NULL, @@ -1018,5 +1144,3 @@ EMU_IO_THUNK_PROTOCOL gX11ThunkIo = { GasketX11GraphicsWindowClose, NULL }; - - diff --git a/EmulatorPkg/Win/Host/WinBlockIo.c b/EmulatorPkg/Win/Host/WinBlockIo.c index f602a6a01d..c7cfbee2e0 100644 --- a/EmulatorPkg/Win/Host/WinBlockIo.c +++ b/EmulatorPkg/Win/Host/WinBlockIo.c @@ -7,63 +7,60 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "WinHost.h" -#define WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'b', 'k') +#define WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'b', 'k') typedef struct { - UINTN Signature; + UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; + EMU_IO_THUNK_PROTOCOL *Thunk; - CHAR16 *FileName; - BOOLEAN Removable; - BOOLEAN Readonly; + CHAR16 *FileName; + BOOLEAN Removable; + BOOLEAN Readonly; - HANDLE NtHandle; - UINT32 BlockSize; + HANDLE NtHandle; + UINT32 BlockSize; - EFI_BLOCK_IO_MEDIA *Media; - EMU_BLOCK_IO_PROTOCOL EmuBlockIo; + EFI_BLOCK_IO_MEDIA *Media; + EMU_BLOCK_IO_PROTOCOL EmuBlockIo; } WIN_NT_BLOCK_IO_PRIVATE; #define WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \ CR(a, WIN_NT_BLOCK_IO_PRIVATE, EmuBlockIo, WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE) - EFI_STATUS WinNtBlockIoReset ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ); - - - EFI_STATUS SetFilePointer64 ( - IN WIN_NT_BLOCK_IO_PRIVATE *Private, - IN INT64 DistanceToMove, - OUT UINT64 *NewFilePointer, - IN DWORD MoveMethod -) + IN WIN_NT_BLOCK_IO_PRIVATE *Private, + IN INT64 DistanceToMove, + OUT UINT64 *NewFilePointer, + IN DWORD MoveMethod + ) + /*++ This function extends the capability of SetFilePointer to accept 64 bit parameters --*/ { - EFI_STATUS Status; - LARGE_INTEGER LargeInt; + EFI_STATUS Status; + LARGE_INTEGER LargeInt; LargeInt.QuadPart = DistanceToMove; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; LargeInt.LowPart = SetFilePointer ( - Private->NtHandle, - LargeInt.LowPart, - &LargeInt.HighPart, - MoveMethod - ); + Private->NtHandle, + LargeInt.LowPart, + &LargeInt.HighPart, + MoveMethod + ); - if (LargeInt.LowPart == -1 && GetLastError () != NO_ERROR) { + if ((LargeInt.LowPart == -1) && (GetLastError () != NO_ERROR)) { Status = EFI_INVALID_PARAMETER; } @@ -74,16 +71,14 @@ This function extends the capability of SetFilePointer to accept 64 bit paramete return Status; } - - EFI_STATUS WinNtBlockIoOpenDevice ( - IN WIN_NT_BLOCK_IO_PRIVATE *Private, - IN EFI_BLOCK_IO_MEDIA *Media + IN WIN_NT_BLOCK_IO_PRIVATE *Private, + IN EFI_BLOCK_IO_MEDIA *Media ) { - EFI_STATUS Status; - UINT64 FileSize; + EFI_STATUS Status; + UINT64 FileSize; // // If the device is already opened, close it @@ -96,19 +91,19 @@ WinNtBlockIoOpenDevice ( // Open the device // Private->NtHandle = CreateFile ( - Private->FileName, - GENERIC_READ | (Private->Readonly ? 0 : GENERIC_WRITE), - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_ALWAYS, // Create if it doesn't exist - 0, - NULL - ); + Private->FileName, + GENERIC_READ | (Private->Readonly ? 0 : GENERIC_WRITE), + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_ALWAYS, // Create if it doesn't exist + 0, + NULL + ); if (Private->NtHandle == INVALID_HANDLE_VALUE) { DEBUG ((DEBUG_INFO, "OpenBlock: Could not open %S, %x\n", Private->FileName, GetLastError ())); Media->MediaPresent = FALSE; - Status = EFI_NO_MEDIA; + Status = EFI_NO_MEDIA; goto Done; } @@ -138,15 +133,14 @@ Done: return Status; } - EFI_STATUS EFIAPI WinNtBlockIoCreateMapping ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN EFI_BLOCK_IO_MEDIA *Media + IN EMU_BLOCK_IO_PROTOCOL *This, + IN EFI_BLOCK_IO_MEDIA *Media ) { - WIN_NT_BLOCK_IO_PRIVATE *Private; + WIN_NT_BLOCK_IO_PRIVATE *Private; Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -164,7 +158,6 @@ WinNtBlockIoCreateMapping ( Media->LowestAlignedLba = 0; Media->LogicalBlocksPerPhysicalBlock = 0; - // EFI_BLOCK_IO_PROTOCOL_REVISION3 Media->OptimalTransferLengthGranularity = 0; @@ -175,12 +168,11 @@ WinNtBlockIoCreateMapping ( return WinNtBlockIoOpenDevice (Private, Media); } - - EFI_STATUS WinNtBlockIoError ( - IN WIN_NT_BLOCK_IO_PRIVATE *Private -) + IN WIN_NT_BLOCK_IO_PRIVATE *Private + ) + /*++ Routine Description: @@ -197,49 +189,47 @@ Returns: --*/ { - EFI_BLOCK_IO_MEDIA *Media; - EFI_STATUS Status; + EFI_BLOCK_IO_MEDIA *Media; + EFI_STATUS Status; Media = Private->Media; switch (GetLastError ()) { - - case ERROR_NOT_READY: - Media->ReadOnly = FALSE; - Media->MediaPresent = FALSE; - Status = EFI_NO_MEDIA; - break; - - case ERROR_WRONG_DISK: - Media->ReadOnly = FALSE; - Media->MediaPresent = TRUE; - Media->MediaId++; - Status = EFI_MEDIA_CHANGED; - break; - - case ERROR_WRITE_PROTECT: - Media->ReadOnly = TRUE; - Status = EFI_WRITE_PROTECTED; - break; - - default: - Status = EFI_DEVICE_ERROR; - break; + case ERROR_NOT_READY: + Media->ReadOnly = FALSE; + Media->MediaPresent = FALSE; + Status = EFI_NO_MEDIA; + break; + + case ERROR_WRONG_DISK: + Media->ReadOnly = FALSE; + Media->MediaPresent = TRUE; + Media->MediaId++; + Status = EFI_MEDIA_CHANGED; + break; + + case ERROR_WRITE_PROTECT: + Media->ReadOnly = TRUE; + Status = EFI_WRITE_PROTECTED; + break; + + default: + Status = EFI_DEVICE_ERROR; + break; } - if (Status == EFI_NO_MEDIA || Status == EFI_MEDIA_CHANGED) { + if ((Status == EFI_NO_MEDIA) || (Status == EFI_MEDIA_CHANGED)) { WinNtBlockIoReset (&Private->EmuBlockIo, FALSE); } return Status; } - EFI_STATUS WinNtSignalToken ( - IN OUT EFI_BLOCK_IO2_TOKEN *Token, - IN EFI_STATUS Status -) + IN OUT EFI_BLOCK_IO2_TOKEN *Token, + IN EFI_STATUS Status + ) { if (Token != NULL) { if (Token->Event != NULL) { @@ -248,6 +238,7 @@ WinNtSignalToken ( return EFI_SUCCESS; } } + return Status; } @@ -291,15 +282,15 @@ WinNtBlockIoReadBlocks ( IN EFI_LBA Lba, IN OUT EFI_BLOCK_IO2_TOKEN *Token, IN UINTN BufferSize, - OUT VOID *Buffer + OUT VOID *Buffer ) { - WIN_NT_BLOCK_IO_PRIVATE *Private; - BOOL Flag; - EFI_STATUS Status; - DWORD BytesRead; - UINT64 DistanceToMove; - UINT64 DistanceMoved; + WIN_NT_BLOCK_IO_PRIVATE *Private; + BOOL Flag; + EFI_STATUS Status; + DWORD BytesRead; + UINT64 DistanceToMove; + UINT64 DistanceMoved; Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -307,7 +298,7 @@ WinNtBlockIoReadBlocks ( // Seek to proper position // DistanceToMove = MultU64x32 (Lba, (UINT32)Private->BlockSize); - Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, FILE_BEGIN); + Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, FILE_BEGIN); if (EFI_ERROR (Status) || (DistanceToMove != DistanceMoved)) { DEBUG ((DEBUG_INIT, "ReadBlocks: SetFilePointer failed\n")); @@ -323,7 +314,6 @@ WinNtBlockIoReadBlocks ( return WinNtSignalToken (Token, EFI_SUCCESS); } - /** Write BufferSize bytes from Lba into Buffer. @@ -365,12 +355,12 @@ WinNtBlockIoWriteBlocks ( IN VOID *Buffer ) { - WIN_NT_BLOCK_IO_PRIVATE *Private; - UINTN BytesWritten; - BOOL Success; - EFI_STATUS Status; - UINT64 DistanceToMove; - UINT64 DistanceMoved; + WIN_NT_BLOCK_IO_PRIVATE *Private; + UINTN BytesWritten; + BOOL Success; + EFI_STATUS Status; + UINT64 DistanceToMove; + UINT64 DistanceMoved; Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -378,7 +368,7 @@ WinNtBlockIoWriteBlocks ( // Seek to proper position // DistanceToMove = MultU64x32 (Lba, (UINT32)Private->BlockSize); - Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, FILE_BEGIN); + Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, FILE_BEGIN); if (EFI_ERROR (Status) || (DistanceToMove != DistanceMoved)) { DEBUG ((DEBUG_INIT, "WriteBlocks: SetFilePointer failed\n")); @@ -422,14 +412,13 @@ WinNtBlockIoWriteBlocks ( **/ EFI_STATUS WinNtBlockIoFlushBlocks ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN OUT EFI_BLOCK_IO2_TOKEN *Token + IN EMU_BLOCK_IO_PROTOCOL *This, + IN OUT EFI_BLOCK_IO2_TOKEN *Token ) { return WinNtSignalToken (Token, EFI_SUCCESS); } - /** Reset the block device hardware. @@ -445,11 +434,11 @@ WinNtBlockIoFlushBlocks ( **/ EFI_STATUS WinNtBlockIoReset ( - IN EMU_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - WIN_NT_BLOCK_IO_PRIVATE *Private; + WIN_NT_BLOCK_IO_PRIVATE *Private; Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This); @@ -461,7 +450,7 @@ WinNtBlockIoReset ( return EFI_SUCCESS; } -EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = { +EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = { WinNtBlockIoReset, WinNtBlockIoReadBlocks, WinNtBlockIoWriteBlocks, @@ -472,7 +461,7 @@ EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = { EFI_STATUS EFIAPI WinNtBlockIoThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { WIN_NT_BLOCK_IO_PRIVATE *Private; @@ -487,12 +476,13 @@ WinNtBlockIoThunkOpen ( Private->Thunk = This; CopyMem (&Private->EmuBlockIo, &gEmuBlockIoProtocol, sizeof (gEmuBlockIoProtocol)); Private->BlockSize = 512; - Private->NtHandle = INVALID_HANDLE_VALUE; + Private->NtHandle = INVALID_HANDLE_VALUE; Private->FileName = AllocateCopyPool (StrSize (This->ConfigString), This->ConfigString); if (Private->FileName == NULL) { return EFI_OUT_OF_RESOURCES; } + // // Parse ConfigString // := ':' [RF][OW] ':' @@ -503,12 +493,14 @@ WinNtBlockIoThunkOpen ( Private->Readonly = FALSE; } else { for (*Str++ = L'\0'; *Str != L'\0'; Str++) { - if (*Str == 'R' || *Str == 'F') { - Private->Removable = (BOOLEAN) (*Str == L'R'); + if ((*Str == 'R') || (*Str == 'F')) { + Private->Removable = (BOOLEAN)(*Str == L'R'); } - if (*Str == 'O' || *Str == 'W') { - Private->Readonly = (BOOLEAN) (*Str == L'O'); + + if ((*Str == 'O') || (*Str == 'W')) { + Private->Readonly = (BOOLEAN)(*Str == L'O'); } + if (*Str == ':') { Private->BlockSize = wcstol (++Str, NULL, 0); break; @@ -521,11 +513,10 @@ WinNtBlockIoThunkOpen ( return EFI_SUCCESS; } - EFI_STATUS EFIAPI WinNtBlockIoThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { WIN_NT_BLOCK_IO_PRIVATE *Private; @@ -536,15 +527,14 @@ WinNtBlockIoThunkClose ( if (Private->FileName != NULL) { FreePool (Private->FileName); } + FreePool (Private); } return EFI_SUCCESS; } - - -EMU_IO_THUNK_PROTOCOL mWinNtBlockIoThunkIo = { +EMU_IO_THUNK_PROTOCOL mWinNtBlockIoThunkIo = { &gEmuBlockIoProtocolGuid, NULL, NULL, diff --git a/EmulatorPkg/Win/Host/WinFileSystem.c b/EmulatorPkg/Win/Host/WinFileSystem.c index f6b06b1c92..5ca404020c 100644 --- a/EmulatorPkg/Win/Host/WinFileSystem.c +++ b/EmulatorPkg/Win/Host/WinFileSystem.c @@ -9,15 +9,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "WinHost.h" - -#define WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'f', 's') +#define WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'f', 's') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; - CHAR16 *FilePath; - CHAR16 *VolumeLabel; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *Thunk; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; + CHAR16 *FilePath; + CHAR16 *VolumeLabel; } WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE; #define WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS(a) \ @@ -27,23 +26,22 @@ typedef struct { WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE \ ) - -#define WIN_NT_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('l', 'o', 'f', 's') +#define WIN_NT_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('l', 'o', 'f', 's') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; - EFI_FILE_PROTOCOL EfiFile; - HANDLE LHandle; - HANDLE DirHandle; - BOOLEAN IsRootDirectory; - BOOLEAN IsDirectoryPath; - BOOLEAN IsOpenedByRead; - CHAR16 *FilePath; - WCHAR *FileName; - BOOLEAN IsValidFindBuf; - WIN32_FIND_DATA FindBuf; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *Thunk; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; + EFI_FILE_PROTOCOL EfiFile; + HANDLE LHandle; + HANDLE DirHandle; + BOOLEAN IsRootDirectory; + BOOLEAN IsDirectoryPath; + BOOLEAN IsOpenedByRead; + CHAR16 *FilePath; + WCHAR *FileName; + BOOLEAN IsValidFindBuf; + WIN32_FIND_DATA FindBuf; } WIN_NT_EFI_FILE_PRIVATE; #define WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS(a) \ @@ -53,32 +51,31 @@ typedef struct { WIN_NT_EFI_FILE_PRIVATE_SIGNATURE \ ) -extern EFI_FILE_PROTOCOL gWinNtFileProtocol; -extern EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gWinNtFileSystemProtocol; +extern EFI_FILE_PROTOCOL gWinNtFileProtocol; +extern EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gWinNtFileSystemProtocol; EFI_STATUS WinNtFileGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ); EFI_STATUS WinNtFileSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN UINTN BufferSize, + IN VOID *Buffer ); - - CHAR16 * EfiStrChr ( - IN CHAR16 *Str, - IN CHAR16 Chr -) + IN CHAR16 *Str, + IN CHAR16 Chr + ) + /*++ Routine Description: @@ -109,24 +106,22 @@ Returns: return (*Str == Chr) ? Str : NULL; } - - BOOLEAN IsZero ( IN VOID *Buffer, IN UINTN Length ) { - if (Buffer == NULL || Length == 0) { + if ((Buffer == NULL) || (Length == 0)) { return FALSE; } - if (*(UINT8 *) Buffer != 0) { + if (*(UINT8 *)Buffer != 0) { return FALSE; } if (Length > 1) { - if (!CompareMem (Buffer, (UINT8 *) Buffer + 1, Length - 1)) { + if (!CompareMem (Buffer, (UINT8 *)Buffer + 1, Length - 1)) { return FALSE; } } @@ -147,13 +142,14 @@ CutPrefix ( } if (Count != 0) { - for (Pointer = Str; *(Pointer + Count); Pointer++) { - *Pointer = *(Pointer + Count); - } + for (Pointer = Str; *(Pointer + Count); Pointer++) { + *Pointer = *(Pointer + Count); + } - *Pointer = *(Pointer + Count); + *Pointer = *(Pointer + Count); } } + /** Open the root directory on a volume. @@ -171,17 +167,17 @@ CutPrefix ( **/ EFI_STATUS WinNtOpenVolume ( - IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **Root + IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **Root ) { - EFI_STATUS Status; - WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *Private; - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - CHAR16 *TempFileName; - UINTN Size; + EFI_STATUS Status; + WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *Private; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + CHAR16 *TempFileName; + UINTN Size; - if (This == NULL || Root == NULL) { + if ((This == NULL) || (Root == NULL)) { return EFI_INVALID_PARAMETER; } @@ -205,20 +201,22 @@ WinNtOpenVolume ( goto Done; } - StrCpyS (PrivateFile->FilePath, + StrCpyS ( + PrivateFile->FilePath, StrSize (Private->FilePath) / sizeof (CHAR16), Private->FilePath ); - StrCpyS (PrivateFile->FileName, + StrCpyS ( + PrivateFile->FileName, StrSize (Private->FilePath) / sizeof (CHAR16), PrivateFile->FilePath ); - PrivateFile->Signature = WIN_NT_EFI_FILE_PRIVATE_SIGNATURE; - PrivateFile->Thunk = Private->Thunk; + PrivateFile->Signature = WIN_NT_EFI_FILE_PRIVATE_SIGNATURE; + PrivateFile->Thunk = Private->Thunk; PrivateFile->SimpleFileSystem = This; - PrivateFile->IsRootDirectory = TRUE; - PrivateFile->IsDirectoryPath = TRUE; - PrivateFile->IsOpenedByRead = TRUE; + PrivateFile->IsRootDirectory = TRUE; + PrivateFile->IsDirectoryPath = TRUE; + PrivateFile->IsOpenedByRead = TRUE; CopyMem (&PrivateFile->EfiFile, &gWinNtFileProtocol, sizeof (gWinNtFileProtocol)); PrivateFile->IsValidFindBuf = FALSE; @@ -226,14 +224,14 @@ WinNtOpenVolume ( // Set DirHandle // PrivateFile->DirHandle = CreateFile ( - PrivateFile->FilePath, - GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - NULL - ); + PrivateFile->FilePath, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS, + NULL + ); if (PrivateFile->DirHandle == INVALID_HANDLE_VALUE) { Status = EFI_NOT_FOUND; @@ -243,12 +241,13 @@ WinNtOpenVolume ( // // Find the first file under it // - Size = StrSize (PrivateFile->FilePath); - Size += StrSize (L"\\*"); + Size = StrSize (PrivateFile->FilePath); + Size += StrSize (L"\\*"); TempFileName = AllocatePool (Size); if (TempFileName == NULL) { goto Done; } + StrCpyS (TempFileName, Size / sizeof (CHAR16), PrivateFile->FilePath); StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*"); @@ -260,6 +259,7 @@ WinNtOpenVolume ( } else { PrivateFile->IsValidFindBuf = TRUE; } + *Root = &PrivateFile->EfiFile; Status = EFI_SUCCESS; @@ -292,10 +292,10 @@ Done: **/ UINTN CountLeadingDots ( - IN CONST CHAR16 * FileNameToken -) + IN CONST CHAR16 *FileNameToken + ) { - UINTN Num; + UINTN Num; Num = 0; while (*FileNameToken == L'.') { @@ -306,13 +306,13 @@ CountLeadingDots ( return Num; } - BOOLEAN IsFileNameTokenValid ( - IN CONST CHAR16 * FileNameToken -) + IN CONST CHAR16 *FileNameToken + ) { - UINTN Num; + UINTN Num; + if (StrStr (FileNameToken, L"/") != NULL) { // // No L'/' in file name. @@ -337,7 +337,6 @@ IsFileNameTokenValid ( return TRUE; } - /** Return the first string token found in the indirect pointer a String named by FileName. @@ -352,22 +351,23 @@ IsFileNameTokenValid ( **/ CHAR16 * GetNextFileNameToken ( - IN OUT CONST CHAR16 ** FileName -) + IN OUT CONST CHAR16 **FileName + ) { - CHAR16 *SlashPos; - CHAR16 *Token; - UINTN Offset; + CHAR16 *SlashPos; + CHAR16 *Token; + UINTN Offset; + ASSERT (**FileName != L'\\'); ASSERT (**FileName != L'\0'); SlashPos = StrStr (*FileName, L"\\"); if (SlashPos == NULL) { - Token = AllocateCopyPool (StrSize (*FileName), *FileName); + Token = AllocateCopyPool (StrSize (*FileName), *FileName); *FileName = NULL; } else { Offset = SlashPos - *FileName; - Token = AllocateZeroPool ((Offset + 1) * sizeof (CHAR16)); + Token = AllocateZeroPool ((Offset + 1) * sizeof (CHAR16)); StrnCpyS (Token, Offset + 1, *FileName, Offset); // // Point *FileName to the next character after L'\'. @@ -384,7 +384,6 @@ GetNextFileNameToken ( return Token; } - /** Check if a FileName contains only Valid Characters. @@ -400,14 +399,13 @@ GetNextFileNameToken ( @return FALSE FileName contains at least one invalid character. **/ - BOOLEAN IsFileNameValid ( - IN CONST CHAR16 *FileName + IN CONST CHAR16 *FileName ) { - CHAR16 *Token; - BOOLEAN Valid; + CHAR16 *Token; + BOOLEAN Valid; // // If FileName is just L'\', then it is a valid pathname. @@ -415,6 +413,7 @@ IsFileNameValid ( if (StrCmp (FileName, L"\\") == 0) { return TRUE; } + // // We don't support two or more adjacent L'\'. // @@ -425,7 +424,7 @@ IsFileNameValid ( // // Is FileName has a leading L"\", skip to next character. // - if (FileName [0] == L'\\') { + if (FileName[0] == L'\\') { FileName++; } @@ -434,14 +433,14 @@ IsFileNameValid ( Valid = IsFileNameTokenValid (Token); FreePool (Token); - if (!Valid) + if (!Valid) { return FALSE; + } } while (FileName != NULL); return TRUE; } - /** Opens a new file relative to the source file's location. @@ -464,35 +463,34 @@ IsFileNameValid ( **/ EFI_STATUS WinNtFileOpen ( - IN EFI_FILE_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes + IN EFI_FILE_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **NewHandle, + IN CHAR16 *FileName, + IN UINT64 OpenMode, + IN UINT64 Attributes ) { - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - WIN_NT_EFI_FILE_PRIVATE *NewPrivateFile; - WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; - EFI_STATUS Status; - CHAR16 *RealFileName; - CHAR16 *TempFileName; - CHAR16 *ParseFileName; - CHAR16 *GuardPointer; - CHAR16 TempChar; - DWORD LastError; - UINTN Count; - BOOLEAN LoopFinish; - UINTN InfoSize; - EFI_FILE_INFO *Info; - UINTN Size; - + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + WIN_NT_EFI_FILE_PRIVATE *NewPrivateFile; + WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; + EFI_STATUS Status; + CHAR16 *RealFileName; + CHAR16 *TempFileName; + CHAR16 *ParseFileName; + CHAR16 *GuardPointer; + CHAR16 TempChar; + DWORD LastError; + UINTN Count; + BOOLEAN LoopFinish; + UINTN InfoSize; + EFI_FILE_INFO *Info; + UINTN Size; // // Init local variables // - PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); - PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); + PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); + PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); NewPrivateFile = NULL; // @@ -502,6 +500,7 @@ WinNtFileOpen ( if (TempFileName == NULL) { return EFI_OUT_OF_RESOURCES; } + StrCpyS (TempFileName, StrSize (FileName) / sizeof (CHAR16), FileName); FileName = TempFileName; @@ -513,26 +512,30 @@ WinNtFileOpen ( // If file name does not equal to "." or ".." and not trailed with "\..", // then we trim the leading/trailing blanks and trailing dots // - if (StrCmp (FileName, L".") != 0 && StrCmp (FileName, L"..") != 0 && - ((StrLen (FileName) >= 3) ? (StrCmp (&FileName[StrLen (FileName) - 3], L"\\..") != 0) : TRUE)) { + if ((StrCmp (FileName, L".") != 0) && (StrCmp (FileName, L"..") != 0) && + ((StrLen (FileName) >= 3) ? (StrCmp (&FileName[StrLen (FileName) - 3], L"\\..") != 0) : TRUE)) + { // // Trim leading blanks // Count = 0; for (TempFileName = FileName; - *TempFileName != 0 && *TempFileName == L' '; - TempFileName++) { + *TempFileName != 0 && *TempFileName == L' '; + TempFileName++) + { Count++; } + CutPrefix (FileName, Count); // // Trim trailing blanks // for (TempFileName = FileName + StrLen (FileName) - 1; - TempFileName >= FileName && (*TempFileName == L' '); - TempFileName--) { - ; + TempFileName >= FileName && (*TempFileName == L' '); + TempFileName--) + { } + *(TempFileName + 1) = 0; } @@ -567,9 +570,9 @@ WinNtFileOpen ( ); } - Size = StrSize (NewPrivateFile->FilePath); - Size += StrSize (L"\\"); - Size += StrSize (FileName); + Size = StrSize (NewPrivateFile->FilePath); + Size += StrSize (L"\\"); + Size += StrSize (FileName); NewPrivateFile->FileName = AllocatePool (Size); if (NewPrivateFile->FileName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -608,15 +611,14 @@ WinNtFileOpen ( LoopFinish = FALSE; while (!LoopFinish) { - LoopFinish = TRUE; for (ParseFileName = GuardPointer; *ParseFileName; ParseFileName++) { - if (*ParseFileName == L'.' && - (*(ParseFileName + 1) == 0 || *(ParseFileName + 1) == L'\\') && - *(ParseFileName - 1) == L'\\' - ) { - + if ((*ParseFileName == L'.') && + ((*(ParseFileName + 1) == 0) || (*(ParseFileName + 1) == L'\\')) && + (*(ParseFileName - 1) == L'\\') + ) + { // // cut \. // @@ -625,12 +627,12 @@ WinNtFileOpen ( break; } - if (*ParseFileName == L'.' && - *(ParseFileName + 1) == L'.' && - (*(ParseFileName + 2) == 0 || *(ParseFileName + 2) == L'\\') && - *(ParseFileName - 1) == L'\\' - ) { - + if ((*ParseFileName == L'.') && + (*(ParseFileName + 1) == L'.') && + ((*(ParseFileName + 2) == 0) || (*(ParseFileName + 2) == L'\\')) && + (*(ParseFileName - 1) == L'\\') + ) + { ParseFileName--; Count = 3; @@ -659,7 +661,7 @@ WinNtFileOpen ( TempChar = 0; if (RealFileName != NewPrivateFile->FileName) { - TempChar = *(RealFileName - 1); + TempChar = *(RealFileName - 1); *(RealFileName - 1) = 0; } @@ -693,14 +695,14 @@ WinNtFileOpen ( } } else { NewPrivateFile->LHandle = CreateFile ( - NewPrivateFile->FileName, - GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - 0, - NULL - ); + NewPrivateFile->FileName, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); if (NewPrivateFile->LHandle != INVALID_HANDLE_VALUE) { NewPrivateFile->IsDirectoryPath = FALSE; @@ -724,9 +726,8 @@ WinNtFileOpen ( // deal with directory // if (NewPrivateFile->IsDirectoryPath) { - - Size = StrSize (NewPrivateFile->FileName); - Size += StrSize (L"\\*"); + Size = StrSize (NewPrivateFile->FileName); + Size += StrSize (L"\\*"); TempFileName = AllocatePool (Size); if (TempFileName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -740,7 +741,6 @@ WinNtFileOpen ( // Create a directory // if (!CreateDirectory (TempFileName, NULL)) { - LastError = GetLastError (); if (LastError != ERROR_ALREADY_EXISTS) { FreePool (TempFileName); @@ -751,31 +751,30 @@ WinNtFileOpen ( } NewPrivateFile->DirHandle = CreateFile ( - TempFileName, - NewPrivateFile->IsOpenedByRead ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE), - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - NULL - ); + TempFileName, + NewPrivateFile->IsOpenedByRead ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE), + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS, + NULL + ); if (NewPrivateFile->DirHandle == INVALID_HANDLE_VALUE) { - NewPrivateFile->DirHandle = CreateFile ( - TempFileName, - GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - NULL - ); + TempFileName, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS, + NULL + ); if (NewPrivateFile->DirHandle != INVALID_HANDLE_VALUE) { CloseHandle (NewPrivateFile->DirHandle); NewPrivateFile->DirHandle = INVALID_HANDLE_VALUE; - Status = EFI_ACCESS_DENIED; + Status = EFI_ACCESS_DENIED; } else { Status = EFI_NOT_FOUND; } @@ -802,25 +801,25 @@ WinNtFileOpen ( // if (!NewPrivateFile->IsOpenedByRead) { NewPrivateFile->LHandle = CreateFile ( - NewPrivateFile->FileName, - GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - (OpenMode & EFI_FILE_MODE_CREATE) ? OPEN_ALWAYS : OPEN_EXISTING, - 0, - NULL - ); + NewPrivateFile->FileName, + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + (OpenMode & EFI_FILE_MODE_CREATE) ? OPEN_ALWAYS : OPEN_EXISTING, + 0, + NULL + ); if (NewPrivateFile->LHandle == INVALID_HANDLE_VALUE) { NewPrivateFile->LHandle = CreateFile ( - NewPrivateFile->FileName, - GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - 0, - NULL - ); + NewPrivateFile->FileName, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); if (NewPrivateFile->LHandle == INVALID_HANDLE_VALUE) { Status = EFI_NOT_FOUND; @@ -832,14 +831,14 @@ WinNtFileOpen ( } } else { NewPrivateFile->LHandle = CreateFile ( - NewPrivateFile->FileName, - GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - 0, - NULL - ); + NewPrivateFile->FileName, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); if (NewPrivateFile->LHandle == INVALID_HANDLE_VALUE) { Status = EFI_NOT_FOUND; @@ -847,12 +846,12 @@ WinNtFileOpen ( } } - if ((OpenMode & EFI_FILE_MODE_CREATE) && Status == EFI_SUCCESS) { + if ((OpenMode & EFI_FILE_MODE_CREATE) && (Status == EFI_SUCCESS)) { // // Set the attribute // InfoSize = 0; - Info = NULL; + Info = NULL; Status = WinNtFileGetInfo (&NewPrivateFile->EfiFile, &gEfiFileInfoGuid, &InfoSize, Info); @@ -905,8 +904,6 @@ Done: return Status; } - - /** Close the file handle @@ -920,7 +917,7 @@ WinNtFileClose ( IN EFI_FILE_PROTOCOL *This ) { - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -934,7 +931,7 @@ WinNtFileClose ( PrivateFile->LHandle = INVALID_HANDLE_VALUE; } - if (PrivateFile->IsDirectoryPath && PrivateFile->DirHandle != INVALID_HANDLE_VALUE) { + if (PrivateFile->IsDirectoryPath && (PrivateFile->DirHandle != INVALID_HANDLE_VALUE)) { CloseHandle (PrivateFile->DirHandle); PrivateFile->DirHandle = INVALID_HANDLE_VALUE; } @@ -950,10 +947,8 @@ WinNtFileClose ( FreePool (PrivateFile); return EFI_SUCCESS; - } - /** Close and delete the file handle. @@ -968,8 +963,8 @@ WinNtFileDelete ( IN EFI_FILE_PROTOCOL *This ) { - EFI_STATUS Status; - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + EFI_STATUS Status; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -1011,7 +1006,8 @@ WinNtSystemTimeToEfiTime ( IN SYSTEMTIME *SystemTime, IN TIME_ZONE_INFORMATION *TimeZone, OUT EFI_TIME *Time -) + ) + /*++ Routine Description: @@ -1030,14 +1026,14 @@ Returns: --*/ { - Time->Year = (UINT16)SystemTime->wYear; - Time->Month = (UINT8)SystemTime->wMonth; - Time->Day = (UINT8)SystemTime->wDay; - Time->Hour = (UINT8)SystemTime->wHour; - Time->Minute = (UINT8)SystemTime->wMinute; - Time->Second = (UINT8)SystemTime->wSecond; + Time->Year = (UINT16)SystemTime->wYear; + Time->Month = (UINT8)SystemTime->wMonth; + Time->Day = (UINT8)SystemTime->wDay; + Time->Hour = (UINT8)SystemTime->wHour; + Time->Minute = (UINT8)SystemTime->wMinute; + Time->Second = (UINT8)SystemTime->wSecond; Time->Nanosecond = (UINT32)SystemTime->wMilliseconds * 1000000; - Time->TimeZone = (INT16)TimeZone->Bias; + Time->TimeZone = (INT16)TimeZone->Bias; if (TimeZone->StandardDate.wMonth) { Time->Daylight = EFI_TIME_ADJUST_DAYLIGHT; @@ -1054,21 +1050,20 @@ Returns: **/ VOID WinNtFileTimeToEfiTime ( - IN CONST WIN_NT_EFI_FILE_PRIVATE *PrivateFile, - IN TIME_ZONE_INFORMATION *TimeZone, - IN CONST FILETIME *FileTime, - OUT EFI_TIME *EfiTime -) + IN CONST WIN_NT_EFI_FILE_PRIVATE *PrivateFile, + IN TIME_ZONE_INFORMATION *TimeZone, + IN CONST FILETIME *FileTime, + OUT EFI_TIME *EfiTime + ) { - FILETIME TempFileTime; - SYSTEMTIME SystemTime; + FILETIME TempFileTime; + SYSTEMTIME SystemTime; FileTimeToLocalFileTime (FileTime, &TempFileTime); FileTimeToSystemTime (&TempFileTime, &SystemTime); WinNtSystemTimeToEfiTime (&SystemTime, TimeZone, EfiTime); } - /** Read data from the file. @@ -1085,24 +1080,24 @@ WinNtFileTimeToEfiTime ( **/ EFI_STATUS WinNtFileRead ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ) { - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - EFI_STATUS Status; - UINTN Size; - UINTN NameSize; - UINTN ResultSize; - UINTN Index; - EFI_FILE_INFO *Info; - WCHAR *pw; - TIME_ZONE_INFORMATION TimeZone; - EFI_FILE_INFO *FileInfo; - UINT64 Pos; - UINT64 FileSize; - UINTN FileInfoSize; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + EFI_STATUS Status; + UINTN Size; + UINTN NameSize; + UINTN ResultSize; + UINTN Index; + EFI_FILE_INFO *Info; + WCHAR *pw; + TIME_ZONE_INFORMATION TimeZone; + EFI_FILE_INFO *FileInfo; + UINT64 Pos; + UINT64 FileSize; + UINTN FileInfoSize; PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -1112,31 +1107,30 @@ WinNtFileRead ( } if (!PrivateFile->IsDirectoryPath) { - if (This->GetPosition (This, &Pos) != EFI_SUCCESS) { Status = EFI_DEVICE_ERROR; goto Done; } FileInfoSize = SIZE_OF_EFI_FILE_SYSTEM_INFO; - FileInfo = AllocatePool (FileInfoSize); + FileInfo = AllocatePool (FileInfoSize); Status = This->GetInfo ( - This, - &gEfiFileInfoGuid, - &FileInfoSize, - FileInfo - ); + This, + &gEfiFileInfoGuid, + &FileInfoSize, + FileInfo + ); if (Status == EFI_BUFFER_TOO_SMALL) { FreePool (FileInfo); FileInfo = AllocatePool (FileInfoSize); - Status = This->GetInfo ( - This, - &gEfiFileInfoGuid, - &FileInfoSize, - FileInfo - ); + Status = This->GetInfo ( + This, + &gEfiFileInfoGuid, + &FileInfoSize, + FileInfo + ); } if (EFI_ERROR (Status)) { @@ -1160,12 +1154,12 @@ WinNtFileRead ( } Status = ReadFile ( - PrivateFile->LHandle, - Buffer, - (DWORD)*BufferSize, - (LPDWORD)BufferSize, - NULL - ) ? EFI_SUCCESS : EFI_DEVICE_ERROR; + PrivateFile->LHandle, + Buffer, + (DWORD)*BufferSize, + (LPDWORD)BufferSize, + NULL + ) ? EFI_SUCCESS : EFI_DEVICE_ERROR; goto Done; } @@ -1174,7 +1168,7 @@ WinNtFileRead ( // if (!PrivateFile->IsValidFindBuf) { *BufferSize = 0; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; goto Done; } @@ -1244,8 +1238,6 @@ Done: return Status; } - - /** Write data to a file. @@ -1266,13 +1258,13 @@ Done: **/ EFI_STATUS WinNtFileWrite ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN OUT UINTN *BufferSize, + IN VOID *Buffer ) { - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - EFI_STATUS Status; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + EFI_STATUS Status; PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -1292,12 +1284,12 @@ WinNtFileWrite ( } Status = WriteFile ( - PrivateFile->LHandle, - Buffer, - (DWORD)*BufferSize, - (LPDWORD)BufferSize, - NULL - ) ? EFI_SUCCESS : EFI_DEVICE_ERROR; + PrivateFile->LHandle, + Buffer, + (DWORD)*BufferSize, + (LPDWORD)BufferSize, + NULL + ) ? EFI_SUCCESS : EFI_DEVICE_ERROR; Done: return Status; @@ -1307,8 +1299,6 @@ Done: // } - - /** Set a files current position @@ -1321,16 +1311,16 @@ Done: **/ EFI_STATUS WinNtFileSetPossition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position + IN EFI_FILE_PROTOCOL *This, + IN UINT64 Position ) { - EFI_STATUS Status; - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - UINT32 PosLow; - UINT32 PosHigh; - CHAR16 *FileName; - UINTN Size; + EFI_STATUS Status; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + UINT32 PosLow; + UINT32 PosHigh; + CHAR16 *FileName; + UINTN Size; PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); @@ -1340,8 +1330,8 @@ WinNtFileSetPossition ( goto Done; } - Size = StrSize (PrivateFile->FileName); - Size += StrSize (L"\\*"); + Size = StrSize (PrivateFile->FileName); + Size += StrSize (L"\\*"); FileName = AllocatePool (Size); if (FileName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1382,8 +1372,6 @@ Done: return Status; } - - /** Get a file's current position @@ -1396,41 +1384,38 @@ Done: **/ EFI_STATUS WinNtFileGetPossition ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position + IN EFI_FILE_PROTOCOL *This, + OUT UINT64 *Position ) { - EFI_STATUS Status; - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - INT32 PositionHigh; - UINT64 PosHigh64; + EFI_STATUS Status; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + INT32 PositionHigh; + UINT64 PosHigh64; PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); PositionHigh = 0; - PosHigh64 = 0; + PosHigh64 = 0; if (PrivateFile->IsDirectoryPath) { - Status = EFI_UNSUPPORTED; goto Done; - } else { - PositionHigh = 0; - *Position = SetFilePointer ( - PrivateFile->LHandle, - 0, - (PLONG)&PositionHigh, - FILE_CURRENT - ); + *Position = SetFilePointer ( + PrivateFile->LHandle, + 0, + (PLONG)&PositionHigh, + FILE_CURRENT + ); Status = *Position == 0xffffffff ? EFI_DEVICE_ERROR : EFI_SUCCESS; if (EFI_ERROR (Status)) { goto Done; } - PosHigh64 = PositionHigh; + PosHigh64 = PositionHigh; *Position += LShiftU64 (PosHigh64, 32); } @@ -1438,13 +1423,13 @@ Done: return Status; } - EFI_STATUS WinNtSimpleFileSystemFileInfo ( IN WIN_NT_EFI_FILE_PRIVATE *PrivateFile, IN OUT UINTN *BufferSize, OUT VOID *Buffer -) + ) + /*++ Routine Description: @@ -1476,7 +1461,7 @@ Returns: Size = SIZE_OF_EFI_FILE_INFO; RealFileName = PrivateFile->FileName; - TempPointer = RealFileName; + TempPointer = RealFileName; while (*TempPointer) { if (*TempPointer == '\\') { RealFileName = TempPointer + 1; @@ -1484,6 +1469,7 @@ Returns: TempPointer++; } + NameSize = StrSize (RealFileName); ResultSize = Size + NameSize; @@ -1499,8 +1485,8 @@ Returns: GetFileInformationByHandle ( PrivateFile->IsDirectoryPath ? PrivateFile->DirHandle : PrivateFile->LHandle, &FileInfo - ); - Info->FileSize = FileInfo.nFileSizeLow; + ); + Info->FileSize = FileInfo.nFileSizeLow; Info->PhysicalSize = Info->FileSize; GetTimeZoneInformation (&TimeZone); @@ -1563,27 +1549,27 @@ Returns: **/ EFI_STATUS WinNtFileGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer ) { - EFI_STATUS Status; - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - EFI_FILE_SYSTEM_INFO *FileSystemInfoBuffer; - UINT32 SectorsPerCluster; - UINT32 BytesPerSector; - UINT32 FreeClusters; - UINT32 TotalClusters; - UINT32 BytesPerCluster; - CHAR16 *DriveName; - BOOLEAN DriveNameFound; - BOOL NtStatus; - UINTN Index; - WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; - - if (This == NULL || InformationType == NULL || BufferSize == NULL) { + EFI_STATUS Status; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + EFI_FILE_SYSTEM_INFO *FileSystemInfoBuffer; + UINT32 SectorsPerCluster; + UINT32 BytesPerSector; + UINT32 FreeClusters; + UINT32 TotalClusters; + UINT32 BytesPerCluster; + CHAR16 *DriveName; + BOOLEAN DriveNameFound; + BOOL NtStatus; + UINTN Index; + WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; + + if ((This == NULL) || (InformationType == NULL) || (BufferSize == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1599,19 +1585,19 @@ WinNtFileGetInfo ( if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) { if (*BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) { *BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); - Status = EFI_BUFFER_TOO_SMALL; + Status = EFI_BUFFER_TOO_SMALL; goto Done; } - FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *)Buffer; - FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); + FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *)Buffer; + FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); FileSystemInfoBuffer->ReadOnly = FALSE; // // Try to get the drive name // DriveNameFound = FALSE; - DriveName = AllocatePool (StrSize (PrivateFile->FilePath) + 1); + DriveName = AllocatePool (StrSize (PrivateFile->FilePath) + 1); if (DriveName == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Done; @@ -1623,25 +1609,22 @@ WinNtFileGetInfo ( PrivateFile->FilePath ); for (Index = 0; DriveName[Index] != 0 && DriveName[Index] != ':'; Index++) { - ; } if (DriveName[Index] == ':') { DriveName[Index + 1] = '\\'; DriveName[Index + 2] = 0; - DriveNameFound = TRUE; - } else if (DriveName[0] == '\\' && DriveName[1] == '\\') { + DriveNameFound = TRUE; + } else if ((DriveName[0] == '\\') && (DriveName[1] == '\\')) { for (Index = 2; DriveName[Index] != 0 && DriveName[Index] != '\\'; Index++) { - ; } if (DriveName[Index] == '\\') { DriveNameFound = TRUE; for (Index++; DriveName[Index] != 0 && DriveName[Index] != '\\'; Index++) { - ; } - DriveName[Index] = '\\'; + DriveName[Index] = '\\'; DriveName[Index + 1] = 0; } } @@ -1650,12 +1633,12 @@ WinNtFileGetInfo ( // Try GetDiskFreeSpace first // NtStatus = GetDiskFreeSpace ( - DriveNameFound ? DriveName : NULL, - (LPDWORD)&SectorsPerCluster, - (LPDWORD)&BytesPerSector, - (LPDWORD)&FreeClusters, - (LPDWORD)&TotalClusters - ); + DriveNameFound ? DriveName : NULL, + (LPDWORD)&SectorsPerCluster, + (LPDWORD)&BytesPerSector, + (LPDWORD)&FreeClusters, + (LPDWORD)&TotalClusters + ); if (DriveName) { FreePool (DriveName); } @@ -1664,22 +1647,21 @@ WinNtFileGetInfo ( // // Succeeded // - BytesPerCluster = BytesPerSector * SectorsPerCluster; + BytesPerCluster = BytesPerSector * SectorsPerCluster; FileSystemInfoBuffer->VolumeSize = MultU64x32 (TotalClusters, BytesPerCluster); - FileSystemInfoBuffer->FreeSpace = MultU64x32 (FreeClusters, BytesPerCluster); - FileSystemInfoBuffer->BlockSize = BytesPerCluster; - + FileSystemInfoBuffer->FreeSpace = MultU64x32 (FreeClusters, BytesPerCluster); + FileSystemInfoBuffer->BlockSize = BytesPerCluster; } else { // // try GetDiskFreeSpaceEx then // FileSystemInfoBuffer->BlockSize = 0; - NtStatus = GetDiskFreeSpaceEx ( - PrivateFile->FilePath, - (PULARGE_INTEGER)(&FileSystemInfoBuffer->FreeSpace), - (PULARGE_INTEGER)(&FileSystemInfoBuffer->VolumeSize), - NULL - ); + NtStatus = GetDiskFreeSpaceEx ( + PrivateFile->FilePath, + (PULARGE_INTEGER)(&FileSystemInfoBuffer->FreeSpace), + (PULARGE_INTEGER)(&FileSystemInfoBuffer->VolumeSize), + NULL + ); if (!NtStatus) { Status = EFI_DEVICE_ERROR; goto Done; @@ -1692,13 +1674,13 @@ WinNtFileGetInfo ( PrivateRoot->VolumeLabel ); *BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel); - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; } if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) { if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) { *BufferSize = StrSize (PrivateRoot->VolumeLabel); - Status = EFI_BUFFER_TOO_SMALL; + Status = EFI_BUFFER_TOO_SMALL; goto Done; } @@ -1708,14 +1690,13 @@ WinNtFileGetInfo ( PrivateRoot->VolumeLabel ); *BufferSize = StrSize (PrivateRoot->VolumeLabel); - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; } Done: return Status; } - /** Set information about a file @@ -1735,39 +1716,39 @@ Done: **/ EFI_STATUS WinNtFileSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer + IN EFI_FILE_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN UINTN BufferSize, + IN VOID *Buffer ) { - WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; - WIN_NT_EFI_FILE_PRIVATE *PrivateFile; - EFI_FILE_INFO *OldFileInfo; - EFI_FILE_INFO *NewFileInfo; - EFI_STATUS Status; - UINTN OldInfoSize; - INTN NtStatus; - UINT32 NewAttr; - UINT32 OldAttr; - CHAR16 *OldFileName; - CHAR16 *NewFileName; - CHAR16 *TempFileName; - CHAR16 *CharPointer; - BOOLEAN AttrChangeFlag; - BOOLEAN NameChangeFlag; - BOOLEAN SizeChangeFlag; - BOOLEAN TimeChangeFlag; - UINT64 CurPos; - SYSTEMTIME NewCreationSystemTime; - SYSTEMTIME NewLastAccessSystemTime; - SYSTEMTIME NewLastWriteSystemTime; - FILETIME NewCreationFileTime; - FILETIME NewLastAccessFileTime; - FILETIME NewLastWriteFileTime; - WIN32_FIND_DATA FindBuf; - EFI_FILE_SYSTEM_INFO *NewFileSystemInfo; - UINTN Size; + WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot; + WIN_NT_EFI_FILE_PRIVATE *PrivateFile; + EFI_FILE_INFO *OldFileInfo; + EFI_FILE_INFO *NewFileInfo; + EFI_STATUS Status; + UINTN OldInfoSize; + INTN NtStatus; + UINT32 NewAttr; + UINT32 OldAttr; + CHAR16 *OldFileName; + CHAR16 *NewFileName; + CHAR16 *TempFileName; + CHAR16 *CharPointer; + BOOLEAN AttrChangeFlag; + BOOLEAN NameChangeFlag; + BOOLEAN SizeChangeFlag; + BOOLEAN TimeChangeFlag; + UINT64 CurPos; + SYSTEMTIME NewCreationSystemTime; + SYSTEMTIME NewLastAccessSystemTime; + SYSTEMTIME NewLastWriteSystemTime; + FILETIME NewCreationFileTime; + FILETIME NewLastAccessFileTime; + FILETIME NewLastWriteFileTime; + WIN32_FIND_DATA FindBuf; + EFI_FILE_SYSTEM_INFO *NewFileSystemInfo; + UINTN Size; // // Initialise locals. @@ -1775,9 +1756,9 @@ WinNtFileSetInfo ( PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem); - Status = EFI_UNSUPPORTED; - OldFileInfo = NewFileInfo = NULL; - OldFileName = NewFileName = NULL; + Status = EFI_UNSUPPORTED; + OldFileInfo = NewFileInfo = NULL; + OldFileName = NewFileName = NULL; AttrChangeFlag = NameChangeFlag = SizeChangeFlag = TimeChangeFlag = FALSE; // @@ -1790,7 +1771,6 @@ WinNtFileSetInfo ( goto Done; } - FreePool (PrivateRoot->VolumeLabel); PrivateRoot->VolumeLabel = AllocatePool (StrSize (NewFileSystemInfo->VolumeLabel)); if (PrivateRoot->VolumeLabel == NULL) { @@ -1847,9 +1827,10 @@ WinNtFileSetInfo ( NewFileInfo = (EFI_FILE_INFO *)Buffer; if ((NewFileInfo->Size <= SIZE_OF_EFI_FILE_INFO) || - (NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) || - (sizeof (UINTN) == 4 && NewFileInfo->Size > 0xFFFFFFFF) - ) { + (NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) || + ((sizeof (UINTN) == 4) && (NewFileInfo->Size > 0xFFFFFFFF)) + ) + { Status = EFI_INVALID_PARAMETER; goto Done; } @@ -1865,7 +1846,7 @@ WinNtFileSetInfo ( // of change request this is. // OldInfoSize = 0; - Status = WinNtSimpleFileSystemFileInfo (PrivateFile, &OldInfoSize, NULL); + Status = WinNtSimpleFileSystemFileInfo (PrivateFile, &OldInfoSize, NULL); if (Status != EFI_BUFFER_TOO_SMALL) { Status = EFI_DEVICE_ERROR; @@ -1900,9 +1881,9 @@ WinNtFileSetInfo ( // Make full pathname from new filename and rootpath. // if (NewFileInfo->FileName[0] == '\\') { - Size = StrSize (PrivateRoot->FilePath); - Size += StrSize (L"\\"); - Size += StrSize (NewFileInfo->FileName); + Size = StrSize (PrivateRoot->FilePath); + Size += StrSize (L"\\"); + Size += StrSize (NewFileInfo->FileName); NewFileName = AllocatePool (Size); if (NewFileName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1913,9 +1894,9 @@ WinNtFileSetInfo ( StrCatS (NewFileName, Size / sizeof (CHAR16), L"\\"); StrCatS (NewFileName, Size / sizeof (CHAR16), NewFileInfo->FileName + 1); } else { - Size = StrSize (PrivateFile->FilePath); - Size += StrSize (L"\\"); - Size += StrSize (NewFileInfo->FileName); + Size = StrSize (PrivateFile->FilePath); + Size += StrSize (L"\\"); + Size += StrSize (NewFileInfo->FileName); NewFileName = AllocatePool (Size); if (NewFileName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1958,16 +1939,19 @@ WinNtFileSetInfo ( // Is there a time stamp change request? // if (!IsZero (&NewFileInfo->CreateTime, sizeof (EFI_TIME)) && - CompareMem (&NewFileInfo->CreateTime, &OldFileInfo->CreateTime, sizeof (EFI_TIME)) - ) { + CompareMem (&NewFileInfo->CreateTime, &OldFileInfo->CreateTime, sizeof (EFI_TIME)) + ) + { TimeChangeFlag = TRUE; } else if (!IsZero (&NewFileInfo->LastAccessTime, sizeof (EFI_TIME)) && - CompareMem (&NewFileInfo->LastAccessTime, &OldFileInfo->LastAccessTime, sizeof (EFI_TIME)) - ) { + CompareMem (&NewFileInfo->LastAccessTime, &OldFileInfo->LastAccessTime, sizeof (EFI_TIME)) + ) + { TimeChangeFlag = TRUE; } else if (!IsZero (&NewFileInfo->ModificationTime, sizeof (EFI_TIME)) && - CompareMem (&NewFileInfo->ModificationTime, &OldFileInfo->ModificationTime, sizeof (EFI_TIME)) - ) { + CompareMem (&NewFileInfo->ModificationTime, &OldFileInfo->ModificationTime, sizeof (EFI_TIME)) + ) + { TimeChangeFlag = TRUE; } @@ -2013,7 +1997,7 @@ WinNtFileSetInfo ( } } - if (PrivateFile->IsDirectoryPath && PrivateFile->DirHandle != INVALID_HANDLE_VALUE) { + if (PrivateFile->IsDirectoryPath && (PrivateFile->DirHandle != INVALID_HANDLE_VALUE)) { CloseHandle (PrivateFile->DirHandle); PrivateFile->DirHandle = INVALID_HANDLE_VALUE; } @@ -2034,22 +2018,22 @@ WinNtFileSetInfo ( StrCpyS (PrivateFile->FileName, StrSize (NewFileName) / sizeof (CHAR16), NewFileName); - Size = StrSize (NewFileName); - Size += StrSize (L"\\*"); + Size = StrSize (NewFileName); + Size += StrSize (L"\\*"); TempFileName = AllocatePool (Size); StrCpyS (TempFileName, Size / sizeof (CHAR16), NewFileName); if (!PrivateFile->IsDirectoryPath) { PrivateFile->LHandle = CreateFile ( - TempFileName, - PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - 0, - NULL - ); + TempFileName, + PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); FreePool (TempFileName); @@ -2062,14 +2046,14 @@ WinNtFileSetInfo ( } } else { PrivateFile->DirHandle = CreateFile ( - TempFileName, - PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - NULL - ); + TempFileName, + PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS, + NULL + ); StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*"); PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf); @@ -2078,7 +2062,7 @@ WinNtFileSetInfo ( } } else { Status = EFI_ACCESS_DENIED; - Reopen:; +Reopen:; NtStatus = SetFileAttributes (OldFileName, OldAttr); @@ -2086,32 +2070,32 @@ WinNtFileSetInfo ( goto Done; } - Size = StrSize (OldFileName); - Size += StrSize (L"\\*"); + Size = StrSize (OldFileName); + Size += StrSize (L"\\*"); TempFileName = AllocatePool (Size); StrCpyS (TempFileName, Size / sizeof (CHAR16), OldFileName); if (!PrivateFile->IsDirectoryPath) { PrivateFile->LHandle = CreateFile ( - TempFileName, - PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - 0, - NULL - ); + TempFileName, + PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, + NULL + ); } else { PrivateFile->DirHandle = CreateFile ( - TempFileName, - PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - NULL - ); + TempFileName, + PrivateFile->IsOpenedByRead ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS, + NULL + ); StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*"); PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf); @@ -2120,7 +2104,6 @@ WinNtFileSetInfo ( FreePool (TempFileName); goto Done; - } } @@ -2163,83 +2146,88 @@ WinNtFileSetInfo ( // Time change // if (TimeChangeFlag) { - - NewCreationSystemTime.wYear = NewFileInfo->CreateTime.Year; - NewCreationSystemTime.wMonth = NewFileInfo->CreateTime.Month; - NewCreationSystemTime.wDay = NewFileInfo->CreateTime.Day; - NewCreationSystemTime.wHour = NewFileInfo->CreateTime.Hour; - NewCreationSystemTime.wMinute = NewFileInfo->CreateTime.Minute; - NewCreationSystemTime.wSecond = NewFileInfo->CreateTime.Second; + NewCreationSystemTime.wYear = NewFileInfo->CreateTime.Year; + NewCreationSystemTime.wMonth = NewFileInfo->CreateTime.Month; + NewCreationSystemTime.wDay = NewFileInfo->CreateTime.Day; + NewCreationSystemTime.wHour = NewFileInfo->CreateTime.Hour; + NewCreationSystemTime.wMinute = NewFileInfo->CreateTime.Minute; + NewCreationSystemTime.wSecond = NewFileInfo->CreateTime.Second; NewCreationSystemTime.wMilliseconds = 0; if (!SystemTimeToFileTime ( - &NewCreationSystemTime, - &NewCreationFileTime - )) { + &NewCreationSystemTime, + &NewCreationFileTime + )) + { goto Done; } if (!LocalFileTimeToFileTime ( - &NewCreationFileTime, - &NewCreationFileTime - )) { + &NewCreationFileTime, + &NewCreationFileTime + )) + { goto Done; } - NewLastAccessSystemTime.wYear = NewFileInfo->LastAccessTime.Year; - NewLastAccessSystemTime.wMonth = NewFileInfo->LastAccessTime.Month; - NewLastAccessSystemTime.wDay = NewFileInfo->LastAccessTime.Day; - NewLastAccessSystemTime.wHour = NewFileInfo->LastAccessTime.Hour; - NewLastAccessSystemTime.wMinute = NewFileInfo->LastAccessTime.Minute; - NewLastAccessSystemTime.wSecond = NewFileInfo->LastAccessTime.Second; + NewLastAccessSystemTime.wYear = NewFileInfo->LastAccessTime.Year; + NewLastAccessSystemTime.wMonth = NewFileInfo->LastAccessTime.Month; + NewLastAccessSystemTime.wDay = NewFileInfo->LastAccessTime.Day; + NewLastAccessSystemTime.wHour = NewFileInfo->LastAccessTime.Hour; + NewLastAccessSystemTime.wMinute = NewFileInfo->LastAccessTime.Minute; + NewLastAccessSystemTime.wSecond = NewFileInfo->LastAccessTime.Second; NewLastAccessSystemTime.wMilliseconds = 0; if (!SystemTimeToFileTime ( - &NewLastAccessSystemTime, - &NewLastAccessFileTime - )) { + &NewLastAccessSystemTime, + &NewLastAccessFileTime + )) + { goto Done; } if (!LocalFileTimeToFileTime ( - &NewLastAccessFileTime, - &NewLastAccessFileTime - )) { + &NewLastAccessFileTime, + &NewLastAccessFileTime + )) + { goto Done; } - NewLastWriteSystemTime.wYear = NewFileInfo->ModificationTime.Year; - NewLastWriteSystemTime.wMonth = NewFileInfo->ModificationTime.Month; - NewLastWriteSystemTime.wDay = NewFileInfo->ModificationTime.Day; - NewLastWriteSystemTime.wHour = NewFileInfo->ModificationTime.Hour; - NewLastWriteSystemTime.wMinute = NewFileInfo->ModificationTime.Minute; - NewLastWriteSystemTime.wSecond = NewFileInfo->ModificationTime.Second; + NewLastWriteSystemTime.wYear = NewFileInfo->ModificationTime.Year; + NewLastWriteSystemTime.wMonth = NewFileInfo->ModificationTime.Month; + NewLastWriteSystemTime.wDay = NewFileInfo->ModificationTime.Day; + NewLastWriteSystemTime.wHour = NewFileInfo->ModificationTime.Hour; + NewLastWriteSystemTime.wMinute = NewFileInfo->ModificationTime.Minute; + NewLastWriteSystemTime.wSecond = NewFileInfo->ModificationTime.Second; NewLastWriteSystemTime.wMilliseconds = 0; if (!SystemTimeToFileTime ( - &NewLastWriteSystemTime, - &NewLastWriteFileTime - )) { + &NewLastWriteSystemTime, + &NewLastWriteFileTime + )) + { goto Done; } if (!LocalFileTimeToFileTime ( - &NewLastWriteFileTime, - &NewLastWriteFileTime - )) { + &NewLastWriteFileTime, + &NewLastWriteFileTime + )) + { goto Done; } if (!SetFileTime ( - PrivateFile->IsDirectoryPath ? PrivateFile->DirHandle : PrivateFile->LHandle, - &NewCreationFileTime, - &NewLastAccessFileTime, - &NewLastWriteFileTime - )) { + PrivateFile->IsDirectoryPath ? PrivateFile->DirHandle : PrivateFile->LHandle, + &NewCreationFileTime, + &NewLastAccessFileTime, + &NewLastWriteFileTime + )) + { Status = EFI_DEVICE_ERROR; goto Done; } - } // @@ -2295,7 +2283,6 @@ Done: return Status; } - /** Flush data back for the file handle. @@ -2351,14 +2338,11 @@ Done: // // bugbug: - Use Windows error reporting. // - } - - EFI_STATUS WinNtFileSystmeThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *Private; @@ -2390,10 +2374,9 @@ WinNtFileSystmeThunkOpen ( return EFI_SUCCESS; } - EFI_STATUS WinNtFileSystmeThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *Private; @@ -2404,15 +2387,16 @@ WinNtFileSystmeThunkClose ( if (Private->VolumeLabel != NULL) { FreePool (Private->VolumeLabel); } + if (Private->FilePath != NULL) { FreePool (Private->FilePath); } + FreePool (Private); return EFI_SUCCESS; } - -EFI_FILE_PROTOCOL gWinNtFileProtocol = { +EFI_FILE_PROTOCOL gWinNtFileProtocol = { EFI_FILE_REVISION, WinNtFileOpen, WinNtFileClose, @@ -2426,13 +2410,12 @@ EFI_FILE_PROTOCOL gWinNtFileProtocol = { WinNtFileFlush }; -EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gWinNtFileSystemProtocol = { +EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gWinNtFileSystemProtocol = { EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION, WinNtOpenVolume }; - -EMU_IO_THUNK_PROTOCOL mWinNtFileSystemThunkIo = { +EMU_IO_THUNK_PROTOCOL mWinNtFileSystemThunkIo = { &gEfiSimpleFileSystemProtocolGuid, NULL, NULL, @@ -2441,5 +2424,3 @@ EMU_IO_THUNK_PROTOCOL mWinNtFileSystemThunkIo = { WinNtFileSystmeThunkClose, NULL }; - - diff --git a/EmulatorPkg/Win/Host/WinGop.h b/EmulatorPkg/Win/Host/WinGop.h index 7a8f01a37c..2799778ca9 100644 --- a/EmulatorPkg/Win/Host/WinGop.h +++ b/EmulatorPkg/Win/Host/WinGop.h @@ -17,7 +17,6 @@ Abstract: #ifndef _WIN_GOP_H_ #define _WIN_GOP_H_ - #include "WinHost.h" #include @@ -39,87 +38,85 @@ Abstract: // The value is 1 if the ALT key is down while the key is pressed/released; // it is 0 if the WM_SYSKEYDOWN message is posted to the active window // because no window has the keyboard focus. -#define GOP_EXTENDED_KEY (0x1 << 24) -#define GOP_ALT_KEY_PRESSED (0x1 << 29) +#define GOP_EXTENDED_KEY (0x1 << 24) +#define GOP_ALT_KEY_PRESSED (0x1 << 29) -#define KEYBOARD_TIMER_INTERVAL 200000 // 0.02s +#define KEYBOARD_TIMER_INTERVAL 200000 // 0.02s -#define MAX_Q 256 +#define MAX_Q 256 typedef struct { - UINTN Front; - UINTN Rear; - EFI_KEY_DATA Q[MAX_Q]; - CRITICAL_SECTION Cs; + UINTN Front; + UINTN Rear; + EFI_KEY_DATA Q[MAX_Q]; + CRITICAL_SECTION Cs; } GOP_QUEUE_FIXED; -#define WIN_NT_GOP_CLASS_NAME L"WinNtGopWindow" - +#define WIN_NT_GOP_CLASS_NAME L"WinNtGopWindow" typedef struct { - UINT64 Signature; - EMU_GRAPHICS_WINDOW_PROTOCOL GraphicsWindowIo; + UINT64 Signature; + EMU_GRAPHICS_WINDOW_PROTOCOL GraphicsWindowIo; // // GOP Private Data knowing when to start hardware // - BOOLEAN HardwareNeedsStarting; + BOOLEAN HardwareNeedsStarting; - CHAR16 *WindowName; - CHAR16 Buffer[160]; + CHAR16 *WindowName; + CHAR16 Buffer[160]; - HANDLE ThreadInited; // Semaphore - HANDLE ThreadHandle; // Thread - DWORD ThreadId; + HANDLE ThreadInited; // Semaphore + HANDLE ThreadHandle; // Thread + DWORD ThreadId; - HWND WindowHandle; - WNDCLASSEX WindowsClass; + HWND WindowHandle; + WNDCLASSEX WindowsClass; - UINT32 Width; - UINT32 Height; + UINT32 Width; + UINT32 Height; // // This screen is used to redraw the screen when windows events happen. It's // updated in the main thread and displayed in the windows thread. // - BITMAPV4HEADER *VirtualScreenInfo; + BITMAPV4HEADER *VirtualScreenInfo; - FRAME_BUFFER_CONFIGURE *FrameBufferConfigure; + FRAME_BUFFER_CONFIGURE *FrameBufferConfigure; // // Keyboard Queue used by Simple Text In. // QueueForRead: WinProc thread adds, and main thread removes. // - GOP_QUEUE_FIXED QueueForRead; + GOP_QUEUE_FIXED QueueForRead; EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeRegisterdKeyCallback; EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakRegisterdKeyCallback; VOID *RegisterdKeyCallbackContext; - EFI_KEY_STATE KeyState; - BOOLEAN LeftShift; - BOOLEAN RightShift; - BOOLEAN LeftAlt; - BOOLEAN RightAlt; - BOOLEAN LeftCtrl; - BOOLEAN RightCtrl; - BOOLEAN LeftLogo; - BOOLEAN RightLogo; - BOOLEAN Menu; - BOOLEAN SysReq; - BOOLEAN NumLock; - BOOLEAN ScrollLock; - BOOLEAN CapsLock; - BOOLEAN IsPartialKeySupport; - INT32 PointerPreviousX; - INT32 PointerPreviousY; - BOOLEAN PointerStateChanged; - EFI_SIMPLE_POINTER_STATE PointerState; + EFI_KEY_STATE KeyState; + BOOLEAN LeftShift; + BOOLEAN RightShift; + BOOLEAN LeftAlt; + BOOLEAN RightAlt; + BOOLEAN LeftCtrl; + BOOLEAN RightCtrl; + BOOLEAN LeftLogo; + BOOLEAN RightLogo; + BOOLEAN Menu; + BOOLEAN SysReq; + BOOLEAN NumLock; + BOOLEAN ScrollLock; + BOOLEAN CapsLock; + BOOLEAN IsPartialKeySupport; + INT32 PointerPreviousX; + INT32 PointerPreviousY; + BOOLEAN PointerStateChanged; + EFI_SIMPLE_POINTER_STATE PointerState; } GRAPHICS_PRIVATE_DATA; #define GRAPHICS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('g', 'f', 'x', 'd') #define GRAPHICS_PRIVATE_DATA_FROM_THIS(a) \ CR(a, GRAPHICS_PRIVATE_DATA, GraphicsWindowIo, GRAPHICS_PRIVATE_DATA_SIGNATURE) - // // Gop Hardware abstraction internal worker functions // @@ -135,8 +132,8 @@ typedef struct { **/ EFI_STATUS GopPrivateAddKey ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN EFI_INPUT_KEY Key + IN GRAPHICS_PRIVATE_DATA *Private, + IN EFI_INPUT_KEY Key ); EFI_STATUS @@ -149,29 +146,29 @@ WinNtWndGetKey ( EFI_STATUS EFIAPI WinNtWndCheckKey ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo ); EFI_STATUS EFIAPI WinNtWndKeySetState ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EFI_KEY_TOGGLE_STATE *KeyToggleState + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EFI_KEY_TOGGLE_STATE *KeyToggleState ); EFI_STATUS EFIAPI WinNtWndRegisterKeyNotify ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, - IN VOID *Context + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, + IN VOID *Context ); EFI_STATUS EFIAPI WinNtWndCheckPointer ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo ); EFI_STATUS @@ -180,13 +177,13 @@ WinNtWndGetPointerState ( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, IN EFI_SIMPLE_POINTER_STATE *State ); + EFI_STATUS GopPrivateCreateQ ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN GOP_QUEUE_FIXED *Queue + IN GRAPHICS_PRIVATE_DATA *Private, + IN GOP_QUEUE_FIXED *Queue ); - /** TODO: Add function description @@ -197,8 +194,8 @@ GopPrivateCreateQ ( **/ EFI_STATUS GopPrivateDestroyQ ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN GOP_QUEUE_FIXED *Queue + IN GRAPHICS_PRIVATE_DATA *Private, + IN GOP_QUEUE_FIXED *Queue ); -#endif +#endif diff --git a/EmulatorPkg/Win/Host/WinGopInput.c b/EmulatorPkg/Win/Host/WinGopInput.c index 6ae7aa4c37..1c67a1cb40 100644 --- a/EmulatorPkg/Win/Host/WinGopInput.c +++ b/EmulatorPkg/Win/Host/WinGopInput.c @@ -22,10 +22,8 @@ Abstract: **/ - #include "WinGop.h" - /** TODO: Add function description @@ -36,8 +34,8 @@ Abstract: **/ EFI_STATUS GopPrivateCreateQ ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN GOP_QUEUE_FIXED *Queue + IN GRAPHICS_PRIVATE_DATA *Private, + IN GOP_QUEUE_FIXED *Queue ) { InitializeCriticalSection (&Queue->Cs); @@ -46,7 +44,6 @@ GopPrivateCreateQ ( return EFI_SUCCESS; } - /** TODO: Add function description @@ -57,8 +54,8 @@ GopPrivateCreateQ ( **/ EFI_STATUS GopPrivateDestroyQ ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN GOP_QUEUE_FIXED *Queue + IN GRAPHICS_PRIVATE_DATA *Private, + IN GOP_QUEUE_FIXED *Queue ) { Queue->Front = 0; @@ -67,7 +64,6 @@ GopPrivateDestroyQ ( return EFI_SUCCESS; } - /** TODO: Add function description @@ -80,9 +76,9 @@ GopPrivateDestroyQ ( **/ EFI_STATUS GopPrivateAddQ ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN GOP_QUEUE_FIXED *Queue, - IN EFI_KEY_DATA *KeyData + IN GRAPHICS_PRIVATE_DATA *Private, + IN GOP_QUEUE_FIXED *Queue, + IN EFI_KEY_DATA *KeyData ) { EnterCriticalSection (&Queue->Cs); @@ -93,13 +89,12 @@ GopPrivateAddQ ( } CopyMem (&Queue->Q[Queue->Rear], KeyData, sizeof (EFI_KEY_DATA)); - Queue->Rear = (Queue->Rear + 1) % MAX_Q; + Queue->Rear = (Queue->Rear + 1) % MAX_Q; LeaveCriticalSection (&Queue->Cs); return EFI_SUCCESS; } - /** TODO: Add function description @@ -112,9 +107,9 @@ GopPrivateAddQ ( **/ EFI_STATUS GopPrivateDeleteQ ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN GOP_QUEUE_FIXED *Queue, - OUT EFI_KEY_DATA *Key + IN GRAPHICS_PRIVATE_DATA *Private, + IN GOP_QUEUE_FIXED *Queue, + OUT EFI_KEY_DATA *Key ) { EnterCriticalSection (&Queue->Cs); @@ -125,9 +120,9 @@ GopPrivateDeleteQ ( } CopyMem (Key, &Queue->Q[Queue->Front], sizeof (EFI_KEY_DATA)); - Queue->Front = (Queue->Front + 1) % MAX_Q; + Queue->Front = (Queue->Front + 1) % MAX_Q; - if (Key->Key.ScanCode == SCAN_NULL && Key->Key.UnicodeChar == CHAR_NULL) { + if ((Key->Key.ScanCode == SCAN_NULL) && (Key->Key.UnicodeChar == CHAR_NULL)) { if (!Private->IsPartialKeySupport) { // // If partial keystrok is not enabled, don't return the partial keystroke. @@ -137,11 +132,11 @@ GopPrivateDeleteQ ( return EFI_NOT_READY; } } + LeaveCriticalSection (&Queue->Cs); return EFI_SUCCESS; } - /** TODO: Add function description @@ -153,7 +148,7 @@ GopPrivateDeleteQ ( **/ EFI_STATUS GopPrivateCheckQ ( - IN GOP_QUEUE_FIXED *Queue + IN GOP_QUEUE_FIXED *Queue ) { if (Queue->Front == Queue->Rear) { @@ -171,8 +166,8 @@ GopPrivateCheckQ ( **/ VOID InitializeKeyState ( - IN GRAPHICS_PRIVATE_DATA *Private, - IN EFI_KEY_STATE *KeyState + IN GRAPHICS_PRIVATE_DATA *Private, + IN EFI_KEY_STATE *KeyState ) { KeyState->KeyShiftState = EFI_SHIFT_STATE_VALID; @@ -182,44 +177,57 @@ InitializeKeyState ( // Record Key shift state and toggle state // if (Private->LeftCtrl) { - KeyState->KeyShiftState |= EFI_LEFT_CONTROL_PRESSED; + KeyState->KeyShiftState |= EFI_LEFT_CONTROL_PRESSED; } + if (Private->RightCtrl) { - KeyState->KeyShiftState |= EFI_RIGHT_CONTROL_PRESSED; + KeyState->KeyShiftState |= EFI_RIGHT_CONTROL_PRESSED; } + if (Private->LeftAlt) { - KeyState->KeyShiftState |= EFI_LEFT_ALT_PRESSED; + KeyState->KeyShiftState |= EFI_LEFT_ALT_PRESSED; } + if (Private->RightAlt) { - KeyState->KeyShiftState |= EFI_RIGHT_ALT_PRESSED; + KeyState->KeyShiftState |= EFI_RIGHT_ALT_PRESSED; } + if (Private->LeftShift) { - KeyState->KeyShiftState |= EFI_LEFT_SHIFT_PRESSED; + KeyState->KeyShiftState |= EFI_LEFT_SHIFT_PRESSED; } + if (Private->RightShift) { - KeyState->KeyShiftState |= EFI_RIGHT_SHIFT_PRESSED; + KeyState->KeyShiftState |= EFI_RIGHT_SHIFT_PRESSED; } + if (Private->LeftLogo) { - KeyState->KeyShiftState |= EFI_LEFT_LOGO_PRESSED; + KeyState->KeyShiftState |= EFI_LEFT_LOGO_PRESSED; } + if (Private->RightLogo) { - KeyState->KeyShiftState |= EFI_RIGHT_LOGO_PRESSED; + KeyState->KeyShiftState |= EFI_RIGHT_LOGO_PRESSED; } + if (Private->Menu) { - KeyState->KeyShiftState |= EFI_MENU_KEY_PRESSED; + KeyState->KeyShiftState |= EFI_MENU_KEY_PRESSED; } + if (Private->SysReq) { - KeyState->KeyShiftState |= EFI_SYS_REQ_PRESSED; + KeyState->KeyShiftState |= EFI_SYS_REQ_PRESSED; } + if (Private->CapsLock) { KeyState->KeyToggleState |= EFI_CAPS_LOCK_ACTIVE; } + if (Private->NumLock) { KeyState->KeyToggleState |= EFI_NUM_LOCK_ACTIVE; } + if (Private->ScrollLock) { KeyState->KeyToggleState |= EFI_SCROLL_LOCK_ACTIVE; } + if (Private->IsPartialKeySupport) { KeyState->KeyToggleState |= EFI_KEY_STATE_EXPOSED; } @@ -241,7 +249,7 @@ GopPrivateAddKey ( IN EFI_INPUT_KEY Key ) { - EFI_KEY_DATA KeyData; + EFI_KEY_DATA KeyData; KeyData.Key = Key; InitializeKeyState (Private, &KeyData.KeyState); @@ -251,7 +259,8 @@ GopPrivateAddKey ( // if ((Private->LeftCtrl || Private->RightCtrl) && (KeyData.Key.UnicodeChar >= 1) && (KeyData.Key.UnicodeChar <= 26) - ) { + ) + { if ((Private->LeftShift || Private->RightShift) == Private->CapsLock) { KeyData.Key.UnicodeChar = (CHAR16)(KeyData.Key.UnicodeChar + L'a' - 1); } else { @@ -264,7 +273,8 @@ GopPrivateAddKey ( // if (((KeyData.Key.UnicodeChar >= L'a') && (KeyData.Key.UnicodeChar <= L'z')) || ((KeyData.Key.UnicodeChar >= L'A') && (KeyData.Key.UnicodeChar <= L'Z')) - ) { + ) + { KeyData.KeyState.KeyShiftState &= ~(EFI_LEFT_SHIFT_PRESSED | EFI_RIGHT_SHIFT_PRESSED); } @@ -276,26 +286,26 @@ GopPrivateAddKey ( return EFI_SUCCESS; } - EFI_STATUS EFIAPI WinNtWndCheckKey ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo ) { - GRAPHICS_PRIVATE_DATA *Private; + GRAPHICS_PRIVATE_DATA *Private; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); return GopPrivateCheckQ (&Private->QueueForRead); - } + EFI_STATUS EFIAPI WinNtWndGetKey ( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, IN EFI_KEY_DATA *KeyData ) + /*++ Routine Description: @@ -316,15 +326,15 @@ WinNtWndGetKey ( --*/ { - EFI_STATUS Status; - GRAPHICS_PRIVATE_DATA *Private; + EFI_STATUS Status; + GRAPHICS_PRIVATE_DATA *Private; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); ZeroMem (&KeyData->Key, sizeof (KeyData->Key)); InitializeKeyState (Private, &KeyData->KeyState); - Status = GopPrivateCheckQ (&Private->QueueForRead); + Status = GopPrivateCheckQ (&Private->QueueForRead); if (!EFI_ERROR (Status)) { // // If a Key press exists try and read it. @@ -336,7 +346,7 @@ WinNtWndGetKey ( // EFI_NOT_READY. // if (!Private->IsPartialKeySupport) { - if (KeyData->Key.ScanCode == SCAN_NULL && KeyData->Key.UnicodeChar == CHAR_NULL) { + if ((KeyData->Key.ScanCode == SCAN_NULL) && (KeyData->Key.UnicodeChar == CHAR_NULL)) { Status = EFI_NOT_READY; } } @@ -344,51 +354,53 @@ WinNtWndGetKey ( } return Status; - } EFI_STATUS EFIAPI WinNtWndKeySetState ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EFI_KEY_TOGGLE_STATE *KeyToggleState + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EFI_KEY_TOGGLE_STATE *KeyToggleState ) { - GRAPHICS_PRIVATE_DATA *Private; + GRAPHICS_PRIVATE_DATA *Private; - Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); - Private->ScrollLock = FALSE; - Private->NumLock = FALSE; - Private->CapsLock = FALSE; + Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); + Private->ScrollLock = FALSE; + Private->NumLock = FALSE; + Private->CapsLock = FALSE; Private->IsPartialKeySupport = FALSE; if ((*KeyToggleState & EFI_SCROLL_LOCK_ACTIVE) == EFI_SCROLL_LOCK_ACTIVE) { Private->ScrollLock = TRUE; } + if ((*KeyToggleState & EFI_NUM_LOCK_ACTIVE) == EFI_NUM_LOCK_ACTIVE) { Private->NumLock = TRUE; } + if ((*KeyToggleState & EFI_CAPS_LOCK_ACTIVE) == EFI_CAPS_LOCK_ACTIVE) { Private->CapsLock = TRUE; } + if ((*KeyToggleState & EFI_KEY_STATE_EXPOSED) == EFI_KEY_STATE_EXPOSED) { Private->IsPartialKeySupport = TRUE; } + Private->KeyState.KeyToggleState = *KeyToggleState; return EFI_SUCCESS; } - EFI_STATUS EFIAPI WinNtWndRegisterKeyNotify ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, - IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, - IN VOID *Context + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack, + IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack, + IN VOID *Context ) { - GRAPHICS_PRIVATE_DATA *Private; + GRAPHICS_PRIVATE_DATA *Private; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); @@ -402,10 +414,10 @@ WinNtWndRegisterKeyNotify ( EFI_STATUS EFIAPI WinNtWndCheckPointer ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo ) { - GRAPHICS_PRIVATE_DATA *Private; + GRAPHICS_PRIVATE_DATA *Private; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); @@ -423,7 +435,7 @@ WinNtWndGetPointerState ( IN EFI_SIMPLE_POINTER_STATE *State ) { - GRAPHICS_PRIVATE_DATA *Private; + GRAPHICS_PRIVATE_DATA *Private; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); diff --git a/EmulatorPkg/Win/Host/WinGopScreen.c b/EmulatorPkg/Win/Host/WinGopScreen.c index 74011e225e..661573d777 100644 --- a/EmulatorPkg/Win/Host/WinGopScreen.c +++ b/EmulatorPkg/Win/Host/WinGopScreen.c @@ -18,8 +18,8 @@ Abstract: #include "WinGop.h" -DWORD mTlsIndex = TLS_OUT_OF_INDEXES; -DWORD mTlsIndexUseCount = 0; // lets us know when we can free mTlsIndex. +DWORD mTlsIndex = TLS_OUT_OF_INDEXES; +DWORD mTlsIndexUseCount = 0; // lets us know when we can free mTlsIndex. BOOLEAN WinNtGopConvertParamToEfiKeyShiftState ( @@ -30,75 +30,78 @@ WinNtGopConvertParamToEfiKeyShiftState ( ) { switch (*wParam) { - // - // BUGBUG: Only GetAsyncKeyState() and GetKeyState() can distinguish - // left and right Ctrl, and Shift key. - // Neither of the two is defined in EFI_WIN_NT_THUNK_PROTOCOL. - // Therefor, we can not set the correct Shift state here. - // - case VK_SHIFT: - if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) { + // + // BUGBUG: Only GetAsyncKeyState() and GetKeyState() can distinguish + // left and right Ctrl, and Shift key. + // Neither of the two is defined in EFI_WIN_NT_THUNK_PROTOCOL. + // Therefor, we can not set the correct Shift state here. + // + case VK_SHIFT: + if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) { Private->RightShift = Flag; } else { Private->LeftShift = Flag; } - return TRUE; - case VK_LSHIFT: - Private->LeftShift = Flag; - return TRUE; + return TRUE; - case VK_RSHIFT: - Private->RightShift = Flag; - return TRUE; + case VK_LSHIFT: + Private->LeftShift = Flag; + return TRUE; - case VK_CONTROL: - if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) { - Private->RightCtrl= Flag; + case VK_RSHIFT: + Private->RightShift = Flag; + return TRUE; + + case VK_CONTROL: + if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) { + Private->RightCtrl = Flag; } else { Private->LeftCtrl = Flag; } - return TRUE; - case VK_LCONTROL: - Private->LeftCtrl = Flag; - return TRUE; + return TRUE; - case VK_RCONTROL: - Private->RightCtrl = Flag; - return TRUE; + case VK_LCONTROL: + Private->LeftCtrl = Flag; + return TRUE; - case VK_LWIN: - Private->LeftLogo = Flag; - return TRUE; + case VK_RCONTROL: + Private->RightCtrl = Flag; + return TRUE; - case VK_RWIN: - Private->RightLogo = Flag; - return TRUE; + case VK_LWIN: + Private->LeftLogo = Flag; + return TRUE; - case VK_APPS: - Private->Menu = Flag; - return TRUE; - // - // BUGBUG: PrintScreen/SysRq can not trigger WM_KEYDOWN message, - // so SySReq shift state is not supported here. - // - case VK_PRINT: - Private->SysReq = Flag; - return TRUE; - // - // For Alt Keystroke. - // - case VK_MENU: - if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) { + case VK_RWIN: + Private->RightLogo = Flag; + return TRUE; + + case VK_APPS: + Private->Menu = Flag; + return TRUE; + // + // BUGBUG: PrintScreen/SysRq can not trigger WM_KEYDOWN message, + // so SySReq shift state is not supported here. + // + case VK_PRINT: + Private->SysReq = Flag; + return TRUE; + // + // For Alt Keystroke. + // + case VK_MENU: + if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) { Private->RightAlt = Flag; } else { Private->LeftAlt = Flag; } - return TRUE; - default: - return FALSE; + return TRUE; + + default: + return FALSE; } } @@ -110,68 +113,138 @@ WinNtGopConvertParamToEfiKey ( IN EFI_INPUT_KEY *Key ) { - BOOLEAN Flag; + BOOLEAN Flag; + Flag = FALSE; switch (*wParam) { - case VK_HOME: Key->ScanCode = SCAN_HOME; Flag = TRUE; break; - case VK_END: Key->ScanCode = SCAN_END; Flag = TRUE; break; - case VK_LEFT: Key->ScanCode = SCAN_LEFT; Flag = TRUE; break; - case VK_RIGHT: Key->ScanCode = SCAN_RIGHT; Flag = TRUE; break; - case VK_UP: Key->ScanCode = SCAN_UP; Flag = TRUE; break; - case VK_DOWN: Key->ScanCode = SCAN_DOWN; Flag = TRUE; break; - case VK_DELETE: Key->ScanCode = SCAN_DELETE; Flag = TRUE; break; - case VK_INSERT: Key->ScanCode = SCAN_INSERT; Flag = TRUE; break; - case VK_PRIOR: Key->ScanCode = SCAN_PAGE_UP; Flag = TRUE; break; - case VK_NEXT: Key->ScanCode = SCAN_PAGE_DOWN; Flag = TRUE; break; - case VK_ESCAPE: Key->ScanCode = SCAN_ESC; Flag = TRUE; break; - - case VK_F1: Key->ScanCode = SCAN_F1; Flag = TRUE; break; - case VK_F2: Key->ScanCode = SCAN_F2; Flag = TRUE; break; - case VK_F3: Key->ScanCode = SCAN_F3; Flag = TRUE; break; - case VK_F4: Key->ScanCode = SCAN_F4; Flag = TRUE; break; - case VK_F5: Key->ScanCode = SCAN_F5; Flag = TRUE; break; - case VK_F6: Key->ScanCode = SCAN_F6; Flag = TRUE; break; - case VK_F7: Key->ScanCode = SCAN_F7; Flag = TRUE; break; - case VK_F8: Key->ScanCode = SCAN_F8; Flag = TRUE; break; - case VK_F9: Key->ScanCode = SCAN_F9; Flag = TRUE; break; - case VK_F11: Key->ScanCode = SCAN_F11; Flag = TRUE; break; - case VK_F12: Key->ScanCode = SCAN_F12; Flag = TRUE; break; - - case VK_F13: Key->ScanCode = SCAN_F13; Flag = TRUE; break; - case VK_F14: Key->ScanCode = SCAN_F14; Flag = TRUE; break; - case VK_F15: Key->ScanCode = SCAN_F15; Flag = TRUE; break; - case VK_F16: Key->ScanCode = SCAN_F16; Flag = TRUE; break; - case VK_F17: Key->ScanCode = SCAN_F17; Flag = TRUE; break; - case VK_F18: Key->ScanCode = SCAN_F18; Flag = TRUE; break; - case VK_F19: Key->ScanCode = SCAN_F19; Flag = TRUE; break; - case VK_F20: Key->ScanCode = SCAN_F20; Flag = TRUE; break; - case VK_F21: Key->ScanCode = SCAN_F21; Flag = TRUE; break; - case VK_F22: Key->ScanCode = SCAN_F22; Flag = TRUE; break; - case VK_F23: Key->ScanCode = SCAN_F23; Flag = TRUE; break; - case VK_F24: Key->ScanCode = SCAN_F24; Flag = TRUE; break; - case VK_PAUSE: Key->ScanCode = SCAN_PAUSE; Flag = TRUE; break; - - // - // Set toggle state - // - case VK_NUMLOCK: - Private->NumLock = (BOOLEAN)(!Private->NumLock); - Flag = TRUE; - break; - case VK_SCROLL: - Private->ScrollLock = (BOOLEAN)(!Private->ScrollLock); - Flag = TRUE; - break; - case VK_CAPITAL: - Private->CapsLock = (BOOLEAN)(!Private->CapsLock); - Flag = TRUE; - break; + case VK_HOME: Key->ScanCode = SCAN_HOME; + Flag = TRUE; + break; + case VK_END: Key->ScanCode = SCAN_END; + Flag = TRUE; + break; + case VK_LEFT: Key->ScanCode = SCAN_LEFT; + Flag = TRUE; + break; + case VK_RIGHT: Key->ScanCode = SCAN_RIGHT; + Flag = TRUE; + break; + case VK_UP: Key->ScanCode = SCAN_UP; + Flag = TRUE; + break; + case VK_DOWN: Key->ScanCode = SCAN_DOWN; + Flag = TRUE; + break; + case VK_DELETE: Key->ScanCode = SCAN_DELETE; + Flag = TRUE; + break; + case VK_INSERT: Key->ScanCode = SCAN_INSERT; + Flag = TRUE; + break; + case VK_PRIOR: Key->ScanCode = SCAN_PAGE_UP; + Flag = TRUE; + break; + case VK_NEXT: Key->ScanCode = SCAN_PAGE_DOWN; + Flag = TRUE; + break; + case VK_ESCAPE: Key->ScanCode = SCAN_ESC; + Flag = TRUE; + break; + + case VK_F1: Key->ScanCode = SCAN_F1; + Flag = TRUE; + break; + case VK_F2: Key->ScanCode = SCAN_F2; + Flag = TRUE; + break; + case VK_F3: Key->ScanCode = SCAN_F3; + Flag = TRUE; + break; + case VK_F4: Key->ScanCode = SCAN_F4; + Flag = TRUE; + break; + case VK_F5: Key->ScanCode = SCAN_F5; + Flag = TRUE; + break; + case VK_F6: Key->ScanCode = SCAN_F6; + Flag = TRUE; + break; + case VK_F7: Key->ScanCode = SCAN_F7; + Flag = TRUE; + break; + case VK_F8: Key->ScanCode = SCAN_F8; + Flag = TRUE; + break; + case VK_F9: Key->ScanCode = SCAN_F9; + Flag = TRUE; + break; + case VK_F11: Key->ScanCode = SCAN_F11; + Flag = TRUE; + break; + case VK_F12: Key->ScanCode = SCAN_F12; + Flag = TRUE; + break; + + case VK_F13: Key->ScanCode = SCAN_F13; + Flag = TRUE; + break; + case VK_F14: Key->ScanCode = SCAN_F14; + Flag = TRUE; + break; + case VK_F15: Key->ScanCode = SCAN_F15; + Flag = TRUE; + break; + case VK_F16: Key->ScanCode = SCAN_F16; + Flag = TRUE; + break; + case VK_F17: Key->ScanCode = SCAN_F17; + Flag = TRUE; + break; + case VK_F18: Key->ScanCode = SCAN_F18; + Flag = TRUE; + break; + case VK_F19: Key->ScanCode = SCAN_F19; + Flag = TRUE; + break; + case VK_F20: Key->ScanCode = SCAN_F20; + Flag = TRUE; + break; + case VK_F21: Key->ScanCode = SCAN_F21; + Flag = TRUE; + break; + case VK_F22: Key->ScanCode = SCAN_F22; + Flag = TRUE; + break; + case VK_F23: Key->ScanCode = SCAN_F23; + Flag = TRUE; + break; + case VK_F24: Key->ScanCode = SCAN_F24; + Flag = TRUE; + break; + case VK_PAUSE: Key->ScanCode = SCAN_PAUSE; + Flag = TRUE; + break; + + // + // Set toggle state + // + case VK_NUMLOCK: + Private->NumLock = (BOOLEAN)(!Private->NumLock); + Flag = TRUE; + break; + case VK_SCROLL: + Private->ScrollLock = (BOOLEAN)(!Private->ScrollLock); + Flag = TRUE; + break; + case VK_CAPITAL: + Private->CapsLock = (BOOLEAN)(!Private->CapsLock); + Flag = TRUE; + break; } return (WinNtGopConvertParamToEfiKeyShiftState (Private, wParam, lParam, TRUE)) == TRUE ? TRUE : Flag; } - // // GOP Protocol Member Functions // @@ -185,15 +258,15 @@ WinNtWndSize ( IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, IN UINT32 Width, IN UINT32 Height -) + ) { - RETURN_STATUS RStatus; - EFI_GRAPHICS_OUTPUT_MODE_INFORMATION Info; - GRAPHICS_PRIVATE_DATA *Private; - RECT Rect; - BITMAPV4HEADER *VirtualScreenInfo; - FRAME_BUFFER_CONFIGURE *FrameBufferConfigure; - UINTN FrameBufferConfigureSize; + RETURN_STATUS RStatus; + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION Info; + GRAPHICS_PRIVATE_DATA *Private; + RECT Rect; + BITMAPV4HEADER *VirtualScreenInfo; + FRAME_BUFFER_CONFIGURE *FrameBufferConfigure; + UINTN FrameBufferConfigureSize; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); @@ -202,10 +275,10 @@ WinNtWndSize ( // This buffer is the virtual screen/frame buffer. // VirtualScreenInfo = HeapAlloc ( - GetProcessHeap (), - HEAP_ZERO_MEMORY, - Width * Height * sizeof (RGBQUAD) + sizeof (BITMAPV4HEADER) - ); + GetProcessHeap (), + HEAP_ZERO_MEMORY, + Width * Height * sizeof (RGBQUAD) + sizeof (BITMAPV4HEADER) + ); if (VirtualScreenInfo == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -214,10 +287,10 @@ WinNtWndSize ( // Update the virtual screen info data structure // Use negative Height to make sure screen/buffer are using the same coordinate. // - VirtualScreenInfo->bV4Size = sizeof (BITMAPV4HEADER); - VirtualScreenInfo->bV4Width = Width; - VirtualScreenInfo->bV4Height = -(LONG)Height; - VirtualScreenInfo->bV4Planes = 1; + VirtualScreenInfo->bV4Size = sizeof (BITMAPV4HEADER); + VirtualScreenInfo->bV4Width = Width; + VirtualScreenInfo->bV4Height = -(LONG)Height; + VirtualScreenInfo->bV4Planes = 1; VirtualScreenInfo->bV4BitCount = 32; // // uncompressed @@ -229,20 +302,21 @@ WinNtWndSize ( Info.PixelFormat = PixelBlueGreenRedReserved8BitPerColor; Info.PixelsPerScanLine = Width; FrameBufferConfigureSize = 0; - RStatus = FrameBufferBltConfigure (VirtualScreenInfo + 1, &Info, NULL, &FrameBufferConfigureSize); + RStatus = FrameBufferBltConfigure (VirtualScreenInfo + 1, &Info, NULL, &FrameBufferConfigureSize); ASSERT (RStatus == EFI_BUFFER_TOO_SMALL); FrameBufferConfigure = AllocatePool (FrameBufferConfigureSize); if (FrameBufferConfigure == NULL) { HeapFree (GetProcessHeap (), 0, VirtualScreenInfo); return EFI_OUT_OF_RESOURCES; } + RStatus = FrameBufferBltConfigure (VirtualScreenInfo + 1, &Info, FrameBufferConfigure, &FrameBufferConfigureSize); ASSERT_RETURN_ERROR (RStatus); - if (Private->FrameBufferConfigure != NULL) { FreePool (Private->FrameBufferConfigure); } + Private->FrameBufferConfigure = FrameBufferConfigure; // @@ -253,6 +327,7 @@ WinNtWndSize ( if (Private->VirtualScreenInfo != NULL) { HeapFree (GetProcessHeap (), 0, Private->VirtualScreenInfo); } + Private->VirtualScreenInfo = VirtualScreenInfo; Private->Width = Width; @@ -321,24 +396,27 @@ WinNtWndSize ( // TODO: Delta - add argument and description to function comment EFI_STATUS WinNtWndBlt ( - IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, - IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, - IN EFI_UGA_BLT_OPERATION BltOperation, - IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args -) + IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo, + IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, + IN EFI_UGA_BLT_OPERATION BltOperation, + IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args + ) { - RETURN_STATUS RStatus; - GRAPHICS_PRIVATE_DATA *Private; - RECT Rect; + RETURN_STATUS RStatus; + GRAPHICS_PRIVATE_DATA *Private; + RECT Rect; Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); RStatus = FrameBufferBlt ( Private->FrameBufferConfigure, BltBuffer, BltOperation, - Args->SourceX, Args->SourceY, - Args->DestinationX, Args->DestinationY, - Args->Width, Args->Height, + Args->SourceX, + Args->SourceY, + Args->DestinationX, + Args->DestinationY, + Args->Width, + Args->Height, Args->Delta ); if (RETURN_ERROR (RStatus)) { @@ -370,8 +448,6 @@ WinNtWndBlt ( return EFI_SUCCESS; } - - /** Win32 Windows event handler. @@ -393,14 +469,14 @@ WinNtGopThreadWindowProc ( IN LPARAM lParam ) { - GRAPHICS_PRIVATE_DATA *Private; - HDC Handle; - PAINTSTRUCT PaintStruct; - LPARAM Index; - EFI_INPUT_KEY Key; - BOOLEAN AltIsPress; - INT32 PosX; - INT32 PosY; + GRAPHICS_PRIVATE_DATA *Private; + HDC Handle; + PAINTSTRUCT PaintStruct; + LPARAM Index; + EFI_INPUT_KEY Key; + BOOLEAN AltIsPress; + INT32 PosX; + INT32 PosY; // // Use mTlsIndex global to get a Thread Local Storage version of Private. @@ -408,190 +484,195 @@ WinNtGopThreadWindowProc ( // a unique thread. // AltIsPress = FALSE; - Private = TlsGetValue (mTlsIndex); + Private = TlsGetValue (mTlsIndex); ASSERT (NULL != Private); switch (iMsg) { - case WM_PAINT: - Handle = BeginPaint (hwnd, &PaintStruct); - - SetDIBitsToDevice ( - Handle, // Destination Device Context - 0, // Destination X - 0 - 0, // Destination Y - 0 - Private->Width, // Width - Private->Height, // Height - 0, // Source X - 0, // Source Y - 0, // DIB Start Scan Line - Private->Height, // Number of scan lines - Private->VirtualScreenInfo + 1, // Address of array of DIB bits - (BITMAPINFO *) Private->VirtualScreenInfo, // Address of structure with bitmap info - DIB_RGB_COLORS // RGB or palette indexes - ); - - EndPaint (hwnd, &PaintStruct); - return 0; - - // - // F10 and the ALT key do not create a WM_KEYDOWN message, thus this special case - // WM_SYSKEYDOWN is posted when F10 is pressed or - // holds down ALT key and then presses another key. - // - case WM_SYSKEYDOWN: - - Key.ScanCode = 0; - Key.UnicodeChar = CHAR_NULL; - switch (wParam) { - case VK_F10: - Key.ScanCode = SCAN_F10; - Key.UnicodeChar = CHAR_NULL; - GopPrivateAddKey (Private, Key); + case WM_PAINT: + Handle = BeginPaint (hwnd, &PaintStruct); + + SetDIBitsToDevice ( + Handle, // Destination Device Context + 0, // Destination X - 0 + 0, // Destination Y - 0 + Private->Width, // Width + Private->Height, // Height + 0, // Source X + 0, // Source Y + 0, // DIB Start Scan Line + Private->Height, // Number of scan lines + Private->VirtualScreenInfo + 1, // Address of array of DIB bits + (BITMAPINFO *)Private->VirtualScreenInfo, // Address of structure with bitmap info + DIB_RGB_COLORS // RGB or palette indexes + ); + + EndPaint (hwnd, &PaintStruct); return 0; - } // - // If ALT or ALT + modifier key is pressed. + // F10 and the ALT key do not create a WM_KEYDOWN message, thus this special case + // WM_SYSKEYDOWN is posted when F10 is pressed or + // holds down ALT key and then presses another key. // - if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) { - if (Key.ScanCode != 0){ + case WM_SYSKEYDOWN: + + Key.ScanCode = 0; + Key.UnicodeChar = CHAR_NULL; + switch (wParam) { + case VK_F10: + Key.ScanCode = SCAN_F10; + Key.UnicodeChar = CHAR_NULL; + GopPrivateAddKey (Private, Key); + return 0; + } + + // + // If ALT or ALT + modifier key is pressed. + // + if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) { + if (Key.ScanCode != 0) { + // + // If ALT is pressed with other ScanCode. + // Always revers the left Alt for simple. + // + Private->LeftAlt = TRUE; + } + + GopPrivateAddKey (Private, Key); // - // If ALT is pressed with other ScanCode. - // Always revers the left Alt for simple. + // When Alt is released there is no windoes message, so + // clean it after using it. // - Private->LeftAlt = TRUE; + Private->RightAlt = FALSE; + Private->LeftAlt = FALSE; + return 0; } - GopPrivateAddKey (Private, Key); + + AltIsPress = TRUE; + + case WM_CHAR: // - // When Alt is released there is no windoes message, so - // clean it after using it. + // The ESC key also generate WM_CHAR. // - Private->RightAlt = FALSE; - Private->LeftAlt = FALSE; + if (wParam == 0x1B) { + return 0; + } + + if (AltIsPress == TRUE) { + // + // If AltIsPress is true that means the Alt key is pressed. + // + Private->LeftAlt = TRUE; + } + + for (Index = 0; Index < (lParam & 0xffff); Index++) { + if (wParam != 0) { + Key.UnicodeChar = (CHAR16)wParam; + Key.ScanCode = SCAN_NULL; + GopPrivateAddKey (Private, Key); + } + } + + if (AltIsPress == TRUE) { + // + // When Alt is released there is no windoes message, so + // clean it after using it. + // + Private->LeftAlt = FALSE; + Private->RightAlt = FALSE; + } + return 0; - } - AltIsPress = TRUE; - case WM_CHAR: - // - // The ESC key also generate WM_CHAR. - // - if (wParam == 0x1B) { + case WM_SYSKEYUP: + // + // ALT is pressed with another key released + // + WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE); return 0; - } - if (AltIsPress == TRUE) { + case WM_KEYDOWN: + Key.ScanCode = SCAN_NULL; + Key.UnicodeChar = CHAR_NULL; // - // If AltIsPress is true that means the Alt key is pressed. + // A value key press will cause a WM_KEYDOWN first, then cause a WM_CHAR + // So if there is no modifier key updated, skip the WM_KEYDOWN even. // - Private->LeftAlt = TRUE; - } - for (Index = 0; Index < (lParam & 0xffff); Index++) { - if (wParam != 0) { - Key.UnicodeChar = (CHAR16) wParam; - Key.ScanCode = SCAN_NULL; + if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) { + // + // Support the partial keystroke, add all keydown event into the queue. + // GopPrivateAddKey (Private, Key); } - } - if (AltIsPress == TRUE) { - // - // When Alt is released there is no windoes message, so - // clean it after using it. - // - Private->LeftAlt = FALSE; - Private->RightAlt = FALSE; - } - return 0; - case WM_SYSKEYUP: - // - // ALT is pressed with another key released - // - WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE); - return 0; + return 0; - case WM_KEYDOWN: - Key.ScanCode = SCAN_NULL; - Key.UnicodeChar = CHAR_NULL; - // - // A value key press will cause a WM_KEYDOWN first, then cause a WM_CHAR - // So if there is no modifier key updated, skip the WM_KEYDOWN even. - // - if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) { + case WM_KEYUP: + WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE); + return 0; + + case WM_MOUSEMOVE: + PosX = GET_X_LPARAM (lParam); + PosY = GET_Y_LPARAM (lParam); + + if (Private->PointerPreviousX != PosX) { + Private->PointerState.RelativeMovementX += (PosX - Private->PointerPreviousX); + Private->PointerPreviousX = PosX; + Private->PointerStateChanged = TRUE; + } + + if (Private->PointerPreviousY != PosY) { + Private->PointerState.RelativeMovementY += (PosY - Private->PointerPreviousY); + Private->PointerPreviousY = PosY; + Private->PointerStateChanged = TRUE; + } + + Private->PointerState.RelativeMovementZ = 0; + return 0; + + case WM_LBUTTONDOWN: + Private->PointerState.LeftButton = TRUE; + Private->PointerStateChanged = TRUE; + return 0; + + case WM_LBUTTONUP: + Private->PointerState.LeftButton = FALSE; + Private->PointerStateChanged = TRUE; + return 0; + + case WM_RBUTTONDOWN: + Private->PointerState.RightButton = TRUE; + Private->PointerStateChanged = TRUE; + return 0; + + case WM_RBUTTONUP: + Private->PointerState.RightButton = FALSE; + Private->PointerStateChanged = TRUE; + return 0; + + case WM_CLOSE: // - // Support the partial keystroke, add all keydown event into the queue. + // This close message is issued by user, core is not aware of this, + // so don't release the window display resource, just hide the window. // - GopPrivateAddKey (Private, Key); - } - return 0; - - case WM_KEYUP: - WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE); - return 0; - - case WM_MOUSEMOVE: - PosX = GET_X_LPARAM (lParam); - PosY = GET_Y_LPARAM (lParam); - - if (Private->PointerPreviousX != PosX) { - Private->PointerState.RelativeMovementX += (PosX - Private->PointerPreviousX); - Private->PointerPreviousX = PosX; - Private->PointerStateChanged = TRUE; - } - - if (Private->PointerPreviousY != PosY) { - Private->PointerState.RelativeMovementY += (PosY - Private->PointerPreviousY); - Private->PointerPreviousY = PosY; - Private->PointerStateChanged = TRUE; - } - - Private->PointerState.RelativeMovementZ = 0; - return 0; - - case WM_LBUTTONDOWN: - Private->PointerState.LeftButton = TRUE; - Private->PointerStateChanged = TRUE; - return 0; - - case WM_LBUTTONUP: - Private->PointerState.LeftButton = FALSE; - Private->PointerStateChanged = TRUE; - return 0; - - case WM_RBUTTONDOWN: - Private->PointerState.RightButton = TRUE; - Private->PointerStateChanged = TRUE; - return 0; - - case WM_RBUTTONUP: - Private->PointerState.RightButton = FALSE; - Private->PointerStateChanged = TRUE; - return 0; - - case WM_CLOSE: - // - // This close message is issued by user, core is not aware of this, - // so don't release the window display resource, just hide the window. - // - ShowWindow (Private->WindowHandle, SW_HIDE); - return 0; + ShowWindow (Private->WindowHandle, SW_HIDE); + return 0; - case WM_DESTROY: - DestroyWindow (hwnd); - PostQuitMessage (0); + case WM_DESTROY: + DestroyWindow (hwnd); + PostQuitMessage (0); - HeapFree (GetProcessHeap (), 0, Private->VirtualScreenInfo); + HeapFree (GetProcessHeap (), 0, Private->VirtualScreenInfo); - ExitThread (0); + ExitThread (0); - default: - break; - }; + default: + break; + } return DefWindowProc (hwnd, iMsg, wParam, lParam); } - /** This thread simulates the end of WinMain () application. Each Window needs to process its events. The messages are dispatched to @@ -607,14 +688,14 @@ WinNtGopThreadWindowProc ( DWORD WINAPI WinNtGopThreadWinMain ( - LPVOID lpParameter + LPVOID lpParameter ) { MSG Message; GRAPHICS_PRIVATE_DATA *Private; RECT Rect; - Private = (GRAPHICS_PRIVATE_DATA *) lpParameter; + Private = (GRAPHICS_PRIVATE_DATA *)lpParameter; ASSERT (NULL != Private); // @@ -624,7 +705,7 @@ WinNtGopThreadWinMain ( // TlsSetValue (mTlsIndex, Private); - Private->ThreadId = GetCurrentThreadId (); + Private->ThreadId = GetCurrentThreadId (); Private->WindowsClass.cbSize = sizeof (WNDCLASSEX); Private->WindowsClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; @@ -645,7 +726,6 @@ WinNtGopThreadWinMain ( Private->Width = 100; Private->Height = 100; - // // This call will fail after the first time, but thats O.K. since we only need // WIN_NT_GOP_CLASS_NAME to exist to create the window. @@ -703,7 +783,6 @@ WinNtGopThreadWinMain ( return (DWORD)Message.wParam; } - /** TODO: Add function description @@ -719,11 +798,11 @@ WinNtGopThreadWinMain ( EFI_STATUS EFIAPI WinNtGraphicsWindowOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { - DWORD NewThreadId; - GRAPHICS_PRIVATE_DATA *Private; + DWORD NewThreadId; + GRAPHICS_PRIVATE_DATA *Private; Private = AllocateZeroPool (sizeof (*Private)); @@ -758,7 +837,7 @@ WinNtGraphicsWindowOpen ( NULL, 0, WinNtGopThreadWinMain, - (VOID *) Private, + (VOID *)Private, 0, &NewThreadId ); @@ -770,7 +849,7 @@ WinNtGraphicsWindowOpen ( WaitForSingleObject (Private->ThreadInited, INFINITE); CloseHandle (Private->ThreadInited); - This->Private = Private; + This->Private = Private; This->Interface = &Private->GraphicsWindowIo; return EFI_SUCCESS; @@ -779,10 +858,10 @@ WinNtGraphicsWindowOpen ( EFI_STATUS EFIAPI WinNtGraphicsWindowClose ( - IN EMU_IO_THUNK_PROTOCOL *This -) + IN EMU_IO_THUNK_PROTOCOL *This + ) { - GRAPHICS_PRIVATE_DATA *Private; + GRAPHICS_PRIVATE_DATA *Private; Private = (GRAPHICS_PRIVATE_DATA *)This->Private; @@ -807,16 +886,14 @@ WinNtGraphicsWindowClose ( UnregisterClass ( Private->WindowsClass.lpszClassName, Private->WindowsClass.hInstance - ); + ); } - GopPrivateDestroyQ (Private, &Private->QueueForRead); return EFI_SUCCESS; } - -EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo = { +EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo = { &gEmuGraphicsWindowProtocolGuid, NULL, NULL, diff --git a/EmulatorPkg/Win/Host/WinHost.c b/EmulatorPkg/Win/Host/WinHost.c index ffd1b9944d..93247c5043 100644 --- a/EmulatorPkg/Win/Host/WinHost.c +++ b/EmulatorPkg/Win/Host/WinHost.c @@ -16,26 +16,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "WinHost.h" #ifndef SE_TIME_ZONE_NAME -#define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") +#define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") #endif // // The growth size for array of module handle entries // -#define MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE 0x100 +#define MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE 0x100 // // Module handle entry structure // typedef struct { - CHAR8 *PdbPointer; - VOID *ModHandle; + CHAR8 *PdbPointer; + VOID *ModHandle; } PDB_NAME_TO_MOD_HANDLE; // // An Array to hold the module handles // -PDB_NAME_TO_MOD_HANDLE *mPdbNameModHandleArray = NULL; +PDB_NAME_TO_MOD_HANDLE *mPdbNameModHandleArray = NULL; UINTN mPdbNameModHandleArraySize = 0; // @@ -44,8 +44,8 @@ UINTN mPdbNameModHandleArraySize = 0; // The number of array elements is allocated base on parsing // PcdWinNtFirmwareVolume and the memory is never freed. // -UINTN gFdInfoCount = 0; -NT_FD_INFO *gFdInfo; +UINTN gFdInfoCount = 0; +NT_FD_INFO *gFdInfo; // // Array that supports separate memory ranges. @@ -53,8 +53,8 @@ NT_FD_INFO *gFdInfo; // The number of array elements is allocated base on parsing // PcdWinNtMemorySizeForSecMain value and the memory is never freed. // -UINTN gSystemMemoryCount = 0; -NT_SYSTEM_MEMORY *gSystemMemory; +UINTN gSystemMemoryCount = 0; +NT_SYSTEM_MEMORY *gSystemMemory; /*++ @@ -90,7 +90,7 @@ WinPeiAutoScan ( // // Allocate enough memory space for emulator // - gSystemMemory[Index].Memory = (EFI_PHYSICAL_ADDRESS) (UINTN) VirtualAlloc (NULL, (SIZE_T) (gSystemMemory[Index].Size), MEM_COMMIT, PAGE_EXECUTE_READWRITE); + gSystemMemory[Index].Memory = (EFI_PHYSICAL_ADDRESS)(UINTN)VirtualAlloc (NULL, (SIZE_T)(gSystemMemory[Index].Size), MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (gSystemMemory[Index].Memory == 0) { return EFI_OUT_OF_RESOURCES; } @@ -130,12 +130,11 @@ WinFdAddress ( return EFI_UNSUPPORTED; } - *FdBase = (EFI_PHYSICAL_ADDRESS)(UINTN)gFdInfo[Index].Address; *FdSize = (UINT64)gFdInfo[Index].Size; *FixUp = 0; - if (*FdBase == 0 && *FdSize == 0) { + if ((*FdBase == 0) && (*FdSize == 0)) { return EFI_UNSUPPORTED; } @@ -173,8 +172,7 @@ WinThunk ( return &gEmuThunkProtocol; } - -EMU_THUNK_PPI mSecEmuThunkPpi = { +EMU_THUNK_PPI mSecEmuThunkPpi = { WinPeiAutoScan, WinFdAddress, WinThunk @@ -227,7 +225,7 @@ Returns: **/ BOOLEAN EfiSystemMemoryRange ( - IN VOID *MemoryAddress + IN VOID *MemoryAddress ) { UINTN Index; @@ -236,7 +234,8 @@ EfiSystemMemoryRange ( MemoryBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MemoryAddress; for (Index = 0; Index < gSystemMemoryCount; Index++) { if ((MemoryBase >= gSystemMemory[Index].Memory) && - (MemoryBase < (gSystemMemory[Index].Memory + gSystemMemory[Index].Size)) ) { + (MemoryBase < (gSystemMemory[Index].Memory + gSystemMemory[Index].Size))) + { return TRUE; } } @@ -244,15 +243,15 @@ EfiSystemMemoryRange ( return FALSE; } - EFI_STATUS WinNtOpenFile ( - IN CHAR16 *FileName OPTIONAL, - IN UINT32 MapSize, - IN DWORD CreationDisposition, - IN OUT VOID **BaseAddress, - OUT UINTN *Length + IN CHAR16 *FileName OPTIONAL, + IN UINT32 MapSize, + IN DWORD CreationDisposition, + IN OUT VOID **BaseAddress, + OUT UINTN *Length ) + /*++ Routine Description: @@ -300,6 +299,7 @@ Returns: return EFI_NOT_FOUND; } } + // // Map the open file into a memory range // @@ -314,17 +314,18 @@ Returns: if (NtMapHandle == NULL) { return EFI_DEVICE_ERROR; } + // // Get the virtual address (address in the emulator) of the mapped file // VirtualAddress = MapViewOfFileEx ( - NtMapHandle, - FILE_MAP_EXECUTE | FILE_MAP_ALL_ACCESS, - 0, - 0, - MapSize, - *BaseAddress - ); + NtMapHandle, + FILE_MAP_EXECUTE | FILE_MAP_ALL_ACCESS, + 0, + 0, + MapSize, + *BaseAddress + ); if (VirtualAddress == NULL) { return EFI_DEVICE_ERROR; } @@ -334,11 +335,11 @@ Returns: // Seek to the end of the file to figure out the true file size. // FileSize = SetFilePointer ( - NtFileHandle, - 0, - NULL, - FILE_END - ); + NtFileHandle, + 0, + NULL, + FILE_END + ); if (FileSize == -1) { return EFI_DEVICE_ERROR; } @@ -356,10 +357,11 @@ Returns: INTN EFIAPI main ( - IN INT Argc, - IN CHAR8 **Argv, - IN CHAR8 **Envp + IN INT Argc, + IN CHAR8 **Argv, + IN CHAR8 **Envp ) + /*++ Routine Description: @@ -376,37 +378,37 @@ Returns: --*/ { - EFI_STATUS Status; - HANDLE Token; - TOKEN_PRIVILEGES TokenPrivileges; - VOID *TemporaryRam; - UINT32 TemporaryRamSize; - VOID *EmuMagicPage; - UINTN Index; - UINTN Index1; - CHAR16 *FileName; - CHAR16 *FileNamePtr; - BOOLEAN Done; - EFI_PEI_FILE_HANDLE FileHandle; - VOID *SecFile; - CHAR16 *MemorySizeStr; - CHAR16 *FirmwareVolumesStr; - UINTN ProcessAffinityMask; - UINTN SystemAffinityMask; - INT32 LowBit; + EFI_STATUS Status; + HANDLE Token; + TOKEN_PRIVILEGES TokenPrivileges; + VOID *TemporaryRam; + UINT32 TemporaryRamSize; + VOID *EmuMagicPage; + UINTN Index; + UINTN Index1; + CHAR16 *FileName; + CHAR16 *FileNamePtr; + BOOLEAN Done; + EFI_PEI_FILE_HANDLE FileHandle; + VOID *SecFile; + CHAR16 *MemorySizeStr; + CHAR16 *FirmwareVolumesStr; + UINTN ProcessAffinityMask; + UINTN SystemAffinityMask; + INT32 LowBit; // // Enable the privilege so that RTC driver can successfully run SetTime() // - OpenProcessToken (GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &Token); - if (LookupPrivilegeValue(NULL, SE_TIME_ZONE_NAME, &TokenPrivileges.Privileges[0].Luid)) { - TokenPrivileges.PrivilegeCount = 1; + OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &Token); + if (LookupPrivilegeValue (NULL, SE_TIME_ZONE_NAME, &TokenPrivileges.Privileges[0].Luid)) { + TokenPrivileges.PrivilegeCount = 1; TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - AdjustTokenPrivileges(Token, FALSE, &TokenPrivileges, 0, (PTOKEN_PRIVILEGES) NULL, 0); + AdjustTokenPrivileges (Token, FALSE, &TokenPrivileges, 0, (PTOKEN_PRIVILEGES)NULL, 0); } - MemorySizeStr = (CHAR16 *) PcdGetPtr (PcdEmuMemorySize); - FirmwareVolumesStr = (CHAR16 *) PcdGetPtr (PcdEmuFirmwareVolume); + MemorySizeStr = (CHAR16 *)PcdGetPtr (PcdEmuMemorySize); + FirmwareVolumesStr = (CHAR16 *)PcdGetPtr (PcdEmuFirmwareVolume); SecPrint ("\n\rEDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/\n\r"); @@ -448,8 +450,8 @@ Returns: // // Allocate space for gSystemMemory Array // - gSystemMemoryCount = CountSeparatorsInString (MemorySizeStr, '!') + 1; - gSystemMemory = calloc (gSystemMemoryCount, sizeof (NT_SYSTEM_MEMORY)); + gSystemMemoryCount = CountSeparatorsInString (MemorySizeStr, '!') + 1; + gSystemMemory = calloc (gSystemMemoryCount, sizeof (NT_SYSTEM_MEMORY)); if (gSystemMemory == NULL) { SecPrint ("ERROR : Can not allocate memory for %S. Exiting.\n\r", MemorySizeStr); exit (1); @@ -458,12 +460,13 @@ Returns: // // Allocate space for gSystemMemory Array // - gFdInfoCount = CountSeparatorsInString (FirmwareVolumesStr, '!') + 1; - gFdInfo = calloc (gFdInfoCount, sizeof (NT_FD_INFO)); + gFdInfoCount = CountSeparatorsInString (FirmwareVolumesStr, '!') + 1; + gFdInfo = calloc (gFdInfoCount, sizeof (NT_FD_INFO)); if (gFdInfo == NULL) { SecPrint ("ERROR : Can not allocate memory for %S. Exiting.\n\r", FirmwareVolumesStr); exit (1); } + // // Setup Boot Mode. // @@ -475,14 +478,16 @@ Returns: // Set TemporaryRam to zero so WinNtOpenFile will allocate a new mapping // TemporaryRamSize = TEMPORARY_RAM_SIZE; - TemporaryRam = VirtualAlloc (NULL, (SIZE_T) (TemporaryRamSize), MEM_COMMIT, PAGE_EXECUTE_READWRITE); + TemporaryRam = VirtualAlloc (NULL, (SIZE_T)(TemporaryRamSize), MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (TemporaryRam == NULL) { SecPrint ("ERROR : Can not allocate enough space for SecStack\n\r"); exit (1); } + SetMem32 (TemporaryRam, TemporaryRamSize, PcdGet32 (PcdInitValueInTempStack)); - SecPrint (" OS Emulator passing in %u KB of temp RAM at 0x%08lx to SEC\n\r", + SecPrint ( + " OS Emulator passing in %u KB of temp RAM at 0x%08lx to SEC\n\r", TemporaryRamSize / SIZE_1KB, TemporaryRam ); @@ -497,12 +502,12 @@ Returns: if (EmuMagicPage != NULL) { UINT64 Size; Status = WinNtOpenFile ( - NULL, - SIZE_4KB, - 0, - &EmuMagicPage, - &Size - ); + NULL, + SIZE_4KB, + 0, + &EmuMagicPage, + &Size + ); if (EFI_ERROR (Status)) { SecPrint ("ERROR : Could not allocate PeiServicesTablePage @ %p\n\r", EmuMagicPage); return EFI_DEVICE_ERROR; @@ -521,25 +526,26 @@ Returns: for (Done = FALSE, Index = 0, SecFile = NULL; !Done; Index++) { FileName = FileNamePtr; - for (Index1 = 0; (FileNamePtr[Index1] != '!') && (FileNamePtr[Index1] != 0); Index1++) - ; + for (Index1 = 0; (FileNamePtr[Index1] != '!') && (FileNamePtr[Index1] != 0); Index1++) { + } + if (FileNamePtr[Index1] == 0) { Done = TRUE; } else { - FileNamePtr[Index1] = '\0'; - FileNamePtr = &FileNamePtr[Index1 + 1]; + FileNamePtr[Index1] = '\0'; + FileNamePtr = &FileNamePtr[Index1 + 1]; } // // Open the FD and remember where it got mapped into our processes address space // Status = WinNtOpenFile ( - FileName, - 0, - OPEN_EXISTING, - &gFdInfo[Index].Address, - &gFdInfo[Index].Size - ); + FileName, + 0, + OPEN_EXISTING, + &gFdInfo[Index].Address, + &gFdInfo[Index].Size + ); if (EFI_ERROR (Status)) { SecPrint ("ERROR : Can not open Firmware Device File %S (0x%X). Exiting.\n\r", FileName, Status); exit (1); @@ -553,11 +559,11 @@ Returns: // Load the first one we find. // FileHandle = NULL; - Status = PeiServicesFfsFindNextFile ( - EFI_FV_FILETYPE_SECURITY_CORE, - (EFI_PEI_FV_HANDLE)gFdInfo[Index].Address, - &FileHandle - ); + Status = PeiServicesFfsFindNextFile ( + EFI_FV_FILETYPE_SECURITY_CORE, + (EFI_PEI_FV_HANDLE)gFdInfo[Index].Address, + &FileHandle + ); if (!EFI_ERROR (Status)) { Status = PeiServicesFfsFindSectionData (EFI_SECTION_PE32, FileHandle, &SecFile); if (!EFI_ERROR (Status)) { @@ -568,6 +574,7 @@ Returns: SecPrint ("\n\r"); } + // // Calculate memory regions and store the information in the gSystemMemory // global for later use. The autosizing code will use this data to @@ -582,8 +589,9 @@ Returns: // // Find the next region // - for (Index1 = 0; MemorySizeStr[Index1] != '!' && MemorySizeStr[Index1] != 0; Index1++) - ; + for (Index1 = 0; MemorySizeStr[Index1] != '!' && MemorySizeStr[Index1] != 0; Index1++) { + } + if (MemorySizeStr[Index1] == 0) { Done = TRUE; } @@ -608,12 +616,13 @@ Returns: VOID SecLoadSecCore ( - IN UINTN TemporaryRam, - IN UINTN TemporaryRamSize, - IN VOID *BootFirmwareVolumeBase, - IN UINTN BootFirmwareVolumeSize, - IN VOID *SecCorePe32File + IN UINTN TemporaryRam, + IN UINTN TemporaryRamSize, + IN VOID *BootFirmwareVolumeBase, + IN UINTN BootFirmwareVolumeSize, + IN VOID *SecCorePe32File ) + /*++ Routine Description: @@ -630,11 +639,11 @@ Returns: --*/ { - EFI_STATUS Status; - VOID *TopOfStack; - VOID *SecCoreEntryPoint; - EFI_SEC_PEI_HAND_OFF *SecCoreData; - UINTN SecStackSize; + EFI_STATUS Status; + VOID *TopOfStack; + VOID *SecCoreEntryPoint; + EFI_SEC_PEI_HAND_OFF *SecCoreData; + UINTN SecStackSize; // // Compute Top Of Memory for Stack and PEI Core Allocations @@ -650,37 +659,37 @@ Returns: // | Stack | // |-----------| <---- TemporaryRamBase // - TopOfStack = (VOID *)(TemporaryRam + SecStackSize); + TopOfStack = (VOID *)(TemporaryRam + SecStackSize); // // Reservet space for storing PeiCore's parament in stack. // - TopOfStack = (VOID *)((UINTN)TopOfStack - sizeof (EFI_SEC_PEI_HAND_OFF) - CPU_STACK_ALIGNMENT); - TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); + TopOfStack = (VOID *)((UINTN)TopOfStack - sizeof (EFI_SEC_PEI_HAND_OFF) - CPU_STACK_ALIGNMENT); + TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); // // Bind this information into the SEC hand-off state // - SecCoreData = (EFI_SEC_PEI_HAND_OFF*)(UINTN)TopOfStack; + SecCoreData = (EFI_SEC_PEI_HAND_OFF *)(UINTN)TopOfStack; SecCoreData->DataSize = sizeof (EFI_SEC_PEI_HAND_OFF); SecCoreData->BootFirmwareVolumeBase = BootFirmwareVolumeBase; SecCoreData->BootFirmwareVolumeSize = BootFirmwareVolumeSize; - SecCoreData->TemporaryRamBase = (VOID*)TemporaryRam; + SecCoreData->TemporaryRamBase = (VOID *)TemporaryRam; SecCoreData->TemporaryRamSize = TemporaryRamSize; SecCoreData->StackBase = SecCoreData->TemporaryRamBase; SecCoreData->StackSize = SecStackSize; - SecCoreData->PeiTemporaryRamBase = (VOID*) ((UINTN) SecCoreData->TemporaryRamBase + SecStackSize); + SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->TemporaryRamBase + SecStackSize); SecCoreData->PeiTemporaryRamSize = TemporaryRamSize - SecStackSize; // // Load the PEI Core from a Firmware Volume // Status = SecPeCoffGetEntryPoint ( - SecCorePe32File, - &SecCoreEntryPoint - ); + SecCorePe32File, + &SecCoreEntryPoint + ); if (EFI_ERROR (Status)) { - return ; + return; } // @@ -695,7 +704,7 @@ Returns: // // If we get here, then the SEC Core returned. This is an error // - return ; + return; } RETURN_STATUS @@ -705,26 +714,28 @@ SecPeCoffGetEntryPoint ( IN OUT VOID **EntryPoint ) { - EFI_STATUS Status; - PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; + EFI_STATUS Status; + PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; ZeroMem (&ImageContext, sizeof (ImageContext)); - ImageContext.Handle = Pe32Data; + ImageContext.Handle = Pe32Data; - ImageContext.ImageRead = (PE_COFF_LOADER_READ_FILE) SecImageRead; + ImageContext.ImageRead = (PE_COFF_LOADER_READ_FILE)SecImageRead; - Status = PeCoffLoaderGetImageInfo (&ImageContext); + Status = PeCoffLoaderGetImageInfo (&ImageContext); if (EFI_ERROR (Status)) { return Status; } + // // Allocate space in NT (not emulator) memory with ReadWrite and Execute attribute. // Extra space is for alignment // - ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) VirtualAlloc (NULL, (SIZE_T) (ImageContext.ImageSize + (ImageContext.SectionAlignment * 2)), MEM_COMMIT, PAGE_EXECUTE_READWRITE); + ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)VirtualAlloc (NULL, (SIZE_T)(ImageContext.ImageSize + (ImageContext.SectionAlignment * 2)), MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (ImageContext.ImageAddress == 0) { return EFI_OUT_OF_RESOURCES; } + // // Align buffer on section boundary // @@ -741,7 +752,7 @@ SecPeCoffGetEntryPoint ( return Status; } - *EntryPoint = (VOID *)(UINTN)ImageContext.EntryPoint; + *EntryPoint = (VOID *)(UINTN)ImageContext.EntryPoint; return EFI_SUCCESS; } @@ -749,11 +760,12 @@ SecPeCoffGetEntryPoint ( EFI_STATUS EFIAPI SecImageRead ( - IN VOID *FileHandle, - IN UINTN FileOffset, - IN OUT UINTN *ReadSize, - OUT VOID *Buffer + IN VOID *FileHandle, + IN UINTN FileOffset, + IN OUT UINTN *ReadSize, + OUT VOID *Buffer ) + /*++ Routine Description: @@ -770,13 +782,13 @@ Returns: --*/ { - CHAR8 *Destination8; - CHAR8 *Source8; - UINTN Length; + CHAR8 *Destination8; + CHAR8 *Source8; + UINTN Length; - Destination8 = Buffer; - Source8 = (CHAR8 *) ((UINTN) FileHandle + FileOffset); - Length = *ReadSize; + Destination8 = Buffer; + Source8 = (CHAR8 *)((UINTN)FileHandle + FileOffset); + Length = *ReadSize; while (Length--) { *(Destination8++) = *(Source8++); } @@ -786,9 +798,10 @@ Returns: CHAR16 * AsciiToUnicode ( - IN CHAR8 *Ascii, - IN UINTN *StrLen OPTIONAL + IN CHAR8 *Ascii, + IN UINTN *StrLen OPTIONAL ) + /*++ Routine Description: @@ -810,15 +823,16 @@ Returns: // // Allocate a buffer for unicode string // - for (Index = 0; Ascii[Index] != '\0'; Index++) - ; + for (Index = 0; Ascii[Index] != '\0'; Index++) { + } + Unicode = malloc ((Index + 1) * sizeof (CHAR16)); if (Unicode == NULL) { return NULL; } for (Index = 0; Ascii[Index] != '\0'; Index++) { - Unicode[Index] = (CHAR16) Ascii[Index]; + Unicode[Index] = (CHAR16)Ascii[Index]; } Unicode[Index] = '\0'; @@ -832,9 +846,10 @@ Returns: UINTN CountSeparatorsInString ( - IN CONST CHAR16 *String, - IN CHAR16 Separator + IN CONST CHAR16 *String, + IN CHAR16 Separator ) + /*++ Routine Description: @@ -849,7 +864,7 @@ Returns: --*/ { - UINTN Count; + UINTN Count; for (Count = 0; *String != '\0'; String++) { if (*String == Separator) { @@ -871,8 +886,8 @@ Returns: --*/ EFI_STATUS AddModHandle ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext, - IN VOID *ModHandle + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext, + IN VOID *ModHandle ) { @@ -888,7 +903,7 @@ AddModHandle ( // Array = mPdbNameModHandleArray; for (Index = 0; Index < mPdbNameModHandleArraySize; Index++, Array++) { - if (Array->PdbPointer != NULL && Array->ModHandle == ModHandle) { + if ((Array->PdbPointer != NULL) && (Array->ModHandle == ModHandle)) { return EFI_ALREADY_STARTED; } } @@ -899,9 +914,9 @@ AddModHandle ( // // Make a copy of the stirng and store the ModHandle // - Handle = GetProcessHeap (); - Size = AsciiStrLen (ImageContext->PdbPointer) + 1; - Array->PdbPointer = HeapAlloc ( Handle, HEAP_ZERO_MEMORY, Size); + Handle = GetProcessHeap (); + Size = AsciiStrLen (ImageContext->PdbPointer) + 1; + Array->PdbPointer = HeapAlloc (Handle, HEAP_ZERO_MEMORY, Size); ASSERT (Array->PdbPointer != NULL); AsciiStrCpyS (Array->PdbPointer, Size, ImageContext->PdbPointer); @@ -914,17 +929,18 @@ AddModHandle ( // No free space in mPdbNameModHandleArray so grow it by // MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE entires. // - PreviousSize = mPdbNameModHandleArraySize * sizeof (PDB_NAME_TO_MOD_HANDLE); + PreviousSize = mPdbNameModHandleArraySize * sizeof (PDB_NAME_TO_MOD_HANDLE); mPdbNameModHandleArraySize += MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE; // // re-allocate a new buffer and copy the old values to the new locaiton. // - TempArray = HeapAlloc (GetProcessHeap (), - HEAP_ZERO_MEMORY, - mPdbNameModHandleArraySize * sizeof (PDB_NAME_TO_MOD_HANDLE) - ); + TempArray = HeapAlloc ( + GetProcessHeap (), + HEAP_ZERO_MEMORY, + mPdbNameModHandleArraySize * sizeof (PDB_NAME_TO_MOD_HANDLE) + ); - CopyMem ((VOID *) (UINTN) TempArray, (VOID *) (UINTN)mPdbNameModHandleArray, PreviousSize); + CopyMem ((VOID *)(UINTN)TempArray, (VOID *)(UINTN)mPdbNameModHandleArray, PreviousSize); HeapFree (GetProcessHeap (), 0, mPdbNameModHandleArray); @@ -947,7 +963,7 @@ AddModHandle ( **/ VOID * RemoveModHandle ( - IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { UINTN Index; @@ -962,7 +978,7 @@ RemoveModHandle ( Array = mPdbNameModHandleArray; for (Index = 0; Index < mPdbNameModHandleArraySize; Index++, Array++) { - if ((Array->PdbPointer != NULL) && (AsciiStrCmp(Array->PdbPointer, ImageContext->PdbPointer) == 0)) { + if ((Array->PdbPointer != NULL) && (AsciiStrCmp (Array->PdbPointer, ImageContext->PdbPointer) == 0)) { // // If you find a match return it and delete the entry // @@ -978,14 +994,14 @@ RemoveModHandle ( VOID EFIAPI PeCoffLoaderRelocateImageExtraAction ( - IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { - EFI_STATUS Status; - VOID *DllEntryPoint; - CHAR16 *DllFileName; - HMODULE Library; - UINTN Index; + EFI_STATUS Status; + VOID *DllEntryPoint; + CHAR16 *DllFileName; + HMODULE Library; + UINTN Index; ASSERT (ImageContext != NULL); // @@ -1003,7 +1019,8 @@ PeCoffLoaderRelocateImageExtraAction ( // Load the DLL if it's not an EBC image. // if ((ImageContext->PdbPointer != NULL) && - (ImageContext->Machine != EFI_IMAGE_MACHINE_EBC)) { + (ImageContext->Machine != EFI_IMAGE_MACHINE_EBC)) + { // // Convert filename from ASCII to Unicode // @@ -1012,7 +1029,7 @@ PeCoffLoaderRelocateImageExtraAction ( // // Check that we have a valid filename // - if (Index < 5 || DllFileName[Index - 4] != '.') { + if ((Index < 5) || (DllFileName[Index - 4] != '.')) { free (DllFileName); // @@ -1022,12 +1039,13 @@ PeCoffLoaderRelocateImageExtraAction ( // return; } + // // Replace .PDB with .DLL on the filename // - DllFileName[Index - 3] = 'D'; - DllFileName[Index - 2] = 'L'; - DllFileName[Index - 1] = 'L'; + DllFileName[Index - 3] = 'D'; + DllFileName[Index - 2] = 'L'; + DllFileName[Index - 1] = 'L'; // // Load the .DLL file into the user process's address space for source @@ -1043,8 +1061,7 @@ PeCoffLoaderRelocateImageExtraAction ( // checking as the we can point to the PE32 image loaded by Tiano. This // step is only needed for source level debugging // - DllEntryPoint = (VOID *) (UINTN) GetProcAddress (Library, "InitializeDriver"); - + DllEntryPoint = (VOID *)(UINTN)GetProcAddress (Library, "InitializeDriver"); } if ((Library != NULL) && (DllEntryPoint != NULL)) { @@ -1059,7 +1076,7 @@ PeCoffLoaderRelocateImageExtraAction ( // // This DLL is not already loaded, so source level debugging is supported. // - ImageContext->EntryPoint = (EFI_PHYSICAL_ADDRESS) (UINTN) DllEntryPoint; + ImageContext->EntryPoint = (EFI_PHYSICAL_ADDRESS)(UINTN)DllEntryPoint; SecPrint ("LoadLibraryEx (\n\r %S,\n\r NULL, DONT_RESOLVE_DLL_REFERENCES)\n\r", DllFileName); } } else { @@ -1074,7 +1091,7 @@ VOID EFIAPI PeCoffLoaderUnloadImageExtraAction ( IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext -) + ) { VOID *ModHandle; diff --git a/EmulatorPkg/Win/Host/WinHost.h b/EmulatorPkg/Win/Host/WinHost.h index b36fea254e..49d42d1ad8 100644 --- a/EmulatorPkg/Win/Host/WinHost.h +++ b/EmulatorPkg/Win/Host/WinHost.h @@ -12,6 +12,7 @@ Abstract: Include file for Windows Host **/ + #ifndef _HOST_H_ #define _HOST_H_ @@ -45,17 +46,16 @@ Abstract: #include #include - -#define TEMPORARY_RAM_SIZE 0x20000 +#define TEMPORARY_RAM_SIZE 0x20000 typedef struct { - VOID *Address; - UINTN Size; + VOID *Address; + UINTN Size; } NT_FD_INFO; typedef struct { - EFI_PHYSICAL_ADDRESS Memory; - UINT64 Size; + EFI_PHYSICAL_ADDRESS Memory; + UINT64 Size; } NT_SYSTEM_MEMORY; RETURN_STATUS @@ -63,16 +63,17 @@ EFIAPI SecPeCoffGetEntryPoint ( IN VOID *Pe32Data, IN OUT VOID **EntryPoint -); + ); VOID SecLoadSecCore ( - IN UINTN TemporaryRam, - IN UINTN TemporaryRamSize, - IN VOID *BootFirmwareVolumeBase, - IN UINTN BootFirmwareVolumeSize, - IN VOID *SecCorePe32File -) + IN UINTN TemporaryRam, + IN UINTN TemporaryRamSize, + IN VOID *BootFirmwareVolumeBase, + IN UINTN BootFirmwareVolumeSize, + IN VOID *SecCorePe32File + ) + /*++ Routine Description: @@ -97,6 +98,7 @@ SecWinNtFdAddress ( IN OUT EFI_PHYSICAL_ADDRESS *FdBase, IN OUT UINT64 *FdSize ) + /*++ Routine Description: @@ -116,15 +118,15 @@ Returns: --*/ ; - EFI_STATUS EFIAPI SecImageRead ( - IN VOID *FileHandle, - IN UINTN FileOffset, - IN OUT UINTN *ReadSize, - OUT VOID *Buffer + IN VOID *FileHandle, + IN UINTN FileOffset, + IN OUT UINTN *ReadSize, + OUT VOID *Buffer ) + /*++ Routine Description: @@ -147,9 +149,10 @@ Returns: CHAR16 * AsciiToUnicode ( - IN CHAR8 *Ascii, - IN UINTN *StrLen OPTIONAL + IN CHAR8 *Ascii, + IN UINTN *StrLen OPTIONAL ) + /*++ Routine Description: @@ -170,9 +173,10 @@ Returns: UINTN CountSeparatorsInString ( - IN CONST CHAR16 *String, - IN CHAR16 Separator + IN CONST CHAR16 *String, + IN CHAR16 Separator ) + /*++ Routine Description: @@ -193,16 +197,18 @@ Returns: BOOLEAN EfiSystemMemoryRange ( - IN VOID *MemoryAddress + IN VOID *MemoryAddress ); + VOID SecInitializeThunk ( VOID -); -extern EMU_THUNK_PROTOCOL gEmuThunkProtocol; -extern EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo; -extern EMU_IO_THUNK_PROTOCOL mWinNtFileSystemThunkIo; -extern EMU_IO_THUNK_PROTOCOL mWinNtBlockIoThunkIo; -extern EMU_IO_THUNK_PROTOCOL mWinNtSnpThunkIo; + ); + +extern EMU_THUNK_PROTOCOL gEmuThunkProtocol; +extern EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo; +extern EMU_IO_THUNK_PROTOCOL mWinNtFileSystemThunkIo; +extern EMU_IO_THUNK_PROTOCOL mWinNtBlockIoThunkIo; +extern EMU_IO_THUNK_PROTOCOL mWinNtSnpThunkIo; #endif diff --git a/EmulatorPkg/Win/Host/WinInclude.h b/EmulatorPkg/Win/Host/WinInclude.h index 8a9ae7d746..c2b6cfa3d6 100644 --- a/EmulatorPkg/Win/Host/WinInclude.h +++ b/EmulatorPkg/Win/Host/WinInclude.h @@ -19,13 +19,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #pragma warning(disable : 4028) #pragma warning(disable : 4133) -#define GUID _WINNT_DUP_GUID_____ +#define GUID _WINNT_DUP_GUID_____ #define _LIST_ENTRY _WINNT_DUP_LIST_ENTRY_FORWARD #define LIST_ENTRY _WINNT_DUP_LIST_ENTRY #if defined (MDE_CPU_IA32) && (_MSC_VER < 1800) -#define InterlockedIncrement _WINNT_DUP_InterlockedIncrement -#define InterlockedDecrement _WINNT_DUP_InterlockedDecrement -#define InterlockedCompareExchange64 _WINNT_DUP_InterlockedCompareExchange64 +#define InterlockedIncrement _WINNT_DUP_InterlockedIncrement +#define InterlockedDecrement _WINNT_DUP_InterlockedDecrement +#define InterlockedCompareExchange64 _WINNT_DUP_InterlockedCompareExchange64 #endif #undef UNALIGNED #undef CONST @@ -36,7 +36,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // It should be removed after the root cause why // size_t is undefined when go into the line below is found. #if defined (MDE_CPU_IA32) -typedef UINT32 size_t ; +typedef UINT32 size_t; #endif #include "windows.h" @@ -51,7 +51,7 @@ typedef UINT32 size_t ; #undef InterlockedCompareExchangePointer #undef CreateEventEx -#define VOID void +#define VOID void // // Prevent collisions with Windows API name macros that deal with Unicode/Not issues @@ -66,5 +66,4 @@ typedef UINT32 size_t ; #pragma warning(default : 4115) #pragma warning(default : 4201) - #endif diff --git a/EmulatorPkg/Win/Host/WinMemoryAllocationLib.c b/EmulatorPkg/Win/Host/WinMemoryAllocationLib.c index a29ebddd14..4d972d2c2e 100644 --- a/EmulatorPkg/Win/Host/WinMemoryAllocationLib.c +++ b/EmulatorPkg/Win/Host/WinMemoryAllocationLib.c @@ -30,10 +30,9 @@ AllocatePool ( IN UINTN AllocationSize ) { - return (VOID*) malloc (AllocationSize); + return (VOID *)malloc (AllocationSize); } - /** Allocates and zeros a buffer of type EfiBootServicesData. @@ -53,7 +52,7 @@ AllocateZeroPool ( IN UINTN AllocationSize ) { - VOID *Buffer; + VOID *Buffer; Buffer = AllocatePool (AllocationSize); if (Buffer == NULL) { @@ -65,7 +64,6 @@ AllocateZeroPool ( return Buffer; } - /** Reallocates a buffer of type EfiBootServicesData. @@ -95,7 +93,7 @@ ReallocatePool ( IN VOID *OldBuffer OPTIONAL ) { - VOID *NewBuffer; + VOID *NewBuffer; NewBuffer = AllocatePool (NewSize); if (NewBuffer == NULL) { @@ -143,10 +141,10 @@ AllocateCopyPool ( if (Memory != NULL) { Memory = CopyMem (Memory, Buffer, AllocationSize); } + return Memory; } - /** Frees a buffer that was previously allocated with one of the pool allocation functions in the Memory Allocation Library. @@ -164,9 +162,8 @@ AllocateCopyPool ( VOID EFIAPI FreePool ( - IN VOID *Buffer + IN VOID *Buffer ) { - free ((void *) Buffer); + free ((void *)Buffer); } - diff --git a/EmulatorPkg/Win/Host/WinPacketFilter.c b/EmulatorPkg/Win/Host/WinPacketFilter.c index 0b751f97e3..21859897c8 100644 --- a/EmulatorPkg/Win/Host/WinPacketFilter.c +++ b/EmulatorPkg/Win/Host/WinPacketFilter.c @@ -20,16 +20,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #pragma pack(1) typedef struct _NT_NET_INTERFACE_INFO { - UINT32 InterfaceIndex; - EFI_MAC_ADDRESS MacAddr; + UINT32 InterfaceIndex; + EFI_MAC_ADDRESS MacAddr; } NT_NET_INTERFACE_INFO; #pragma pack() -#define NET_ETHER_HEADER_SIZE 14 -#define MAX_INTERFACE_INFO_NUMBER 16 -#define SNP_MAX_TX_BUFFER_NUM 65536 -#define SNP_TX_BUFFER_INCREASEMENT 32 -#define DEFAULT_SELECTED_NIC_INDEX 0 +#define NET_ETHER_HEADER_SIZE 14 +#define MAX_INTERFACE_INFO_NUMBER 16 +#define SNP_MAX_TX_BUFFER_NUM 65536 +#define SNP_TX_BUFFER_INCREASEMENT 32 +#define DEFAULT_SELECTED_NIC_INDEX 0 // // Functions in Net Library @@ -37,8 +37,8 @@ typedef struct _NT_NET_INTERFACE_INFO { typedef INT32 (*NT_NET_INITIALIZE) ( - IN OUT UINT32 *InterfaceCount, - IN OUT NT_NET_INTERFACE_INFO * InterfaceInfoBuffer + IN OUT UINT32 *InterfaceCount, + IN OUT NT_NET_INTERFACE_INFO *InterfaceInfoBuffer ); typedef @@ -50,85 +50,84 @@ INT32 typedef INT32 (*NT_NET_SET_RECEIVE_FILTER) ( - IN UINT32 Index, - IN UINT32 EnableFilter, - IN UINT32 MCastFilterCnt, - IN EFI_MAC_ADDRESS * MCastFilter + IN UINT32 Index, + IN UINT32 EnableFilter, + IN UINT32 MCastFilterCnt, + IN EFI_MAC_ADDRESS *MCastFilter ); typedef INT32 (*NT_NET_RECEIVE) ( - IN UINT32 Index, - IN OUT UINT32 *BufferSize, - OUT VOID *Buffer + IN UINT32 Index, + IN OUT UINT32 *BufferSize, + OUT VOID *Buffer ); typedef INT32 (*NT_NET_TRANSMIT) ( - IN UINT32 Index, - IN UINT32 HeaderSize, - IN UINT32 BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS * SrcAddr, - IN EFI_MAC_ADDRESS * DestAddr, - IN UINT16 *Protocol + IN UINT32 Index, + IN UINT32 HeaderSize, + IN UINT32 BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr, + IN EFI_MAC_ADDRESS *DestAddr, + IN UINT16 *Protocol ); typedef struct _NT_NET_UTILITY_TABLE { - NT_NET_INITIALIZE Initialize; - NT_NET_FINALIZE Finalize; - NT_NET_SET_RECEIVE_FILTER SetReceiveFilter; - NT_NET_RECEIVE Receive; - NT_NET_TRANSMIT Transmit; + NT_NET_INITIALIZE Initialize; + NT_NET_FINALIZE Finalize; + NT_NET_SET_RECEIVE_FILTER SetReceiveFilter; + NT_NET_RECEIVE Receive; + NT_NET_TRANSMIT Transmit; } NT_NET_UTILITY_TABLE; // // Instance data for each fake SNP instance // -#define WIN_NT_INSTANCE_SIGNATURE SIGNATURE_32 ('N', 'T', 'I', 'S') +#define WIN_NT_INSTANCE_SIGNATURE SIGNATURE_32 ('N', 'T', 'I', 'S') typedef struct { - UINT32 Signature; + UINT32 Signature; // // Array of the recycled transmit buffer address. // - UINT64 *RecycledTxBuf; + UINT64 *RecycledTxBuf; // // Current number of recycled buffer pointers in RecycledTxBuf. // - UINT32 RecycledTxBufCount; + UINT32 RecycledTxBufCount; // // The maximum number of recycled buffer pointers in RecycledTxBuf. // - UINT32 MaxRecycledTxBuf; - EFI_SIMPLE_NETWORK_MODE Mode; - NT_NET_INTERFACE_INFO InterfaceInfo; + UINT32 MaxRecycledTxBuf; + EFI_SIMPLE_NETWORK_MODE Mode; + NT_NET_INTERFACE_INFO InterfaceInfo; } WIN_NT_INSTANCE_DATA; // // Instance data for each SNP private instance // -#define WIN_NT_SIMPLE_NETWORK_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 's', 'n') +#define WIN_NT_SIMPLE_NETWORK_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 's', 'n') typedef struct { - UINTN Signature; - EMU_IO_THUNK_PROTOCOL *Thunk; - EMU_SNP_PROTOCOL EmuSnp; - EFI_SIMPLE_NETWORK_MODE *Mode; - HMODULE NetworkLibraryHandle; - NT_NET_UTILITY_TABLE NtNetUtilityTable; - WIN_NT_INSTANCE_DATA Instance; + UINTN Signature; + EMU_IO_THUNK_PROTOCOL *Thunk; + EMU_SNP_PROTOCOL EmuSnp; + EFI_SIMPLE_NETWORK_MODE *Mode; + HMODULE NetworkLibraryHandle; + NT_NET_UTILITY_TABLE NtNetUtilityTable; + WIN_NT_INSTANCE_DATA Instance; } WIN_NT_SNP_PRIVATE; #define WIN_NT_SNP_PRIVATE_DATA_FROM_THIS(a) \ CR(a, WIN_NT_SNP_PRIVATE, EmuSnp, WIN_NT_SIMPLE_NETWORK_PRIVATE_SIGNATURE) - /** Register storage for SNP Mode. @@ -145,7 +144,7 @@ WinNtSnpCreateMapping ( IN EFI_SIMPLE_NETWORK_MODE *Mode ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -181,7 +180,7 @@ WinNtSnpStart ( IN EMU_SNP_PROTOCOL *This ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -221,7 +220,7 @@ WinNtSnpStop ( IN EMU_SNP_PROTOCOL *This ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -271,12 +270,12 @@ WinNtSnpStop ( **/ EFI_STATUS WinNtSnpInitialize ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -293,7 +292,7 @@ WinNtSnpInitialize ( break; } - Private->Mode->MCastFilterCount = 0; + Private->Mode->MCastFilterCount = 0; Private->Mode->ReceiveFilterSetting = 0; ZeroMem (Private->Mode->MCastFilter, sizeof (Private->Mode->MCastFilter)); @@ -320,11 +319,11 @@ WinNtSnpInitialize ( **/ EFI_STATUS WinNtSnpReset ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -362,7 +361,7 @@ WinNtSnpShutdown ( IN EMU_SNP_PROTOCOL *This ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -382,7 +381,7 @@ WinNtSnpShutdown ( Private->Mode->State = EfiSimpleNetworkStarted; Private->Mode->ReceiveFilterSetting = 0; - Private->Mode->MCastFilterCount = 0; + Private->Mode->MCastFilterCount = 0; ZeroMem (Private->Mode->MCastFilter, sizeof (Private->Mode->MCastFilter)); return EFI_SUCCESS; @@ -414,25 +413,25 @@ WinNtSnpShutdown ( **/ EFI_STATUS WinNtSnpReceiveFilters ( - IN EMU_SNP_PROTOCOL *This, - IN UINT32 Enable, - IN UINT32 Disable, - IN BOOLEAN ResetMCastFilter, - IN UINTN MCastFilterCnt OPTIONAL, - IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINT32 Enable, + IN UINT32 Disable, + IN BOOLEAN ResetMCastFilter, + IN UINTN MCastFilterCnt OPTIONAL, + IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; - INT32 ReturnValue; + WIN_NT_SNP_PRIVATE *Private; + INT32 ReturnValue; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); ReturnValue = Private->NtNetUtilityTable.SetReceiveFilter ( - Private->Instance.InterfaceInfo.InterfaceIndex, - Enable, - (UINT32)MCastFilterCnt, - MCastFilter - ); + Private->Instance.InterfaceInfo.InterfaceIndex, + Enable, + (UINT32)MCastFilterCnt, + MCastFilter + ); if (ReturnValue <= 0) { return EFI_DEVICE_ERROR; @@ -458,12 +457,12 @@ WinNtSnpReceiveFilters ( **/ EFI_STATUS WinNtSnpStationAddress ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *New OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -493,13 +492,13 @@ WinNtSnpStationAddress ( **/ EFI_STATUS WinNtSnpStatistics ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -529,13 +528,13 @@ WinNtSnpStatistics ( **/ EFI_STATUS WinNtSnpMCastIpToMac ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - OUT EFI_MAC_ADDRESS *MAC + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -564,14 +563,14 @@ WinNtSnpMCastIpToMac ( **/ EFI_STATUS WinNtSnpNvData ( - IN EMU_SNP_PROTOCOL *This, - IN BOOLEAN ReadWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EMU_SNP_PROTOCOL *This, + IN BOOLEAN ReadWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -605,21 +604,21 @@ WinNtSnpNvData ( **/ EFI_STATUS WinNtSnpGetStatus ( - IN EMU_SNP_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINT32 *InterruptStatus OPTIONAL, + OUT VOID **TxBuf OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; + WIN_NT_SNP_PRIVATE *Private; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); if (TxBuf != NULL) { if (Private->Instance.RecycledTxBufCount != 0) { - Private->Instance.RecycledTxBufCount --; - *((UINT8 **) TxBuf) = (UINT8 *) (UINTN)Private->Instance.RecycledTxBuf[Private->Instance.RecycledTxBufCount]; + Private->Instance.RecycledTxBufCount--; + *((UINT8 **)TxBuf) = (UINT8 *)(UINTN)Private->Instance.RecycledTxBuf[Private->Instance.RecycledTxBufCount]; } else { - *((UINT8 **) TxBuf) = NULL; + *((UINT8 **)TxBuf) = NULL; } } @@ -665,18 +664,18 @@ WinNtSnpGetStatus ( **/ EFI_STATUS WinNtSnpTransmit ( - IN EMU_SNP_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; - INT32 ReturnValue; - UINT64 *Tmp; + WIN_NT_SNP_PRIVATE *Private; + INT32 ReturnValue; + UINT64 *Tmp; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); @@ -685,14 +684,14 @@ WinNtSnpTransmit ( } ReturnValue = Private->NtNetUtilityTable.Transmit ( - Private->Instance.InterfaceInfo.InterfaceIndex, - (UINT32)HeaderSize, - (UINT32)BufferSize, - Buffer, - SrcAddr, - DestAddr, - Protocol - ); + Private->Instance.InterfaceInfo.InterfaceIndex, + (UINT32)HeaderSize, + (UINT32)BufferSize, + Buffer, + SrcAddr, + DestAddr, + Protocol + ); if (ReturnValue < 0) { return EFI_DEVICE_ERROR; @@ -702,16 +701,17 @@ WinNtSnpTransmit ( } if (Private->Instance.RecycledTxBufCount < Private->Instance.MaxRecycledTxBuf) { - Private->Instance.RecycledTxBuf[Private->Instance.RecycledTxBufCount] = (UINT64) Buffer; - Private->Instance.RecycledTxBufCount ++; + Private->Instance.RecycledTxBuf[Private->Instance.RecycledTxBufCount] = (UINT64)Buffer; + Private->Instance.RecycledTxBufCount++; } else { Tmp = malloc (sizeof (UINT64) * (Private->Instance.MaxRecycledTxBuf + SNP_TX_BUFFER_INCREASEMENT)); if (Tmp == NULL) { return EFI_DEVICE_ERROR; } + CopyMem (Tmp, Private->Instance.RecycledTxBuf, sizeof (UINT64) * Private->Instance.RecycledTxBufCount); free (Private->Instance.RecycledTxBuf); - Private->Instance.RecycledTxBuf = Tmp; + Private->Instance.RecycledTxBuf = Tmp; Private->Instance.MaxRecycledTxBuf += SNP_TX_BUFFER_INCREASEMENT; } } @@ -753,30 +753,30 @@ WinNtSnpTransmit ( **/ EFI_STATUS WinNtSnpReceive ( - IN EMU_SNP_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EMU_SNP_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ) { - WIN_NT_SNP_PRIVATE *Private; - INT32 ReturnValue; - UINTN BufSize; + WIN_NT_SNP_PRIVATE *Private; + INT32 ReturnValue; + UINTN BufSize; Private = WIN_NT_SNP_PRIVATE_DATA_FROM_THIS (This); - BufSize = *BufferSize; + BufSize = *BufferSize; ASSERT (Private->NtNetUtilityTable.Receive != NULL); ReturnValue = Private->NtNetUtilityTable.Receive ( - Private->Instance.InterfaceInfo.InterfaceIndex, - BufferSize, - Buffer - ); + Private->Instance.InterfaceInfo.InterfaceIndex, + BufferSize, + Buffer + ); if (ReturnValue < 0) { if (ReturnValue == -100) { @@ -794,16 +794,16 @@ WinNtSnpReceive ( if (SrcAddr != NULL) { ZeroMem (SrcAddr, sizeof (EFI_MAC_ADDRESS)); - CopyMem (SrcAddr, ((UINT8 *) Buffer) + 6, 6); + CopyMem (SrcAddr, ((UINT8 *)Buffer) + 6, 6); } if (DestAddr != NULL) { ZeroMem (DestAddr, sizeof (EFI_MAC_ADDRESS)); - CopyMem (DestAddr, ((UINT8 *) Buffer), 6); + CopyMem (DestAddr, ((UINT8 *)Buffer), 6); } if (Protocol != NULL) { - *Protocol = NTOHS (*((UINT16 *) (((UINT8 *) Buffer) + 12))); + *Protocol = NTOHS (*((UINT16 *)(((UINT8 *)Buffer) + 12))); } return (*BufferSize <= BufSize) ? EFI_SUCCESS : EFI_BUFFER_TOO_SMALL; @@ -821,27 +821,27 @@ WinNtSnpReceive ( **/ EFI_STATUS WinNtInitializeInstanceData ( - IN OUT WIN_NT_INSTANCE_DATA *Instance, - IN NT_NET_INTERFACE_INFO *NetInfo + IN OUT WIN_NT_INSTANCE_DATA *Instance, + IN NT_NET_INTERFACE_INFO *NetInfo ) { - if (Instance == NULL || NetInfo == NULL) { + if ((Instance == NULL) || (NetInfo == NULL)) { return EFI_INVALID_PARAMETER; } ZeroMem (Instance, sizeof (WIN_NT_INSTANCE_DATA)); - Instance->Signature = WIN_NT_INSTANCE_SIGNATURE; - Instance->RecycledTxBufCount = 0; - Instance->MaxRecycledTxBuf = 32; - Instance->Mode.State = EfiSimpleNetworkInitialized; - Instance->Mode.HwAddressSize = NET_ETHER_ADDR_LEN; - Instance->Mode.MediaHeaderSize = NET_ETHER_HEADER_SIZE; - Instance->Mode.MaxPacketSize = 1500; - Instance->Mode.MaxMCastFilterCount = MAX_MCAST_FILTER_CNT; - Instance->Mode.IfType = NET_IFTYPE_ETHERNET; + Instance->Signature = WIN_NT_INSTANCE_SIGNATURE; + Instance->RecycledTxBufCount = 0; + Instance->MaxRecycledTxBuf = 32; + Instance->Mode.State = EfiSimpleNetworkInitialized; + Instance->Mode.HwAddressSize = NET_ETHER_ADDR_LEN; + Instance->Mode.MediaHeaderSize = NET_ETHER_HEADER_SIZE; + Instance->Mode.MaxPacketSize = 1500; + Instance->Mode.MaxMCastFilterCount = MAX_MCAST_FILTER_CNT; + Instance->Mode.IfType = NET_IFTYPE_ETHERNET; Instance->Mode.MediaPresentSupported = TRUE; - Instance->Mode.MediaPresent = TRUE; + Instance->Mode.MediaPresent = TRUE; // // Allocate the RecycledTxBuf. @@ -856,7 +856,6 @@ WinNtInitializeInstanceData ( // CopyMem (&Instance->InterfaceInfo, NetInfo, sizeof (Instance->InterfaceInfo)); - // // Set broadcast address // @@ -865,8 +864,8 @@ WinNtInitializeInstanceData ( // // Copy Current/PermanentAddress MAC address // - CopyMem (&Instance->Mode.CurrentAddress, &Instance->InterfaceInfo.MacAddr, sizeof(Instance->Mode.CurrentAddress)); - CopyMem (&Instance->Mode.PermanentAddress, &Instance->InterfaceInfo.MacAddr, sizeof(Instance->Mode.PermanentAddress)); + CopyMem (&Instance->Mode.CurrentAddress, &Instance->InterfaceInfo.MacAddr, sizeof (Instance->Mode.CurrentAddress)); + CopyMem (&Instance->Mode.PermanentAddress, &Instance->InterfaceInfo.MacAddr, sizeof (Instance->Mode.PermanentAddress)); // // Since the fake SNP is based on a real NIC, to avoid conflict with the host @@ -892,20 +891,20 @@ WinNtInitializeInstanceData ( **/ EFI_STATUS WintNtInitializeNetUtilityData ( - IN OUT WIN_NT_SNP_PRIVATE *Private, + IN OUT WIN_NT_SNP_PRIVATE *Private, IN UINT8 ActiveInstance ) { - EFI_STATUS Status; - CHAR16 *DllFileNameU; - INT32 ReturnValue; - BOOLEAN NetUtilityLibInitDone; - NT_NET_INTERFACE_INFO NetInterfaceInfoBuffer[MAX_INTERFACE_INFO_NUMBER]; - UINT32 InterfaceCount; - UINT8 ActiveInterfaceIndex; + EFI_STATUS Status; + CHAR16 *DllFileNameU; + INT32 ReturnValue; + BOOLEAN NetUtilityLibInitDone; + NT_NET_INTERFACE_INFO NetInterfaceInfoBuffer[MAX_INTERFACE_INFO_NUMBER]; + UINT32 InterfaceCount; + UINT8 ActiveInterfaceIndex; if (Private == NULL) { - return EFI_INVALID_PARAMETER; + return EFI_INVALID_PARAMETER; } NetUtilityLibInitDone = FALSE; @@ -920,31 +919,31 @@ WintNtInitializeNetUtilityData ( return EFI_NOT_FOUND; } - Private->NtNetUtilityTable.Initialize = (NT_NET_INITIALIZE) GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_INITIALIZE); + Private->NtNetUtilityTable.Initialize = (NT_NET_INITIALIZE)GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_INITIALIZE); if (NULL == Private->NtNetUtilityTable.Initialize) { Status = EFI_NOT_FOUND; goto ErrorReturn; } - Private->NtNetUtilityTable.Finalize = (NT_NET_FINALIZE) GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_FINALIZE); + Private->NtNetUtilityTable.Finalize = (NT_NET_FINALIZE)GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_FINALIZE); if (NULL == Private->NtNetUtilityTable.Finalize) { Status = EFI_NOT_FOUND; goto ErrorReturn; } - Private->NtNetUtilityTable.SetReceiveFilter = (NT_NET_SET_RECEIVE_FILTER) GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_SET_RCV_FILTER); + Private->NtNetUtilityTable.SetReceiveFilter = (NT_NET_SET_RECEIVE_FILTER)GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_SET_RCV_FILTER); if (NULL == Private->NtNetUtilityTable.SetReceiveFilter) { Status = EFI_NOT_FOUND; goto ErrorReturn; } - Private->NtNetUtilityTable.Receive = (NT_NET_RECEIVE) GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_RECEIVE); + Private->NtNetUtilityTable.Receive = (NT_NET_RECEIVE)GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_RECEIVE); if (NULL == Private->NtNetUtilityTable.Receive) { Status = EFI_NOT_FOUND; goto ErrorReturn; } - Private->NtNetUtilityTable.Transmit = (NT_NET_TRANSMIT) GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_TRANSMIT); + Private->NtNetUtilityTable.Transmit = (NT_NET_TRANSMIT)GetProcAddress (Private->NetworkLibraryHandle, NETWORK_LIBRARY_TRANSMIT); if (NULL == Private->NtNetUtilityTable.Transmit) { Status = EFI_NOT_FOUND; goto ErrorReturn; @@ -979,7 +978,7 @@ WintNtInitializeNetUtilityData ( // Status = WinNtInitializeInstanceData (&Private->Instance, &NetInterfaceInfoBuffer[ActiveInterfaceIndex]); if (EFI_ERROR (Status)) { - goto ErrorReturn; + goto ErrorReturn; } return EFI_SUCCESS; @@ -987,7 +986,7 @@ WintNtInitializeNetUtilityData ( ErrorReturn: if (Private->Instance.RecycledTxBuf != NULL) { - free (Private->Instance.RecycledTxBuf); + free (Private->Instance.RecycledTxBuf); } if (NetUtilityLibInitDone) { @@ -1011,7 +1010,7 @@ ErrorReturn: **/ EFI_STATUS WintNtReleaseNetUtilityData ( - IN OUT WIN_NT_SNP_PRIVATE *Private + IN OUT WIN_NT_SNP_PRIVATE *Private ) { if (Private == NULL) { @@ -1019,7 +1018,7 @@ WintNtReleaseNetUtilityData ( } if (Private->Instance.RecycledTxBuf != NULL) { - free (Private->Instance.RecycledTxBuf); + free (Private->Instance.RecycledTxBuf); } if (Private->NtNetUtilityTable.Finalize != NULL) { @@ -1031,7 +1030,7 @@ WintNtReleaseNetUtilityData ( return EFI_SUCCESS; } -EMU_SNP_PROTOCOL mWinNtSnpProtocol = { +EMU_SNP_PROTOCOL mWinNtSnpProtocol = { WinNtSnpCreateMapping, WinNtSnpStart, WinNtSnpStop, @@ -1061,7 +1060,7 @@ EMU_SNP_PROTOCOL mWinNtSnpProtocol = { **/ EFI_STATUS WinNtSnpThunkOpen ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { WIN_NT_SNP_PRIVATE *Private; @@ -1089,7 +1088,7 @@ WinNtSnpThunkOpen ( This->Interface = &Private->EmuSnp; This->Private = Private; - if (This->ConfigString != NULL && This->ConfigString[0] != '\0') { + if ((This->ConfigString != NULL) && (This->ConfigString[0] != '\0')) { HostInterfaceIndex = (UINT8)StrDecimalToUintn (This->ConfigString); } @@ -1108,7 +1107,7 @@ WinNtSnpThunkOpen ( **/ EFI_STATUS WinNtSnpThunkClose ( - IN EMU_IO_THUNK_PROTOCOL *This + IN EMU_IO_THUNK_PROTOCOL *This ) { WIN_NT_SNP_PRIVATE *Private; @@ -1124,7 +1123,7 @@ WinNtSnpThunkClose ( return EFI_SUCCESS; } -EMU_IO_THUNK_PROTOCOL mWinNtSnpThunkIo = { +EMU_IO_THUNK_PROTOCOL mWinNtSnpThunkIo = { &gEmuSnpProtocolGuid, NULL, NULL, diff --git a/EmulatorPkg/Win/Host/WinThunk.c b/EmulatorPkg/Win/Host/WinThunk.c index a77be2a64b..008e5755db 100644 --- a/EmulatorPkg/Win/Host/WinThunk.c +++ b/EmulatorPkg/Win/Host/WinThunk.c @@ -32,33 +32,32 @@ Abstract: UINTN SecWriteStdErr ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - BOOL Success; - DWORD CharCount; + BOOL Success; + DWORD CharCount; CharCount = (DWORD)NumberOfBytes; - Success = WriteFile ( - GetStdHandle (STD_ERROR_HANDLE), - Buffer, - CharCount, - &CharCount, - NULL - ); + Success = WriteFile ( + GetStdHandle (STD_ERROR_HANDLE), + Buffer, + CharCount, + &CharCount, + NULL + ); return Success ? CharCount : 0; } - EFI_STATUS SecConfigStdIn ( VOID ) { - BOOL Success; - DWORD Mode; + BOOL Success; + DWORD Mode; Success = GetConsoleMode (GetStdHandle (STD_INPUT_HANDLE), &Mode); if (Success) { @@ -67,17 +66,17 @@ SecConfigStdIn ( // Mode &= ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT); -#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2) + #if defined (NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2) // // Enable virtual terminal input for Win10 above TH2 // Mode |= ENABLE_VIRTUAL_TERMINAL_INPUT; -#endif + #endif Success = SetConsoleMode (GetStdHandle (STD_INPUT_HANDLE), Mode); } -#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2) + #if defined (NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2) // // Enable terminal mode for Win10 above TH2 // @@ -85,32 +84,33 @@ SecConfigStdIn ( Success = GetConsoleMode (GetStdHandle (STD_OUTPUT_HANDLE), &Mode); if (Success) { Success = SetConsoleMode ( - GetStdHandle (STD_OUTPUT_HANDLE), - Mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN - ); + GetStdHandle (STD_OUTPUT_HANDLE), + Mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN + ); } } -#endif + + #endif return Success ? EFI_SUCCESS : EFI_DEVICE_ERROR; } UINTN SecWriteStdOut ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - BOOL Success; - DWORD CharCount; + BOOL Success; + DWORD CharCount; CharCount = (DWORD)NumberOfBytes; - Success = WriteFile ( - GetStdHandle (STD_OUTPUT_HANDLE), - Buffer, - CharCount, - &CharCount, - NULL - ); + Success = WriteFile ( + GetStdHandle (STD_OUTPUT_HANDLE), + Buffer, + CharCount, + &CharCount, + NULL + ); return Success ? CharCount : 0; } @@ -120,34 +120,35 @@ SecPollStdIn ( VOID ) { - BOOL Success; - INPUT_RECORD Record; - DWORD RecordNum; + BOOL Success; + INPUT_RECORD Record; + DWORD RecordNum; do { Success = GetNumberOfConsoleInputEvents (GetStdHandle (STD_INPUT_HANDLE), &RecordNum); if (!Success || (RecordNum == 0)) { break; } + Success = PeekConsoleInput ( - GetStdHandle (STD_INPUT_HANDLE), - &Record, - 1, - &RecordNum - ); + GetStdHandle (STD_INPUT_HANDLE), + &Record, + 1, + &RecordNum + ); if (Success && (RecordNum == 1)) { - if (Record.EventType == KEY_EVENT && Record.Event.KeyEvent.bKeyDown) { + if ((Record.EventType == KEY_EVENT) && Record.Event.KeyEvent.bKeyDown) { return TRUE; } else { // // Consume the non-key event. // Success = ReadConsoleInput ( - GetStdHandle (STD_INPUT_HANDLE), - &Record, - 1, - &RecordNum - ); + GetStdHandle (STD_INPUT_HANDLE), + &Record, + 1, + &RecordNum + ); } } } while (Success); @@ -157,37 +158,38 @@ SecPollStdIn ( UINTN SecReadStdIn ( - IN UINT8 *Buffer, - IN UINTN NumberOfBytes + IN UINT8 *Buffer, + IN UINTN NumberOfBytes ) { - BOOL Success; - INPUT_RECORD Record; - DWORD RecordNum; - UINTN BytesReturn; + BOOL Success; + INPUT_RECORD Record; + DWORD RecordNum; + UINTN BytesReturn; if (!SecPollStdIn ()) { return 0; } + Success = ReadConsoleInput ( - GetStdHandle (STD_INPUT_HANDLE), - &Record, - 1, - &RecordNum - ); + GetStdHandle (STD_INPUT_HANDLE), + &Record, + 1, + &RecordNum + ); ASSERT (Success && (RecordNum == 1) && (Record.EventType == KEY_EVENT) && (Record.Event.KeyEvent.bKeyDown)); NumberOfBytes = MIN (Record.Event.KeyEvent.wRepeatCount, NumberOfBytes); BytesReturn = NumberOfBytes; while (NumberOfBytes-- != 0) { Buffer[NumberOfBytes] = Record.Event.KeyEvent.uChar.AsciiChar; } + return BytesReturn; } - VOID * SecAlloc ( - IN UINTN Size + IN UINTN Size ) { return malloc ((size_t)Size); @@ -195,7 +197,7 @@ SecAlloc ( BOOLEAN SecFree ( - IN VOID *Ptr + IN VOID *Ptr ) { if (EfiSystemMemoryRange (Ptr)) { @@ -208,13 +210,11 @@ SecFree ( return TRUE; } - - // // Define a global that we can use to shut down the NT timer thread when // the timer is canceled. // -BOOLEAN mCancelTimerThread = FALSE; +BOOLEAN mCancelTimerThread = FALSE; // // The notification function to call on every timer interrupt @@ -224,41 +224,40 @@ EMU_SET_TIMER_CALLBACK *mTimerNotifyFunction = NULL; // // The thread handle for this driver // -HANDLE mNtMainThreadHandle; +HANDLE mNtMainThreadHandle; // // The timer value from the last timer interrupt // -UINT32 mNtLastTick; +UINT32 mNtLastTick; // // Critical section used to update varibles shared between the main thread and // the timer interrupt thread. // -CRITICAL_SECTION mNtCriticalSection; +CRITICAL_SECTION mNtCriticalSection; // // Worker Functions // -UINT mMMTimerThreadID = 0; +UINT mMMTimerThreadID = 0; -volatile BOOLEAN mInterruptEnabled = FALSE; +volatile BOOLEAN mInterruptEnabled = FALSE; VOID CALLBACK MMTimerThread ( - UINT wTimerID, - UINT msg, - DWORD dwUser, - DWORD dw1, - DWORD dw2 -) + UINT wTimerID, + UINT msg, + DWORD dwUser, + DWORD dw1, + DWORD dw2 + ) { - UINT32 CurrentTick; - UINT32 Delta; + UINT32 CurrentTick; + UINT32 Delta; if (!mCancelTimerThread) { - // // Suspend the main thread until we are done. // Enter the critical section before suspending @@ -306,14 +305,13 @@ MMTimerThread ( // Get the current system tick // CurrentTick = GetTickCount (); - Delta = CurrentTick - mNtLastTick; + Delta = CurrentTick - mNtLastTick; mNtLastTick = CurrentTick; // // If delay was more then 1 second, ignore it (probably debugging case) // if (Delta < 1000) { - // // Only invoke the callback function if a Non-NULL handler has been // registered. Assume all other handlers are legal. @@ -332,18 +330,17 @@ MMTimerThread ( timeKillEvent (wTimerID); mMMTimerThreadID = 0; } - } VOID SecSetTimer ( IN UINT64 TimerPeriod, IN EMU_SET_TIMER_CALLBACK Callback -) + ) { // -// If TimerPeriod is 0, then the timer thread should be canceled -// + // If TimerPeriod is 0, then the timer thread should be canceled + // if (TimerPeriod == 0) { // // Cancel the timer thread @@ -384,23 +381,24 @@ SecSetTimer ( SetThreadPriority ( GetCurrentThread (), THREAD_PRIORITY_HIGHEST - ); + ); mMMTimerThreadID = timeSetEvent ( - (UINT)TimerPeriod, - 0, - MMTimerThread, - (DWORD_PTR)NULL, - TIME_PERIODIC | TIME_KILL_SYNCHRONOUS | TIME_CALLBACK_FUNCTION - ); + (UINT)TimerPeriod, + 0, + MMTimerThread, + (DWORD_PTR)NULL, + TIME_PERIODIC | TIME_KILL_SYNCHRONOUS | TIME_CALLBACK_FUNCTION + ); } + mTimerNotifyFunction = Callback; } VOID SecInitializeThunk ( VOID -) + ) { InitializeCriticalSection (&mNtCriticalSection); @@ -412,7 +410,7 @@ SecInitializeThunk ( 0, FALSE, DUPLICATE_SAME_ACCESS - ); + ); } VOID @@ -423,7 +421,6 @@ SecEnableInterrupt ( mInterruptEnabled = TRUE; } - VOID SecDisableInterrupt ( VOID @@ -432,7 +429,6 @@ SecDisableInterrupt ( mInterruptEnabled = FALSE; } - UINT64 SecQueryPerformanceFrequency ( VOID @@ -450,17 +446,14 @@ SecQueryPerformanceCounter ( return 0; } - - VOID SecSleep ( - IN UINT64 Nanoseconds + IN UINT64 Nanoseconds ) { Sleep ((DWORD)DivU64x32 (Nanoseconds, 1000000)); } - VOID SecCpuSleep ( VOID @@ -469,40 +462,38 @@ SecCpuSleep ( Sleep (1); } - VOID SecExit ( - UINTN Status + UINTN Status ) { exit ((int)Status); } - VOID SecGetTime ( - OUT EFI_TIME *Time, - OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL ) { - SYSTEMTIME SystemTime; - TIME_ZONE_INFORMATION TimeZone; + SYSTEMTIME SystemTime; + TIME_ZONE_INFORMATION TimeZone; GetLocalTime (&SystemTime); GetTimeZoneInformation (&TimeZone); - Time->Year = (UINT16)SystemTime.wYear; - Time->Month = (UINT8)SystemTime.wMonth; - Time->Day = (UINT8)SystemTime.wDay; - Time->Hour = (UINT8)SystemTime.wHour; - Time->Minute = (UINT8)SystemTime.wMinute; - Time->Second = (UINT8)SystemTime.wSecond; + Time->Year = (UINT16)SystemTime.wYear; + Time->Month = (UINT8)SystemTime.wMonth; + Time->Day = (UINT8)SystemTime.wDay; + Time->Hour = (UINT8)SystemTime.wHour; + Time->Minute = (UINT8)SystemTime.wMinute; + Time->Second = (UINT8)SystemTime.wSecond; Time->Nanosecond = (UINT32)(SystemTime.wMilliseconds * 1000000); - Time->TimeZone = (INT16)TimeZone.Bias; + Time->TimeZone = (INT16)TimeZone.Bias; if (Capabilities != NULL) { Capabilities->Resolution = 1; - Capabilities->Accuracy = 50000000; + Capabilities->Accuracy = 50000000; Capabilities->SetsToZero = FALSE; } @@ -514,30 +505,30 @@ SecGetTime ( EFI_STATUS SecSetTime ( - IN EFI_TIME *Time + IN EFI_TIME *Time ) { - TIME_ZONE_INFORMATION TimeZone; - SYSTEMTIME SystemTime; - BOOL Flag; + TIME_ZONE_INFORMATION TimeZone; + SYSTEMTIME SystemTime; + BOOL Flag; // // Set Daylight savings time information and Time Zone // GetTimeZoneInformation (&TimeZone); TimeZone.StandardDate.wMonth = Time->Daylight; - TimeZone.Bias = Time->TimeZone; - Flag = SetTimeZoneInformation (&TimeZone); + TimeZone.Bias = Time->TimeZone; + Flag = SetTimeZoneInformation (&TimeZone); if (!Flag) { return EFI_DEVICE_ERROR; } - SystemTime.wYear = Time->Year; - SystemTime.wMonth = Time->Month; - SystemTime.wDay = Time->Day; - SystemTime.wHour = Time->Hour; - SystemTime.wMinute = Time->Minute; - SystemTime.wSecond = Time->Second; + SystemTime.wYear = Time->Year; + SystemTime.wMonth = Time->Month; + SystemTime.wDay = Time->Day; + SystemTime.wHour = Time->Hour; + SystemTime.wMinute = Time->Minute; + SystemTime.wSecond = Time->Second; SystemTime.wMilliseconds = (INT16)(Time->Nanosecond / 1000000); Flag = SetLocalTime (&SystemTime); @@ -549,7 +540,7 @@ SecSetTime ( } } -EMU_THUNK_PROTOCOL gEmuThunkProtocol = { +EMU_THUNK_PROTOCOL gEmuThunkProtocol = { SecWriteStdErr, SecConfigStdIn, SecWriteStdOut, @@ -574,7 +565,5 @@ EMU_THUNK_PROTOCOL gEmuThunkProtocol = { GetNextThunkProtocol }; - #pragma warning(default : 4996) #pragma warning(default : 4232) - -- 2.39.2