37 lines
895 B
C
37 lines
895 B
C
#ifndef KERNEL_MM_PMM_H
|
|
#define KERNEL_MM_PMM_H
|
|
|
|
#include "type.h"
|
|
#include "lib/avl_tree.h"
|
|
#include "lib/linked_list.h"
|
|
#include "kernel/mm/mem.h"
|
|
#include "kernel/ke/atomic.h"
|
|
#include "status.h"
|
|
|
|
//#define PMM_PAGE_ATTR_FREE_BIT 0
|
|
//#define PMM_PAGE_ATTR_PAGED_BIT 1
|
|
//
|
|
//typedef struct
|
|
//{
|
|
// uint32 attr;
|
|
//} k_physical_page_attr_t;
|
|
|
|
|
|
sx_status SXAPI sx_pmm_init(pmm_info_t *info);
|
|
|
|
sx_status SXAPI mm_alloc_page(uintptr *out);
|
|
|
|
sx_status SXAPI mm_free_page(uintptr base);
|
|
|
|
sx_status SXAPI mm_query_page_attr(uintptr base,
|
|
int32 *out);
|
|
|
|
// TODO: implement these somehow, i might just reserve the first 16MB for these
|
|
int32 SXAPI mm_alloc_contiguous_pages(uint64 num_of_page,
|
|
uintptr highest_p_addr,
|
|
uintptr *out);
|
|
|
|
int32 SXAPI mm_free_contiguous_pages(uintptr base);
|
|
|
|
#endif
|