diff --git a/sdk/xtdk/bltypes.h b/sdk/xtdk/bltypes.h index f045781..5446eb9 100644 --- a/sdk/xtdk/bltypes.h +++ b/sdk/xtdk/bltypes.h @@ -41,22 +41,22 @@ #define XTBL_TUI_MAX_DIALOG_WIDTH 100 /* XTLDR Routine pointers */ -typedef LONG (*PBL_GET_MEMTYPE_ROUTINE)(IN EFI_MEMORY_TYPE EfiMemoryType); +typedef LOADER_MEMORY_TYPE (*PBL_GET_MEMTYPE_ROUTINE)(IN EFI_MEMORY_TYPE EfiMemoryType); /* Boot Loader protocol routine pointers */ typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE AllocationType, IN ULONGLONG Size, OUT PEFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory); typedef EFI_STATUS (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(IN ULONG MaxNameLength, OUT PXTBL_BOOTMENU_ITEM *MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId); -typedef BOOLEAN (*PBL_BOOTUTIL_GET_BOOLEAN_PARAMETER)(IN CONST PWCHAR Parameters, IN CONST PWCHAR Needle); +typedef BOOLEAN (*PBL_BOOTUTIL_GET_BOOLEAN_PARAMETER)(IN PCWSTR Parameters, IN PCWSTR Needle); typedef EFI_STATUS (*PBL_BUILD_PAGE_MAP)(IN PXTBL_PAGE_MAPPING PageMap, IN ULONG_PTR SelfMapAddress); typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle); typedef VOID (*PBL_CLEAR_CONSOLE_LINE)(IN ULONGLONG LineNo); typedef EFI_STATUS (*PBL_CLOSE_XT_PROTOCOL)(IN PEFI_HANDLE Handle, IN PEFI_GUID ProtocolGuid); -typedef BOOLEAN (*PBL_CONFIG_GET_BOOLEAN_VALUE)(IN CONST PWCHAR ConfigName); -typedef EFI_STATUS (*PBL_CONFIG_GET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN CONST PWCHAR OptionName, OUT PWCHAR *OptionValue); -typedef VOID (*PBL_CONFIG_GET_EDITABLE_OPTIONS)(OUT CONST PWCHAR **OptionsArray, OUT PULONG OptionsCount); -typedef EFI_STATUS (*PBL_CONFIG_GET_VALUE)(IN CONST PWCHAR ConfigName, OUT PWCHAR *ConfigValue); -typedef EFI_STATUS (*PBL_CONFIG_SET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN CONST PWCHAR OptionName, IN CONST PWCHAR OptionValue); +typedef BOOLEAN (*PBL_CONFIG_GET_BOOLEAN_VALUE)(IN PCWSTR ConfigName); +typedef EFI_STATUS (*PBL_CONFIG_GET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN PCWSTR OptionName, OUT PWCHAR *OptionValue); +typedef VOID (*PBL_CONFIG_GET_EDITABLE_OPTIONS)(OUT PCWSTR **OptionsArray, OUT PULONG OptionsCount); +typedef EFI_STATUS (*PBL_CONFIG_GET_VALUE)(IN PCWSTR ConfigName, OUT PWCHAR *ConfigValue); +typedef EFI_STATUS (*PBL_CONFIG_SET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN PCWSTR OptionName, IN PCWSTR OptionValue); typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)(); typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)(); @@ -71,11 +71,11 @@ typedef VOID (XTAPI *PBL_COPY_MEMORY)(OUT PVOID Destination, IN PCVOID Source, I typedef VOID (*PBL_DEBUG_PRINT)(IN PCWSTR Format, IN ...); typedef EFI_STATUS (*PBL_ENTER_FIRMWARE_SETUP)(); typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(); -typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PWCHAR SystemType, OUT PEFI_GUID BootProtocolGuid); +typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PCWSTR SystemType, OUT PEFI_GUID BootProtocolGuid); typedef EFI_STATUS (*PBL_FREE_PAGES)(IN ULONGLONG Size, IN EFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory); typedef EFI_STATUS (*PBL_GET_CONFIGURATION_TABLE)(IN PEFI_GUID TableGuid, OUT PVOID *Table); -typedef EFI_STATUS (*PBL_GET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PWCHAR VariableName, OUT PVOID *VariableValue); +typedef EFI_STATUS (*PBL_GET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PCWSTR VariableName, OUT PVOID *VariableValue); typedef VOID (*PBL_GET_MAPPINGS_COUNT)(IN PXTBL_PAGE_MAPPING PageMap, OUT PULONG NumberOfMappings); typedef EFI_STATUS (*PBL_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap); typedef PLIST_ENTRY (*PBL_GET_MODULES_LIST)(); @@ -84,7 +84,7 @@ typedef INT_PTR (*PBL_GET_SECURE_BOOT_STATUS)(); typedef PVOID (*PBL_GET_VIRTUAL_ADDRESS)(IN PXTBL_PAGE_MAPPING PageMap, IN PVOID PhysicalAddress); typedef EFI_STATUS (*PBL_INITIALIZE_ENTROPY)(PULONGLONG RNGBuffer); typedef VOID (*PBL_INITIALIZE_PAGE_MAP)(OUT PXTBL_PAGE_MAPPING PageMap, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize); -typedef EFI_STATUS (*PBL_INSTALL_XT_PROTOCOL)(IN PVOID Interface, IN PEFI_GUID Guid); +typedef EFI_STATUS (*PBL_INSTALL_XT_PROTOCOL)(IN PVOID Interface, IN PEFI_GUID Guid); // Note: BlInstallProtocol takes PEFI_GUID, not PEFI_GUID typedef EFI_STATUS (*PBL_INVOKE_BOOT_PROTOCOL)(IN PWCHAR ShortName, IN PLIST_ENTRY OptionsList); typedef EFI_STATUS (*PBL_LOCATE_PROTOCOL_HANDLES)(OUT PEFI_HANDLE *Handles, OUT PUINT_PTR Count, IN PEFI_GUID ProtocolGuid); typedef EFI_STATUS (*PBL_LOAD_EFI_IMAGE)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN PVOID ImageData, IN SIZE_T ImageSize, OUT PEFI_HANDLE ImageHandle); @@ -97,18 +97,18 @@ typedef EFI_STATUS (*PBL_OPEN_PROTOCOL_HANDLE)(IN EFI_HANDLE Handle, OUT PVOID * typedef PVOID (*PBL_PHYSICAL_ADDRESS_TO_VIRTUAL)(IN PVOID PhysicalAddress, IN PVOID PhysicalBase, IN PVOID VirtualBase); typedef EFI_STATUS (*PBL_PHYSICAL_LIST_TO_VIRTUAL)(IN PXTBL_PAGE_MAPPING PageMap, IN OUT PLIST_ENTRY ListHead, IN PVOID PhysicalBase, IN PVOID VirtualBase); typedef EFI_STATUS (*PBL_POWER_SYSTEM)(); -typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize); -typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid); +typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN PCWSTR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize); +typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PCWSTR SystemType, IN PEFI_GUID BootProtocolGuid); typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine); -typedef EFI_STATUS (*PBL_SET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PWCHAR VariableName, IN PVOID VariableValue, IN UINT_PTR Size); +typedef EFI_STATUS (*PBL_SET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PCWSTR VariableName, IN PVOID VariableValue, IN UINT_PTR Size); typedef VOID (XTAPI *PBL_SET_MEMORY)(OUT PVOID Destination, IN UCHAR Byte, IN SIZE_T Length); typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds); typedef EFI_STATUS (*PBL_START_EFI_IMAGE)(IN EFI_HANDLE ImageHandle); -typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); -typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); -typedef VOID (*PBL_TUI_DISPLAY_INPUT_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN PWCHAR *InputFieldText); -typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN UCHAR Percentage); -typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PWCHAR Message, IN UCHAR Percentage); +typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message); +typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message); +typedef VOID (*PBL_TUI_DISPLAY_INPUT_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message, IN OUT PWCHAR *InputFieldText); +typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message, IN UCHAR Percentage); +typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PCWSTR Message, IN UCHAR Percentage); typedef EFI_STATUS (*PBL_WAIT_FOR_EFI_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index); typedef VOID (*PBL_XT_BOOT_MENU)(); typedef VOID (XTAPI *PBL_ZERO_MEMORY)(OUT PVOID Destination, IN SIZE_T Length); @@ -121,7 +121,7 @@ typedef EFI_STATUS (*PBL_ACPI_GET_RSDP_TABLE)(OUT PVOID *AcpiTable); typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS_TABLE)(OUT PVOID *SmBiosTable); typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS3_TABLE)(OUT PVOID *SmBiosTable); typedef EFI_STATUS (*PBL_ACPI_GET_XSDP_TABLE)(OUT PVOID *AcpiTable); -typedef EFI_STATUS (*PBL_BOOTPROTO_BOOT_SYSTEM)(IN PXTBL_BOOT_PARAMETERS Parameters); +typedef EFI_STATUS (*PBL_BOOTPROTO_BOOT_SYSTEM)(IN PXTBL_BOOT_PARAMETERS Parameters); // This is defined in xtos.c typedef EFI_STATUS (*PBL_EXECIMAGE_GET_ENTRY_POINT)(IN PVOID ImagePointer, OUT PVOID *EntryPoint); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_FILE_SIZE)(IN PVOID ImagePointer, OUT PULONGLONG FileSize); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_IMAGE_SIZE)(IN PVOID ImagePointer, OUT PUINT ImageSize); diff --git a/sdk/xtdk/xtuefi.h b/sdk/xtdk/xtuefi.h index 6c82281..1f873d3 100644 --- a/sdk/xtdk/xtuefi.h +++ b/sdk/xtdk/xtuefi.h @@ -775,14 +775,12 @@ typedef EFI_STATUS (*PEFI_IO_UNMAP)(IN PEFI_DEVICE_IO_PROTOCOL This, IN PVOID Ma typedef EFI_STATUS (*PEFI_IO_ALLOCATE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR Pages, IN OUT PEFI_PHYSICAL_ADDRESS HostAddress); typedef EFI_STATUS (*PEFI_IO_FLUSH)(IN PEFI_DEVICE_IO_PROTOCOL This); typedef EFI_STATUS (*PEFI_IO_FREE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN UINT_PTR Pages, IN EFI_PHYSICAL_ADDRESS HostAddress); - typedef INT_PTR (*PEFI_UNICODE_STRICOLL)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 s1, IN PUINT16 s2); typedef UCHAR (*PEFI_UNICODE_METAIMATCH)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN PUINT16 Pattern); typedef VOID (*PEFI_UNICODE_STRLWR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str); typedef VOID (*PEFI_UNICODE_STRUPR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str); typedef VOID (*PEFI_UNICODE_FATTOSTR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN UINT_PTR FatSize, IN PUINT8 Fat, OUT PUINT16 String); typedef UCHAR (*PEFI_UNICODE_STRTOFAT)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN UINT_PTR FatSize, OUT PUINT8 Fat); - typedef EFI_STATUS (*PEFI_HASH_GET_HASH_SIZE)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, OUT PUINT_PTR HashSize); typedef EFI_STATUS (*PEFI_HASH_HASH)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, IN UCHAR Extend, IN CONST PUINT8 Message, IN UINT64 MessageSize, IN OUT PEFI_HASH_OUTPUT Hash); typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(IN PEFI_GRAPHICS_OUTPUT_PROTOCOL This, IN UINT32 ModeNumber, OUT PUINT_PTR SizeOfInfo, OUT PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info); diff --git a/xtldr/CMakeLists.txt b/xtldr/CMakeLists.txt index f3a18a6..c07f7cf 100644 --- a/xtldr/CMakeLists.txt +++ b/xtldr/CMakeLists.txt @@ -11,24 +11,24 @@ include_directories( # Specify list of library source code files list(APPEND LIBXTLDR_SOURCE - ${XTLDR_SOURCE_DIR}/library/modproto.c) + ${XTLDR_SOURCE_DIR}/library/modproto.cc) # Specify list of source code files list(APPEND XTLDR_SOURCE - ${XTLDR_SOURCE_DIR}/arch/${ARCH}/memory.c - ${XTLDR_SOURCE_DIR}/bootutil.c - ${XTLDR_SOURCE_DIR}/config.c - ${XTLDR_SOURCE_DIR}/console.c - ${XTLDR_SOURCE_DIR}/debug.c - ${XTLDR_SOURCE_DIR}/efiutils.c - ${XTLDR_SOURCE_DIR}/globals.c - ${XTLDR_SOURCE_DIR}/hardware.c - ${XTLDR_SOURCE_DIR}/memory.c - ${XTLDR_SOURCE_DIR}/protocol.c - ${XTLDR_SOURCE_DIR}/shell.c - ${XTLDR_SOURCE_DIR}/textui.c - ${XTLDR_SOURCE_DIR}/volume.c - ${XTLDR_SOURCE_DIR}/xtldr.c) + ${XTLDR_SOURCE_DIR}/arch/${ARCH}/memory.cc + ${XTLDR_SOURCE_DIR}/bootutil.cc + ${XTLDR_SOURCE_DIR}/config.cc + ${XTLDR_SOURCE_DIR}/console.cc + ${XTLDR_SOURCE_DIR}/debug.cc + ${XTLDR_SOURCE_DIR}/efiutils.cc + ${XTLDR_SOURCE_DIR}/globals.cc + ${XTLDR_SOURCE_DIR}/hardware.cc + ${XTLDR_SOURCE_DIR}/memory.cc + ${XTLDR_SOURCE_DIR}/protocol.cc + ${XTLDR_SOURCE_DIR}/shell.cc + ${XTLDR_SOURCE_DIR}/textui.cc + ${XTLDR_SOURCE_DIR}/volume.cc + ${XTLDR_SOURCE_DIR}/xtldr.cc) # Link static XTLDR library add_library(libxtldr ${LIBXTLDR_SOURCE}) diff --git a/xtldr/arch/amd64/memory.c b/xtldr/arch/amd64/memory.cc similarity index 99% rename from xtldr/arch/amd64/memory.c rename to xtldr/arch/amd64/memory.cc index c607e62..faa4f96 100644 --- a/xtldr/arch/amd64/memory.c +++ b/xtldr/arch/amd64/memory.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/arch/amd64/memory.c + * FILE: xtldr/arch/amd64/memory.cc * DESCRIPTION: XT Boot Loader AMD64 specific memory management * DEVELOPERS: Rafal Kupiec * Aiken Harris diff --git a/xtldr/arch/i686/memory.c b/xtldr/arch/i686/memory.cc similarity index 99% rename from xtldr/arch/i686/memory.c rename to xtldr/arch/i686/memory.cc index f858e37..6e46dc2 100644 --- a/xtldr/arch/i686/memory.c +++ b/xtldr/arch/i686/memory.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/arch/i686/memory.c + * FILE: xtldr/arch/i686/memory.cc * DESCRIPTION: XT Boot Loader i686 specific memory management * DEVELOPERS: Rafal Kupiec * Aiken Harris diff --git a/xtldr/bootutil.c b/xtldr/bootutil.cc similarity index 92% rename from xtldr/bootutil.c rename to xtldr/bootutil.cc index 9a3acfd..7f5925e 100644 --- a/xtldr/bootutil.c +++ b/xtldr/bootutil.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/bootutil.c + * FILE: xtldr/bootutil.cc * DESCRIPTION: Helper functions used by the boot protocol during system startup * DEVELOPERS: Aiken Harris */ @@ -24,10 +24,10 @@ */ XTCDECL BOOLEAN -BlGetBooleanParameter(IN CONST PWCHAR Parameters, - IN CONST PWCHAR Needle) +BlGetBooleanParameter(IN PCWSTR Parameters, + IN PCWSTR Needle) { - PWCHAR CurrentPosition, TokenEnd, TokenStart; + PCWSTR CurrentPosition, TokenEnd, TokenStart; SIZE_T NeedleLength, TokenLength; /* Validate input data and ensure the option is not an empty string */ diff --git a/xtldr/config.c b/xtldr/config.cc similarity index 97% rename from xtldr/config.c rename to xtldr/config.cc index cb2697a..f25baed 100644 --- a/xtldr/config.c +++ b/xtldr/config.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/config.c + * FILE: xtldr/config.cc * DESCRIPTION: XT Boot Loader Configuration * DEVELOPERS: Rafal Kupiec * Aiken Harris @@ -29,7 +29,7 @@ XTCDECL EFI_STATUS BlGetBootOptionValue(IN PLIST_ENTRY Options, - IN CONST PWCHAR OptionName, + IN PCWSTR OptionName, OUT PWCHAR *OptionValue) { PXTBL_CONFIG_ENTRY ConfigEntry; @@ -94,7 +94,7 @@ BlGetBootOptionValue(IN PLIST_ENTRY Options, */ XTCDECL BOOLEAN -BlGetConfigBooleanValue(IN CONST PWCHAR ConfigName) +BlGetConfigBooleanValue(IN PCWSTR ConfigName) { PWCHAR Value; @@ -127,7 +127,7 @@ BlGetConfigBooleanValue(IN CONST PWCHAR ConfigName) */ XTCDECL EFI_STATUS -BlGetConfigValue(IN CONST PWCHAR ConfigName, +BlGetConfigValue(IN PCWSTR ConfigName, OUT PWCHAR *ConfigValue) { PXTBL_CONFIG_ENTRY ConfigEntry; @@ -194,7 +194,7 @@ BlGetConfigValue(IN CONST PWCHAR ConfigName, */ XTCDECL VOID -BlGetEditableOptions(OUT CONST PWCHAR **OptionsArray, +BlGetEditableOptions(OUT PCWSTR **OptionsArray, OUT PULONG OptionsCount) { ULONG Count = 0; @@ -231,8 +231,8 @@ BlGetEditableOptions(OUT CONST PWCHAR **OptionsArray, XTCDECL EFI_STATUS BlSetBootOptionValue(IN PLIST_ENTRY Options, - IN CONST PWCHAR OptionName, - IN CONST PWCHAR OptionValue) + IN PCWSTR OptionName, + IN PCWSTR OptionValue) { PXTBL_CONFIG_ENTRY ConfigEntry; PLIST_ENTRY ConfigList; @@ -344,8 +344,8 @@ BlSetBootOptionValue(IN PLIST_ENTRY Options, */ XTCDECL EFI_STATUS -BlSetConfigValue(IN CONST PWCHAR ConfigName, - IN CONST PWCHAR ConfigValue) +BlSetConfigValue(IN PCWSTR ConfigName, + IN PCWSTR ConfigValue) { PXTBL_CONFIG_ENTRY ConfigEntry; PLIST_ENTRY ConfigListEntry; @@ -501,7 +501,7 @@ BlpParseCommandLine(VOID) if(LoadedImage && LoadedImage->LoadOptions) { /* Tokenize provided options */ - Argument = RtlTokenizeWideString(LoadedImage->LoadOptions, L" ", &LastArg); + Argument = RtlTokenizeWideString((PWCHAR)LoadedImage->LoadOptions, L" ", &LastArg); /* Iterate over all arguments passed to boot loader */ while(Argument != NULLPTR) @@ -802,8 +802,8 @@ BlpParseConfigFile(IN CONST PCHAR RawConfig, */ XTCDECL EFI_STATUS -BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, - IN CONST PWCHAR ConfigFile, +BlpReadConfigFile(IN PCWSTR ConfigDirectory, + IN PCWSTR ConfigFile, OUT PCHAR *ConfigData) { PEFI_FILE_HANDLE DirHandle, FsHandle; @@ -820,14 +820,14 @@ BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, } /* Open specified directory, containing the configuration file and close the FS immediately */ - Status = FsHandle->Open(FsHandle, &DirHandle, ConfigDirectory, EFI_FILE_MODE_READ, 0); + Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)ConfigDirectory, EFI_FILE_MODE_READ, 0); FsHandle->Close(FsHandle); /* Check if directory opened successfully */ if(Status != STATUS_EFI_SUCCESS) { /* Failed to open directory */ - BlCloseVolume(DiskHandle); + BlCloseVolume(&DiskHandle); return Status; } @@ -836,7 +836,7 @@ BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, DirHandle->Close(DirHandle); /* Close EFI volume */ - BlCloseVolume(DiskHandle); + BlCloseVolume(&DiskHandle); /* Return read status */ return Status; diff --git a/xtldr/console.c b/xtldr/console.cc similarity index 99% rename from xtldr/console.c rename to xtldr/console.cc index 618df8e..049d0c2 100644 --- a/xtldr/console.c +++ b/xtldr/console.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/console.c + * FILE: xtldr/console.cc * DESCRIPTION: EFI console support * DEVELOPERS: Rafal Kupiec */ diff --git a/xtldr/debug.c b/xtldr/debug.cc similarity index 98% rename from xtldr/debug.c rename to xtldr/debug.cc index 60c7520..b935986 100644 --- a/xtldr/debug.c +++ b/xtldr/debug.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/debug.c + * FILE: xtldr/debug.cc * DESCRIPTION: XT Boot Loader debugging support * DEVELOPERS: Rafal Kupiec */ @@ -257,7 +257,7 @@ BlpInitializeSerialPort(IN ULONG PortNumber, } /* Initialize COM port */ - Status = HlInitializeComPort(&BlpStatus.SerialPort, UlongToPtr(PortAddress), BaudRate); + Status = HlInitializeComPort(&BlpStatus.SerialPort, (PUCHAR)UlongToPtr(PortAddress), BaudRate); /* Port not found under supplied address */ if(Status == STATUS_NOT_FOUND && PortAddress) @@ -268,7 +268,7 @@ BlpInitializeSerialPort(IN ULONG PortNumber, { /* Try to reinitialize COM port */ BlConsolePrint(L"Enabled I/O space access for all PCI(E) serial controllers found\n"); - Status = HlInitializeComPort(&BlpStatus.SerialPort, UlongToPtr(PortAddress), BaudRate); + Status = HlInitializeComPort(&BlpStatus.SerialPort, (PUCHAR)UlongToPtr(PortAddress), BaudRate); } } diff --git a/xtldr/efiutils.c b/xtldr/efiutils.cc similarity index 92% rename from xtldr/efiutils.c rename to xtldr/efiutils.cc index e033f0c..15e2fda 100644 --- a/xtldr/efiutils.c +++ b/xtldr/efiutils.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/efiutils.c + * FILE: xtldr/efiutils.cc * DESCRIPTION: EFI related routines for XT Boot Loader * DEVELOPERS: Rafal Kupiec */ @@ -21,7 +21,7 @@ EFI_STATUS BlEnterFirmwareSetup() { EFI_GUID Guid = EFI_GLOBAL_VARIABLE_GUID; - PULONGLONG SetupSupport; + PULONGLONG SetupSupport = NULLPTR; ULONGLONG Indications; EFI_STATUS Status; @@ -31,12 +31,18 @@ BlEnterFirmwareSetup() { /* Reboot into firmware setup is not supported */ BlDebugPrint(L"WARNING: Reboot into firmware setup interface not supported\n"); + if(SetupSupport) + { + BlFreeMemoryPool((PVOID)SetupSupport); + } return STATUS_EFI_UNSUPPORTED; } + BlFreeMemoryPool((PVOID)SetupSupport); + /* Get the value of OsIndications variable */ Indications = 0; - Status = BlGetEfiVariable(&Guid, L"OsIndications", (PVOID)&Indications); + Status = BlGetEfiVariable(&Guid, L"OsIndications", (PVOID*)&Indications); /* Enable FW setup on next boot */ Indications |= EFI_OS_INDICATIONS_BOOT_TO_FW_UI; @@ -167,12 +173,12 @@ BlGetConfigurationTable(IN PEFI_GUID TableGuid, XTCDECL EFI_STATUS BlGetEfiVariable(IN PEFI_GUID Vendor, - IN PWCHAR VariableName, + IN PCWSTR VariableName, OUT PVOID *VariableValue) { EFI_STATUS Status; PVOID Buffer; - UINT_PTR Size; + UINT_PTR Size = 0; /* Allocate a buffer for storing a variable's value */ Size = EFI_MAXIMUM_VARIABLE_SIZE * sizeof(PWCHAR); @@ -184,7 +190,7 @@ BlGetEfiVariable(IN PEFI_GUID Vendor, } /* Attempt to get variable value */ - Status = EfiSystemTable->RuntimeServices->GetVariable(VariableName, Vendor, NULLPTR, &Size, Buffer); + Status = EfiSystemTable->RuntimeServices->GetVariable((PWCHAR)VariableName, Vendor, NULLPTR, &Size, Buffer); if(Status != STATUS_EFI_SUCCESS) { /* Failed to get variable, probably not found such one */ @@ -234,16 +240,16 @@ BlGetSecureBootStatus() { EFI_GUID VarGuid = EFI_GLOBAL_VARIABLE_GUID; INT_PTR SecureBootStatus = 0; - UCHAR VarValue = 0; + INT_PTR VarValue = 0; UINT_PTR Size; - Size = sizeof(VarValue); - if(EfiSystemTable->RuntimeServices->GetVariable(L"SecureBoot", &VarGuid, + Size = sizeof(INT_PTR); + if(EfiSystemTable->RuntimeServices->GetVariable((PWCHAR)L"SecureBoot", &VarGuid, NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS) { - SecureBootStatus = (INT_PTR)VarValue; - - if((EfiSystemTable->RuntimeServices->GetVariable(L"SetupMode", &VarGuid, + SecureBootStatus = VarValue; + Size = sizeof(INT_PTR); + if((EfiSystemTable->RuntimeServices->GetVariable((PWCHAR)L"SetupMode", &VarGuid, NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS) && VarValue != 0) { SecureBootStatus = -1; @@ -365,7 +371,7 @@ BlRebootSystem() XTCDECL EFI_STATUS BlSetEfiVariable(IN PEFI_GUID Vendor, - IN PWCHAR VariableName, + IN PCWSTR VariableName, IN PVOID VariableValue, IN UINT_PTR Size) { @@ -373,7 +379,7 @@ BlSetEfiVariable(IN PEFI_GUID Vendor, /* Set EFI variable */ Attributes = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS; - return EfiSystemTable->RuntimeServices->SetVariable(VariableName, Vendor, Attributes, Size, VariableValue); + return EfiSystemTable->RuntimeServices->SetVariable((PWCHAR)VariableName, Vendor, Attributes, Size, VariableValue); } /** diff --git a/xtldr/globals.c b/xtldr/globals.cc similarity index 93% rename from xtldr/globals.c rename to xtldr/globals.cc index af4fa52..218497c 100644 --- a/xtldr/globals.c +++ b/xtldr/globals.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/globals.c + * FILE: xtldr/globals.cc * DESCRIPTION: XT Boot Loader global variables * DEVELOPERS: Rafal Kupiec */ @@ -22,7 +22,7 @@ LIST_ENTRY BlpConfig; LIST_ENTRY BlpConfigSections; /* List of user-editable boot options */ -PWCHAR BlpEditableConfigOptions[] = { +PCWSTR BlpEditableConfigOptions[] = { L"BootModules", L"SystemType", L"SystemPath", L"KernelFile", L"InitrdFile", L"HalFile", L"Parameters", NULLPTR diff --git a/xtldr/hardware.c b/xtldr/hardware.cc similarity index 93% rename from xtldr/hardware.c rename to xtldr/hardware.cc index 0f3df84..580c30e 100644 --- a/xtldr/hardware.c +++ b/xtldr/hardware.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/hardware.c + * FILE: xtldr/hardware.cc * DESCRIPTION: EFI hardware support for XT Boot Loader * DEVELOPERS: Rafal Kupiec */ @@ -85,7 +85,7 @@ BlpActivateSerialIOController() /* Read configuration space */ Address = ((ULONGLONG)((((UINT_PTR) Bus) << 24) + (((UINT_PTR) Device) << 16) + (((UINT_PTR) Function) << 8) + ((UINT_PTR) 0))); - PciDev->Pci.Read(PciDev, 2, Address, sizeof (PciHeader) / sizeof (UINT), &PciHeader); + PciDev->Pci.Read(PciDev, EfiPciIoWidthUint32, Address, sizeof (PciHeader) / sizeof (UINT), &PciHeader); /* Check if device exists */ if(PciHeader.VendorId == PCI_INVALID_VENDORID) @@ -100,7 +100,7 @@ BlpActivateSerialIOController() /* Enable I/O space access */ Address |= 0x4; Command = PCI_ENABLE_IO_SPACE; - Status = PciDev->Pci.Write(PciDev, 1, Address, 1, &Command); + Status = PciDev->Pci.Write(PciDev, EfiPciIoWidthUint16, Address, 1, &Command); } } } diff --git a/xtldr/includes/globals.h b/xtldr/includes/globals.h index 5798f47..a142ca5 100644 --- a/xtldr/includes/globals.h +++ b/xtldr/includes/globals.h @@ -25,7 +25,7 @@ EXTERN LIST_ENTRY BlpConfig; EXTERN LIST_ENTRY BlpConfigSections; /* List of user-editable boot options */ -EXTERN PWCHAR BlpEditableConfigOptions[]; +EXTERN PCWSTR BlpEditableConfigOptions[]; /* XT Boot Loader protocol */ EXTERN XTBL_LOADER_PROTOCOL BlpLdrProtocol; diff --git a/xtldr/includes/xtldr.h b/xtldr/includes/xtldr.h index 778dceb..390d3e5 100644 --- a/xtldr/includes/xtldr.h +++ b/xtldr/includes/xtldr.h @@ -77,24 +77,24 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry); XTCDECL VOID -BlDisplayErrorDialog(IN PWCHAR Caption, - IN PWCHAR Message); +BlDisplayErrorDialog(IN PCWSTR Caption, + IN PCWSTR Message); XTCDECL VOID -BlDisplayInfoDialog(IN PWCHAR Caption, - IN PWCHAR Message); +BlDisplayInfoDialog(IN PCWSTR Caption, + IN PCWSTR Message); XTCDECL VOID -BlDisplayInputDialog(IN PWCHAR Caption, - IN PWCHAR Message, +BlDisplayInputDialog(IN PCWSTR Caption, + IN PCWSTR Message, IN OUT PWCHAR *InputFieldText); XTCDECL XTBL_DIALOG_HANDLE -BlDisplayProgressDialog(IN PWCHAR Caption, - IN PWCHAR Message, +BlDisplayProgressDialog(IN PCWSTR Caption, + IN PCWSTR Message, IN UCHAR Percentage); XTCDECL @@ -115,7 +115,7 @@ BlExitBootServices(); XTCDECL EFI_STATUS -BlFindBootProtocol(IN PWCHAR SystemType, +BlFindBootProtocol(IN PCWSTR SystemType, OUT PEFI_GUID BootProtocolGuid); XTCDECL @@ -135,22 +135,22 @@ BlFreeMemoryPool(IN PVOID Memory); XTCDECL BOOLEAN -BlGetBooleanParameter(IN CONST PWCHAR Parameters, - IN CONST PWCHAR Needle); +BlGetBooleanParameter(IN PCWSTR Parameters, + IN PCWSTR Needle); XTCDECL EFI_STATUS BlGetBootOptionValue(IN PLIST_ENTRY Options, - IN CONST PWCHAR OptionName, + IN PCWSTR OptionName, OUT PWCHAR *OptionValue); XTCDECL BOOLEAN -BlGetConfigBooleanValue(IN CONST PWCHAR ConfigName); +BlGetConfigBooleanValue(IN PCWSTR ConfigName); XTCDECL EFI_STATUS -BlGetConfigValue(IN CONST PWCHAR ConfigName, +BlGetConfigValue(IN PCWSTR ConfigName, OUT PWCHAR *ConfigValue); XTCDECL @@ -160,7 +160,7 @@ BlGetConfigurationTable(IN PEFI_GUID TableGuid, XTCDECL VOID -BlGetEditableOptions(OUT CONST PWCHAR **OptionsArray, +BlGetEditableOptions(OUT PCWSTR **OptionsArray, OUT PULONG OptionsCount); XTCDECL @@ -171,7 +171,7 @@ BlGetEfiPath(IN PWCHAR SystemPath, XTCDECL EFI_STATUS BlGetEfiVariable(IN PEFI_GUID Vendor, - IN PWCHAR VariableName, + IN PCWSTR VariableName, OUT PVOID *VariableValue); XTCDECL @@ -323,7 +323,7 @@ BlQueryConsoleMode(OUT PUINT_PTR ResX, XTCDECL EFI_STATUS BlReadFile(IN PEFI_FILE_HANDLE DirHandle, - IN CONST PWCHAR FileName, + IN PCWSTR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize); @@ -341,7 +341,7 @@ BlRegisterBootMenu(PVOID BootMenuRoutine); XTCDECL EFI_STATUS -BlRegisterBootProtocol(IN PWCHAR SystemType, +BlRegisterBootProtocol(IN PCWSTR SystemType, IN PEFI_GUID BootProtocolGuid); XTCDECL @@ -351,13 +351,13 @@ BlResetConsoleInputBuffer(); XTCDECL EFI_STATUS BlSetBootOptionValue(IN PLIST_ENTRY Options, - IN CONST PWCHAR OptionName, - IN CONST PWCHAR OptionValue); + IN PCWSTR OptionName, + IN PCWSTR OptionValue); XTCDECL EFI_STATUS -BlSetConfigValue(IN CONST PWCHAR ConfigName, - IN CONST PWCHAR ConfigValue); +BlSetConfigValue(IN PCWSTR ConfigName, + IN PCWSTR ConfigValue); XTCDECL VOID @@ -375,7 +375,7 @@ BlSetCursorPosition(IN ULONGLONG PosX, XTCDECL EFI_STATUS BlSetEfiVariable(IN PEFI_GUID Vendor, - IN PWCHAR VariableName, + IN PCWSTR VariableName, IN PVOID VariableValue, IN UINT_PTR Size); @@ -403,7 +403,7 @@ BlStartXtLoader(IN EFI_HANDLE ImageHandle, XTCDECL VOID BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message, + IN PCWSTR Message, IN UCHAR Percentage); XTCDECL @@ -427,7 +427,7 @@ BlpDebugPutChar(IN WCHAR Character); XTCDECL VOID BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message); + IN PCWSTR Message); XTCDECL EFI_STATUS @@ -456,8 +456,8 @@ BlpDrawBootMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, XTCDECL VOID BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Caption, - IN PWCHAR Message); + IN PCWSTR Caption, + IN PCWSTR Message); XTCDECL VOID @@ -471,7 +471,7 @@ BlpDrawDialogInputField(IN PXTBL_DIALOG_HANDLE Handle, XTCDECL VOID BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message); + IN PCWSTR Message); XTCDECL VOID @@ -485,8 +485,8 @@ BlpDrawEditMenu(OUT PXTBL_DIALOG_HANDLE Handle); XTCDECL EFI_STATUS BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR OptionName, - IN PWCHAR OptionValue, + IN PCWSTR OptionName, + IN PCWSTR OptionValue, IN UINT Position, IN BOOLEAN Highlighted); @@ -506,7 +506,7 @@ BlpFindParentBlockDevice(IN PLIST_ENTRY BlockDevices, OUT PEFI_BLOCK_DEVICE_DATA *ParentNode); XTCDECL -LONG +LOADER_MEMORY_TYPE BlpGetLoaderMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType); XTCDECL @@ -562,8 +562,8 @@ BlpPrintShellPrompt(); XTCDECL EFI_STATUS -BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, - IN CONST PWCHAR ConfigFile, +BlpReadConfigFile(IN PCWSTR ConfigDirectory, + IN PCWSTR ConfigFile, OUT PCHAR *ConfigData); XTCDECL diff --git a/xtldr/library/modproto.c b/xtldr/library/modproto.cc similarity index 97% rename from xtldr/library/modproto.c rename to xtldr/library/modproto.cc index db6bd08..11bdd4e 100644 --- a/xtldr/library/modproto.c +++ b/xtldr/library/modproto.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/library/modproto.c + * FILE: xtldr/library/modproto.cc * DESCRIPTION: XT Boot Loader protocol support for XTLDR modules * DEVELOPERS: Rafal Kupiec */ @@ -25,6 +25,7 @@ * * @since XT 1.0 */ +XTCLINK XTCDECL EFI_STATUS BlGetXtLdrProtocol(IN PEFI_SYSTEM_TABLE SystemTable, diff --git a/xtldr/memory.c b/xtldr/memory.cc similarity index 95% rename from xtldr/memory.c rename to xtldr/memory.cc index 4977d5f..35c46a0 100644 --- a/xtldr/memory.c +++ b/xtldr/memory.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/memory.c + * FILE: xtldr/memory.cc * DESCRIPTION: XT Boot Loader memory management * DEVELOPERS: Rafal Kupiec */ @@ -209,11 +209,11 @@ BlGetVirtualAddress(IN PXTBL_PAGE_MAPPING PageMap, if(Mapping->VirtualAddress) { /* Check if provided physical address is in range of this mapping */ - if((PhysicalAddress >= Mapping->PhysicalAddress) && - (PhysicalAddress < Mapping->PhysicalAddress + (Mapping->NumberOfPages * EFI_PAGE_SIZE))) + if(((UINT_PTR)PhysicalAddress >= (UINT_PTR)Mapping->PhysicalAddress) && + ((UINT_PTR)PhysicalAddress < ((UINT_PTR)Mapping->PhysicalAddress + (Mapping->NumberOfPages * EFI_PAGE_SIZE)))) { /* Calculate virtual address based on the mapping and return it */ - return PhysicalAddress - Mapping->PhysicalAddress + Mapping->VirtualAddress; + return (PVOID)(((UINT_PTR)PhysicalAddress - (UINT_PTR)Mapping->PhysicalAddress) + (UINT_PTR)Mapping->VirtualAddress); } } @@ -287,7 +287,7 @@ BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap, SIZE_T Index; /* Set virtual address as specified in argument */ - VirtualAddress = *MemoryMapAddress; + VirtualAddress = (PUCHAR)*MemoryMapAddress; /* Check if custom memory type routine is specified */ if(GetMemoryTypeRoutine == NULLPTR) @@ -346,7 +346,7 @@ BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap, } /* Convert EFI memory type into XTLDR memory type */ - MemoryType = GetMemoryTypeRoutine(Descriptor->Type); + MemoryType = GetMemoryTypeRoutine((EFI_MEMORY_TYPE)Descriptor->Type); /* Do memory mappings depending on memory type */ if(MemoryType == LoaderFirmwareTemporary) @@ -663,12 +663,12 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap, if(ListEntry->Blink == ListHead) { /* Find virtual address of list head */ - ListEntry->Blink = BlGetVirtualAddress(PageMap, ListEntry->Blink); + ListEntry->Blink = (PLIST_ENTRY)BlGetVirtualAddress(PageMap, ListEntry->Blink); } else { /* Convert list entry */ - ListEntry->Blink = BlPhysicalAddressToVirtual(ListEntry->Blink, (PVOID)PhysicalBase, VirtualBase); + ListEntry->Blink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListEntry->Blink, (PVOID)PhysicalBase, VirtualBase); } if(ListEntry->Flink == ListHead) { @@ -678,7 +678,7 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap, else { /* Convert list entry */ - ListEntry->Flink = BlPhysicalAddressToVirtual(ListEntry->Flink, (PVOID)PhysicalBase, VirtualBase); + ListEntry->Flink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListEntry->Flink, (PVOID)PhysicalBase, VirtualBase); } /* Get to the next element*/ @@ -686,8 +686,8 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap, } /* Convert list head */ - ListHead->Blink = BlPhysicalAddressToVirtual(ListHead->Blink, (PVOID)PhysicalBase, VirtualBase); - ListHead->Flink = BlPhysicalAddressToVirtual(ListHead->Flink, (PVOID)PhysicalBase, VirtualBase); + ListHead->Blink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListHead->Blink, (PVOID)PhysicalBase, VirtualBase); + ListHead->Flink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListHead->Flink, (PVOID)PhysicalBase, VirtualBase); /* Return success */ return STATUS_EFI_SUCCESS; @@ -704,7 +704,7 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap, * @since XT 1.0 */ XTCDECL -LONG +LOADER_MEMORY_TYPE BlpGetLoaderMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType) { LOADER_MEMORY_TYPE MemoryType; diff --git a/xtldr/protocol.c b/xtldr/protocol.cc similarity index 97% rename from xtldr/protocol.c rename to xtldr/protocol.cc index b931d41..398a265 100644 --- a/xtldr/protocol.c +++ b/xtldr/protocol.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/protocol.c + * FILE: xtldr/protocol.cc * DESCRIPTION: XT Boot Loader protocol support * DEVELOPERS: Rafal Kupiec */ @@ -45,7 +45,7 @@ BlCloseProtocol(IN PEFI_HANDLE Handle, */ XTCDECL EFI_STATUS -BlFindBootProtocol(IN PWCHAR SystemType, +BlFindBootProtocol(IN PCWSTR SystemType, OUT PEFI_GUID BootProtocolGuid) { PXTBL_KNOWN_BOOT_PROTOCOL ProtocolEntry; @@ -167,8 +167,8 @@ BlLoadModule(IN PWCHAR ModuleName) BlDebugPrint(L"Loading module '%S' ...\n", ModuleName); /* Set module path */ - RtlCopyMemory(ModuleFileName, ModuleName, sizeof(ModuleFileName) / sizeof(WCHAR)); - RtlConcatenateWideString(ModuleFileName, L".EFI", 0); + RtlCopyMemory(ModuleFileName, ModuleName, (RtlWideStringLength(ModuleName, 0) + 1) * sizeof(WCHAR)); + RtlConcatenateWideString(ModuleFileName, (PWCHAR)L".EFI", 0); /* Open EFI volume */ Status = BlOpenVolume(NULLPTR, &DiskHandle, &FsHandle); @@ -179,11 +179,11 @@ BlLoadModule(IN PWCHAR ModuleName) } /* Open XTLDR modules common directory */ - Status = FsHandle->Open(FsHandle, &DirHandle, XTBL_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0); + Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)XTBL_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0); if(Status != STATUS_EFI_SUCCESS) { /* Modules directory not found, attempt to open XTLDR architecture specific modules directory */ - Status = FsHandle->Open(FsHandle, &DirHandle, XTBL_ARCH_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0); + Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)XTBL_ARCH_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0); } /* Close FS handle */ @@ -193,14 +193,14 @@ BlLoadModule(IN PWCHAR ModuleName) if(Status != STATUS_EFI_SUCCESS) { /* Failed to open directory */ - BlCloseVolume(DiskHandle); + BlCloseVolume(&DiskHandle); return Status; } /* Read module file from disk and close directory and EFI volume */ Status = BlReadFile(DirHandle, ModuleFileName, &ModuleData, &ModuleSize); DirHandle->Close(DirHandle); - BlCloseVolume(DiskHandle); + BlCloseVolume(&DiskHandle); /* Make sure module file was read successfully */ if(Status != STATUS_EFI_SUCCESS) @@ -222,7 +222,7 @@ BlLoadModule(IN PWCHAR ModuleName) /* Setup PE/COFF EFI image headers */ DosHeader = (PPECOFF_IMAGE_DOS_HEADER)ModuleData; - PeHeader = (PPECOFF_IMAGE_PE_HEADER)(ModuleData + DosHeader->PeHeaderOffset); + PeHeader = (PPECOFF_IMAGE_PE_HEADER)((PUCHAR)ModuleData + DosHeader->PeHeaderOffset); /* Check PE/COFF image type*/ if(PeHeader->OptionalHeader32.Magic == PECOFF_IMAGE_PE_OPTIONAL_HDR64_MAGIC) @@ -244,7 +244,7 @@ BlLoadModule(IN PWCHAR ModuleName) if(RtlCompareString((PCHAR)SectionHeader[SectionIndex].Name, ".modinfo", 8) == 0) { /* Module information section found */ - SectionData = ModuleData + SectionHeader[SectionIndex].PointerToRawData; + SectionData = (PWCHAR)((PUCHAR)ModuleData + SectionHeader[SectionIndex].PointerToRawData); /* Get module information */ Status = BlpGetModuleInformation(SectionData, SectionHeader[SectionIndex].SizeOfRawData, ModuleInfo); @@ -543,7 +543,7 @@ VOID BlRegisterBootMenu(IN PVOID BootMenuRoutine) { /* Set boot menu routine */ - BlpStatus.BootMenu = BootMenuRoutine; + BlpStatus.BootMenu = (PBL_XT_BOOT_MENU)BootMenuRoutine; } /** @@ -561,7 +561,7 @@ BlRegisterBootMenu(IN PVOID BootMenuRoutine) */ XTCDECL EFI_STATUS -BlRegisterBootProtocol(IN PWCHAR SystemType, +BlRegisterBootProtocol(IN PCWSTR SystemType, IN PEFI_GUID BootProtocolGuid) { PXTBL_KNOWN_BOOT_PROTOCOL ProtocolEntry; @@ -594,7 +594,7 @@ BlRegisterBootProtocol(IN PWCHAR SystemType, } /* Set protocol properties and add it to the list */ - ProtocolEntry->SystemType = SystemType; + ProtocolEntry->SystemType = (PWCHAR)SystemType; ProtocolEntry->Guid = *BootProtocolGuid; RtlInsertTailList(&BlpBootProtocols, &ProtocolEntry->Flink); diff --git a/xtldr/shell.c b/xtldr/shell.cc similarity index 96% rename from xtldr/shell.c rename to xtldr/shell.cc index bd1d159..1ff7a88 100644 --- a/xtldr/shell.c +++ b/xtldr/shell.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/shell.c + * FILE: xtldr/shell.cc * DESCRIPTION: XT Boot Loader shell * DEVELOPERS: Rafal Kupiec */ diff --git a/xtldr/textui.c b/xtldr/textui.cc similarity index 97% rename from xtldr/textui.c rename to xtldr/textui.cc index a65797c..fbc31c7 100644 --- a/xtldr/textui.c +++ b/xtldr/textui.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/textui.c + * FILE: xtldr/textui.cc * DESCRIPTION: Text console User Interface (TUI) support for XT Boot Loader * DEVELOPERS: Rafal Kupiec * Aiken Harris @@ -105,7 +105,7 @@ BlDisplayBootMenu() { /* Draw menu entry */ BlpDrawBootMenuEntry(&Handle, MenuEntries[TopVisibleEntry + Index].EntryName, - Index, (TopVisibleEntry + Index) == HighligtedEntryId); + Index, (BOOLEAN)((TopVisibleEntry + Index) == HighligtedEntryId)); } /* Clear redraw entries flag */ @@ -214,9 +214,9 @@ BlDisplayBootMenu() /* Redraw new highlighted entry and the old one */ BlpDrawBootMenuEntry(&Handle, MenuEntries[OldHighligtedEntryId].EntryName, - OldHighligtedEntryId - TopVisibleEntry, FALSE); + OldHighligtedEntryId - TopVisibleEntry, (BOOLEAN)FALSE); BlpDrawBootMenuEntry(&Handle, MenuEntries[HighligtedEntryId].EntryName, - HighligtedEntryId - TopVisibleEntry, TRUE); + HighligtedEntryId - TopVisibleEntry, (BOOLEAN)TRUE); } } else if(Key.ScanCode == 0x02) @@ -239,9 +239,9 @@ BlDisplayBootMenu() /* Redraw new highlighted entry and the old one */ BlpDrawBootMenuEntry(&Handle, MenuEntries[OldHighligtedEntryId].EntryName, - OldHighligtedEntryId - TopVisibleEntry, FALSE); + OldHighligtedEntryId - TopVisibleEntry, (BOOLEAN)FALSE); BlpDrawBootMenuEntry(&Handle, MenuEntries[HighligtedEntryId].EntryName, - HighligtedEntryId - TopVisibleEntry, TRUE); + HighligtedEntryId - TopVisibleEntry, (BOOLEAN)TRUE); } } else if(Key.ScanCode == 0x09) @@ -392,9 +392,9 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) XTBL_DIALOG_HANDLE Handle; BOOLEAN RedrawEditMenu, RedrawEntries; EFI_INPUT_KEY Key; - UINT_PTR EventIndex; - PWCHAR NewValue, OptionName, OriginalValue, Value, ValueToEdit; - CONST PWCHAR *EditableOptions; + UINT_PTR EventIndex; + PWCHAR NewValue, OriginalValue, Value, ValueToEdit; + PCWSTR OptionName, *EditableOptions; EFI_STATUS Status; /* Draw edit menu */ @@ -441,7 +441,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) /* Draw menu entry */ BlGetBootOptionValue(MenuEntry->Options, EditableOptions[TopVisibleEntry + Index], &Value); BlpDrawEditMenuEntry(&Handle, EditableOptions[TopVisibleEntry + Index], Value, Index, - (TopVisibleEntry + Index) == HighligtedOptionId); + (BOOLEAN)((TopVisibleEntry + Index) == HighligtedOptionId)); /* Free allocated value string if needed */ if(Value != NULLPTR) @@ -468,7 +468,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) /* If the original value is NULLPTR, use an empty string for editing */ if(OriginalValue == NULLPTR) { - ValueToEdit = L""; + ValueToEdit = (PWCHAR)L""; } else { @@ -516,7 +516,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) /* Redraw old highlighted entry */ BlGetBootOptionValue(MenuEntry->Options, EditableOptions[OldHighligtedOptionId], &Value); - BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, FALSE); + BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, (BOOLEAN)FALSE); /* Free allocated value string if needed */ if(Value != NULLPTR) @@ -526,7 +526,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) /* Redraw new highlighted entry */ BlGetBootOptionValue(MenuEntry->Options, EditableOptions[HighligtedOptionId], &Value); - BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, TRUE); + BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, (BOOLEAN)TRUE); /* Free allocated value string if needed */ if(Value != NULLPTR) @@ -555,7 +555,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) /* Redraw old highlighted entry */ BlGetBootOptionValue(MenuEntry->Options, EditableOptions[OldHighligtedOptionId], &Value); - BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, FALSE); + BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, (BOOLEAN)FALSE); /* Free allocated value string if needed */ if(Value != NULLPTR) @@ -565,7 +565,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) /* Redraw new highlighted entry */ BlGetBootOptionValue(MenuEntry->Options, EditableOptions[HighligtedOptionId], &Value); - BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, TRUE); + BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, (BOOLEAN)TRUE); /* Free allocated value string if needed */ if(Value != NULLPTR) @@ -640,8 +640,8 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry) */ XTCDECL VOID -BlDisplayErrorDialog(IN PWCHAR Caption, - IN PWCHAR Message) +BlDisplayErrorDialog(IN PCWSTR Caption, + IN PCWSTR Message) { XTBL_DIALOG_HANDLE Handle; EFI_INPUT_KEY Key; @@ -693,8 +693,8 @@ BlDisplayErrorDialog(IN PWCHAR Caption, */ XTCDECL VOID -BlDisplayInfoDialog(IN PWCHAR Caption, - IN PWCHAR Message) +BlDisplayInfoDialog(IN PCWSTR Caption, + IN PCWSTR Message) { XTBL_DIALOG_HANDLE Handle; EFI_INPUT_KEY Key; @@ -749,8 +749,8 @@ BlDisplayInfoDialog(IN PWCHAR Caption, */ XTCDECL VOID -BlDisplayInputDialog(IN PWCHAR Caption, - IN PWCHAR Message, +BlDisplayInputDialog(IN PCWSTR Caption, + IN PCWSTR Message, IN OUT PWCHAR *InputFieldText) { SIZE_T InputFieldLength, TextCursorPosition, TextIndex, TextPosition; @@ -962,8 +962,8 @@ BlDisplayInputDialog(IN PWCHAR Caption, */ XTCDECL XTBL_DIALOG_HANDLE -BlDisplayProgressDialog(IN PWCHAR Caption, - IN PWCHAR Message, +BlDisplayProgressDialog(IN PCWSTR Caption, + IN PCWSTR Message, IN UCHAR Percentage) { XTBL_DIALOG_HANDLE Handle; @@ -1004,7 +1004,7 @@ BlDisplayProgressDialog(IN PWCHAR Caption, XTCDECL VOID BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message, + IN PCWSTR Message, IN UCHAR Percentage) { /* Check if message needs an update */ @@ -1034,7 +1034,7 @@ BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, XTCDECL VOID BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message) + IN PCWSTR Message) { UINT_PTR Width, Height, LineLength; SIZE_T Index, MessageLength; @@ -1268,8 +1268,8 @@ BlpDrawBootMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, XTCDECL VOID BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Caption, - IN PWCHAR Message) + IN PCWSTR Caption, + IN PCWSTR Message) { WCHAR BoxLine[XTBL_TUI_MAX_DIALOG_WIDTH]; SIZE_T CaptionLength; @@ -1545,7 +1545,7 @@ BlpDrawDialogInputField(IN PXTBL_DIALOG_HANDLE Handle, XTCDECL VOID BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message) + IN PCWSTR Message) { PWCHAR Msg, MsgLine, LastMsgLine; SIZE_T Index, Length, LineLength; @@ -1733,13 +1733,13 @@ BlpDrawEditMenu(OUT PXTBL_DIALOG_HANDLE Handle) XTCDECL EFI_STATUS BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR OptionName, - IN PWCHAR OptionValue, + IN PCWSTR OptionName, + IN PCWSTR OptionValue, IN UINT Position, IN BOOLEAN Highlighted) { BOOLEAN Allocation; - PWCHAR DisplayValue, ShortValue; + PCWSTR DisplayValue, ShortValue; UINT Index; ULONG OptionNameLength, OptionValueLength, OptionWidth; EFI_STATUS Status; @@ -1759,7 +1759,7 @@ BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, if(OptionValueLength > OptionWidth) { /* Allocate buffer for new, shortened value */ - Status = BlAllocateMemoryPool((OptionWidth + 1) * sizeof(WCHAR), (PVOID *)&ShortValue); + Status = BlAllocateMemoryPool((OptionWidth + 1) * sizeof(WCHAR), (PVOID *)&ShortValue); // This allocates PWCHAR if(Status != STATUS_EFI_SUCCESS) { /* Memory allocation failure, print debug message and return */ @@ -1768,9 +1768,9 @@ BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, } /* Copy a desired value length into the allocated buffer and append "..." */ - RtlCopyMemory(ShortValue, DisplayValue, (OptionWidth - 3) * sizeof(WCHAR)); - RtlCopyMemory(ShortValue + OptionWidth - 3, L"...", 3 * sizeof(WCHAR)); - ShortValue[OptionWidth] = L'\0'; + RtlCopyMemory((PWCHAR)ShortValue, DisplayValue, (OptionWidth - 3) * sizeof(WCHAR)); + RtlCopyMemory((PWCHAR)ShortValue + OptionWidth - 3, L"...", 3 * sizeof(WCHAR)); + ((PWCHAR)ShortValue)[OptionWidth] = L'\0'; /* Mark that allocation was made and set new display value */ Allocation = TRUE; @@ -1806,7 +1806,7 @@ BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, if(Allocation) { /* Free allocated memory */ - BlFreeMemoryPool(DisplayValue); + BlFreeMemoryPool((PVOID)DisplayValue); } /* Return success */ diff --git a/xtldr/volume.c b/xtldr/volume.cc similarity index 99% rename from xtldr/volume.c rename to xtldr/volume.cc index a5a4759..db1b0d6 100644 --- a/xtldr/volume.c +++ b/xtldr/volume.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/volume.c + * FILE: xtldr/volume.cc * DESCRIPTION: XTLDR volume support * DEVELOPERS: Rafal Kupiec * Aiken Harris @@ -563,7 +563,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, if(Status != STATUS_EFI_SUCCESS) { /* Failed to open the filesystem protocol, close volume */ - BlCloseVolume(*DiskHandle); + BlCloseVolume(DiskHandle); return Status; } @@ -572,7 +572,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, if(Status != STATUS_EFI_SUCCESS) { /* Failed to open the filesystem, close volume */ - BlCloseVolume(*DiskHandle); + BlCloseVolume(DiskHandle); return Status; } @@ -602,7 +602,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, XTCDECL EFI_STATUS BlReadFile(IN PEFI_FILE_HANDLE DirHandle, - IN CONST PWCHAR FileName, + IN PCWSTR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize) { @@ -614,7 +614,7 @@ BlReadFile(IN PEFI_FILE_HANDLE DirHandle, UINT_PTR ReadSize; SIZE_T Pages; - Status = DirHandle->Open(DirHandle, &FileHandle, FileName, EFI_FILE_MODE_READ, + Status = DirHandle->Open(DirHandle, &FileHandle, (PWCHAR)FileName, EFI_FILE_MODE_READ, EFI_FILE_READ_ONLY | EFI_FILE_HIDDEN | EFI_FILE_SYSTEM); if(Status != STATUS_EFI_SUCCESS) { diff --git a/xtldr/xtldr.c b/xtldr/xtldr.cc similarity index 97% rename from xtldr/xtldr.c rename to xtldr/xtldr.cc index 37d2f74..7f0cae6 100644 --- a/xtldr/xtldr.c +++ b/xtldr/xtldr.cc @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/xtldr.c + * FILE: xtldr/xtldr.cc * DESCRIPTION: XTOS UEFI Boot Loader * DEVELOPERS: Rafal Kupiec */ @@ -55,15 +55,17 @@ BlInitializeBootLoader() { /* Protocol opened successfully, print useful debug information */ BlConsolePrint(L"\n---------- BOOTLOADER DEBUG ----------\n" - L"Pointer Size : %d\n" - L"Image Base Address: %P\n" - L"Image Base Size : 0x%lX\n" - L"Image Revision : 0x%lX\n" + L"Pointer Size : %d\n" + L"Image Base Address : %P\n" + L"Image Base Size : 0x%lX\n" + L"Image Revision : 0x%lX\n" + L"Secure Boot Status : %zd\n" L"--------------------------------------\n", sizeof(PVOID), LoadedImage->ImageBase, LoadedImage->ImageSize, - LoadedImage->Revision); + LoadedImage->Revision, + BlpStatus.SecureBoot); BlSleepExecution(3000); }