⛏️ index : haiku.git

/*
 * Copyright 2016-2024, Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */


#include <boot/platform.h>
#include <kernel/kernel.h>

#include "efi_platform.h"


extern "C" ssize_t
platform_allocate_heap_region(size_t _size, void** _base)
{
	size_t pages = HOWMANY(_size, B_PAGE_SIZE);
	efi_physical_addr base;
	if (kBootServices->AllocatePages(AllocateAnyPages, EfiLoaderData, pages, &base) != EFI_SUCCESS)
		return B_NO_MEMORY;

	*_base = (void*)base;
	return pages * B_PAGE_SIZE;
}


extern "C" void
platform_free_heap_region(void* base, size_t size)
{
	kBootServices->FreePages((efi_physical_addr)base, size / B_PAGE_SIZE);
}