rulimine/common/mm/pmm.h

69 lines
1.9 KiB
C
Raw Normal View History

2020-09-20 13:03:44 +03:00
#ifndef __MM__PMM_H__
#define __MM__PMM_H__
2020-06-05 18:51:33 +03:00
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
struct memmap_entry {
uint64_t base;
uint64_t length;
uint32_t type;
uint32_t unused;
};
2020-06-05 18:51:33 +03:00
#define MEMMAP_USABLE 1
#define MEMMAP_RESERVED 2
#define MEMMAP_ACPI_RECLAIMABLE 3
#define MEMMAP_ACPI_NVS 4
#define MEMMAP_BAD_MEMORY 5
#define MEMMAP_BOOTLOADER_RECLAIMABLE 0x1000
#define MEMMAP_KERNEL_AND_MODULES 0x1001
2021-04-07 03:10:28 +03:00
#define MEMMAP_FRAMEBUFFER 0x1002
2021-03-05 08:10:58 +03:00
#define MEMMAP_EFI_RECLAIMABLE 0x2000
struct meminfo {
size_t uppermem;
size_t lowermem;
};
struct meminfo mmap_get_info(size_t mmap_count, struct memmap_entry *mmap);
#if defined (BIOS)
extern struct memmap_entry memmap[];
extern size_t memmap_entries;
#endif
#if defined (UEFI)
extern struct memmap_entry *memmap;
extern size_t memmap_entries;
extern struct memmap_entry *untouched_memmap;
extern size_t untouched_memmap_entries;
#endif
extern bool allocations_disallowed;
2020-06-05 18:51:33 +03:00
void init_memmap(void);
struct memmap_entry *get_memmap(size_t *entries);
struct memmap_entry *get_raw_memmap(size_t *entry_count);
void print_memmap(struct memmap_entry *mm, size_t size);
2022-09-25 21:37:17 +03:00
bool memmap_alloc_range_in(struct memmap_entry *m, size_t *_count,
uint64_t base, uint64_t length, uint32_t type, uint32_t overlay_type, bool do_panic, bool simulation, bool new_entry);
bool memmap_alloc_range(uint64_t base, uint64_t length, uint32_t type, uint32_t overlay_type, bool panic, bool simulation, bool new_entry);
void pmm_randomise_memory(void);
2020-09-20 13:03:44 +03:00
void *ext_mem_alloc(size_t count);
void *ext_mem_alloc_type(size_t count, uint32_t type);
void *ext_mem_alloc_type_aligned(size_t count, uint32_t type, size_t alignment);
2020-09-20 13:03:44 +03:00
void *conv_mem_alloc(size_t count);
2020-06-05 18:51:33 +03:00
2021-10-21 02:27:05 +03:00
void pmm_free(void *ptr, size_t length);
#if defined (UEFI)
2021-05-06 05:31:05 +03:00
void pmm_release_uefi_mem(void);
2021-03-10 03:23:44 +03:00
#endif
2020-06-05 18:51:33 +03:00
#endif