/*++ Copyright (c) 2024, Quinn Stephens. Provided under the BSD 3-Clause license. Module Name: mm.c Abstract: Provides boot library memory manager routines. --*/ #include #include "bootlib.h" #include "mm.h" NTSTATUS BlpMmInitializeConstraints ( VOID ) /*++ Routine Description: Initializes physical address constraints. Arguments: None. Return Value: STATUS_SUCCESS if successful, --*/ { // // TODO: Implement this routine. // return STATUS_SUCCESS; } NTSTATUS BlpMmInitialize ( IN PBOOT_MEMORY_INFO MemoryInfo, IN ULONG TranslationType, IN PBOOT_LIBRARY_PARAMETERS LibraryParameters ) /*++ Routine Description: Initializes the boot memory manager. Arguments: MemoryInfo - Pointer to the memory info. TranslationType - The current translation type. LibraryParameters - Pointer to the library parameters. Return Value: STATUS_SUCCESS if successful, STATUS_INVALID_PARAMETER if TranslationType is invalid, Other NTSTATUS value if an error occurs. --*/ { NTSTATUS Status; // // Check TranslationType. // if ( TranslationType > TRANSLATION_TYPE_MAX || LibraryParameters->TranslationType > TRANSLATION_TYPE_MAX ) { DebugPrint(L"BlpMmInitialize(): TranslationType is invalid\r\n"); return STATUS_INVALID_PARAMETER; } // // Initialize memory descriptor manager. // MmMdInitialize(0, LibraryParameters); // // Initialize page allocator. // Status = MmPaInitialize(MemoryInfo, LibraryParameters->MinimumPageAllocation); if (!NT_SUCCESS(Status)) { return Status; } // // TODO: Finish this routine. // return STATUS_SUCCESS; }