XenevaOS
Loading...
Searching...
No Matches
pmmngr.h
Go to the documentation of this file.
1
32#ifndef __PMMNGR_H__
33#define __PMMNGR_H__
34
35#include <aurora.h>
36
37
38#define AURORA_PAGE_KERNEL (1ULL<<0)
39#define AURORA_PAGE_SHM (1ULL<<1)
40#define AURORA_PAGE_DMA (1ULL<<2)
41#define AURORA_PAGE_NORMAL (1ULL << 3)
42extern void AuPmmngrInitialize(KERNEL_BOOT_INFO *info);
43
44#define PMM_INVALID_PHYS UINT64_MAX
45
53
54#ifdef ARCH_ARM64
57 uint32_t alignment_pages, uint64_t max_phys_inclusive, uint8_t page_type);
65extern bool AuPmmngrValidate(void);
66#else
77AU_EXTERN AU_EXPORT void AuPmmngrFreeBlocks(void* Addr, int Count);
81extern void AuPmmngrAddRefcount(uint64_t physaddr, uint16_t count);
84extern void AuPmmngrSetPageType(uint64_t physaddr, uint8_t flags);
85#define AuPmmngrAllocPage(type) ((uint64_t)AuPmmngrAlloc())
86#define AuPmmngrAllocPages(pages, alignment, ceiling, type) \
87 ((uint64_t)AuPmmngrAllocBlocks((int)(pages)))
88#define AuPmmngrReleasePage(physaddr) \
89 (AuPmmngrFree((void*)(uint64_t)(physaddr)), true)
90#endif
91
97
103
108extern void AuPmmngrMoveHigher();
109#endif
#define AU_EXTERN
Definition aurora.h:55
#define AU_EXPORT
Definition aurora.h:41
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_INT64 int64_t
Definition acefiex.h:164
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
ACPI_PHYSICAL_ADDRESS Address
Definition acpixf.h:637
void AuPmmngrGetStats(AuPmmStats *stats)
Definition pmmngr.c:614
bool AuPmmngrSetBackingBlock(uint64_t phys, int64_t block)
Definition pmmngr.c:588
int64_t AuPmmngrGetBackingBlock(uint64_t phys)
Definition pmmngr.c:602
bool AuPmmngrRetainPage(uint64_t phys)
Definition pmmngr.c:563
uint16_t AuPmmngrPageRefcount(uint64_t phys)
Definition pmmngr.c:578
bool AuPmmngrValidate(void)
Definition pmmngr.c:287
bool AuPmmngrReleasePages(uint64_t phys)
Definition pmmngr.c:536
void AuPmmngrInitialize(KERNEL_BOOT_INFO *info)
Definition pmmngr.cpp:136
uint64_t AuPmmngrGetUsedMem()
struct _au_pmm_stats_ AuPmmStats
struct _au_page_desc_ AuPageDesc
AuPageDesc * AuPmmngrGetPageDesc(uint64_t physaddr)
AU_EXTERN AU_EXPORT void * AuPmmngrAlloc()
Definition pmmngr.cpp:209
AU_EXTERN AU_EXPORT void AuPmmngrFreeBlocks(void *Addr, int Count)
Definition pmmngr.cpp:258
AU_EXTERN AU_EXPORT uint64_t P2V(uint64_t addr)
P2V – Physical to Virtual conversion.
Definition pmmngr.cpp:270
uint64_t AuPmmngrGetFreeMem()
Definition pmmngr.cpp:301
#define AuPmmngrReleasePage(physaddr)
Definition pmmngr.h:88
void AuPmmngrSetPageType(uint64_t physaddr, uint8_t flags)
#define AuPmmngrAllocPages(pages, alignment, ceiling, type)
Definition pmmngr.h:86
void AuPmmngrAddRefcount(uint64_t physaddr, uint16_t count)
uint16_t AuPmmngrGetRefcount(uint64_t physaddr)
AU_EXTERN AU_EXPORT void * AuPmmngrAllocBlocks(int num)
Definition pmmngr.cpp:229
void AuPmmngrMoveHigher()
AuPmmngrMoveHigher – moves the kernel to higher half of memory.
Definition pmmngr.cpp:292
uint64_t AuPmmngrGetTotalMem()
Definition pmmngr.cpp:309
AU_EXTERN AU_EXPORT uint64_t V2P(uint64_t vaddr)
V2P – Virtual to Physical conversion.
Definition pmmngr.cpp:281
AU_EXTERN AU_EXPORT void AuPmmngrFree(void *Address)
Definition pmmngr.cpp:241
#define AuPmmngrAllocPage(type)
Definition pmmngr.h:85
Definition aurora.h:116
Definition pmmngr.h:67
uint64_t phys_addr
Definition pmmngr.h:68
uint16_t refcount
Definition pmmngr.h:69
uint8_t page_type
Definition pmmngr.h:71
uint64_t last_accessed
Definition pmmngr.h:70
int64_t diskblock
Definition pmmngr.h:72
Definition pmmngr.h:46
uint64_t managed_pages
Definition pmmngr.h:47
uint64_t reserved_pages
Definition pmmngr.h:50
uint64_t unmanaged_pages
Definition pmmngr.h:51
uint64_t allocated_pages
Definition pmmngr.h:49
uint64_t free_pages
Definition pmmngr.h:48