alcyone/BOOT/ENVIRON/LIB/MM/mm.c
2024-10-05 15:39:04 -04:00

109 lines
1.7 KiB
C

/*++
Copyright (c) 2024, Quinn Stephens.
Provided under the BSD 3-Clause license.
Module Name:
mm.c
Abstract:
Provides boot library memory manager routines.
--*/
#include <ntrtl.h>
#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;
DebugPrint(L"Initializing memory manager...\r\n");
//
// 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;
}
return STATUS_SUCCESS;
}