UnnamedOS
pmm.h
Go to the documentation of this file.
1 
7 #ifndef MEM_PMM_H
8 #define MEM_PMM_H
9 
10 #include <stdint.h>
11 
13 typedef enum {
14  PMM_UNUSED, PMM_RESERVED, PMM_KERNEL, PMM_USER
15 } pmm_flags_t;
16 
17 void pmm_init();
18 uint32_t pmm_get_page(void* ptr, uint32_t offset);
19 void* pmm_get_address(uint32_t page, uint32_t offset);
20 void pmm_use(void* ptr, size_t len, pmm_flags_t flags, char* tag);
21 void* pmm_alloc(size_t len, pmm_flags_t flags);
22 void pmm_free(void* ptr, size_t len);
23 pmm_flags_t pmm_check(void* ptr);
24 void pmm_dump(void* ptr, size_t len);
26 #endif
27 
void pmm_free(void *ptr, size_t len)
Frees page frames.
Definition: pmm.c:196
void pmm_init()
Initializes the PMM.
Definition: pmm.c:87
void pmm_dump(void *ptr, size_t len)
Dumps information on page frames for a given memory range.
Definition: pmm.c:215
uint32_t pmm_get_page(void *ptr, uint32_t offset)
Returns to which page a given memory address belongs.
Definition: pmm.c:120
pmm_flags_t pmm_check(void *ptr)
Returns whether a page frame is used or unused.
Definition: pmm.c:206
pmm_flags_t
information on who uses a page frame (needs to fit in TYPE_BITS)
Definition: pmm.h:13
void pmm_use(void *ptr, size_t len, pmm_flags_t flags, char *tag)
Marks page frames for a given memory range as used or unused.
Definition: pmm.c:141
void * pmm_alloc(size_t len, pmm_flags_t flags)
Allocates page frames.
Definition: pmm.c:183
uint32_t pmm_get_highest_kernel_page()
Returns the highest page used by the kernel.
Definition: pmm.c:235
void * pmm_get_address(uint32_t page, uint32_t offset)
Returns a memory address belonging to a given page.
Definition: pmm.c:130