1 #ifndef _PRIV_PHYS_MEM_MANAGER_H_
2 #define _PRIV_PHYS_MEM_MANAGER_H_
6 #define PAGE_SIZE KB(4)
7 #define MAX_ALLOCS_PERENTRY ((PAGE_SIZE / sizeof(PhysAllocInfoEntry)) - 1)
11 #define KB4_MAX_VAL 32
12 #define KB4_MAX_VAL_L 6
13 #define KB4_MAX_VAL_MASK (0xFFFFFFFF >> (32 - KB4_MAX_VAL_L))
18 #define I_OFF(i) ((i % KB4_DIVISOR) * KB4_MAX_VAL_L)
20 #define SET_FREE_BITCOUNT(i, val) \
21 (KB4_Blocks_FreeBitCount[(i) / KB4_DIVISOR] = \
22 (KB4_Blocks_FreeBitCount[(i) / KB4_DIVISOR] & \
23 ~(KB4_MAX_VAL_MASK << I_OFF((i)))) | \
24 (((val)&KB4_MAX_VAL_MASK) << I_OFF((i))))
25 #define GET_FREE_BITCOUNT(i) \
26 ((KB4_Blocks_FreeBitCount[(i) / KB4_DIVISOR] >> I_OFF((i))) & \
29 #define DEC_FREE_BITCOUNT(i) (SET_FREE_BITCOUNT(i, (GET_FREE_BITCOUNT(i) - 1)))
30 #define INC_FREE_BITCOUNT(i) (SET_FREE_BITCOUNT(i, (GET_FREE_BITCOUNT(i) + 1)))
uint64_t KB4_Blocks_Count
Definition: priv_phys_mem_manager.h:16
void MemMan_MarkUsed(uint64_t addr, uint64_t size)
uint64_t page_count
Definition: priv_phys_mem_manager.h:8
uint64_t MemMan_CalculateBitmapIndex(uint64_t addr, size_t blockSize)
Definition: phys_mem_manager.c:89
void MemMan_MarkKB4Used(uint64_t addr, uint64_t size)
Definition: phys_mem_manager.c:95
uint64_t totalPageCount
Definition: priv_phys_mem_manager.h:36
uint64_t freePageCount
Definition: priv_phys_mem_manager.h:35
void MemMan_Free(void *ptr, uint64_t size)
uint32_t MB2_Blocks_Count
Definition: priv_phys_mem_manager.h:33
uint64_t lastNonFullPage
Definition: priv_phys_mem_manager.h:37
uint64_t memory_size
Definition: priv_phys_mem_manager.h:8
void * MemMan_Alloc(uint64_t size)
uint8_t * MB2_Blocks_Bitmap
Definition: priv_phys_mem_manager.h:32
uint32_t * KB4_Blocks_Bitmap
Definition: priv_phys_mem_manager.h:15
uint64_t KB4_Blocks_FreeBitCount_EntryNum
Definition: priv_phys_mem_manager.h:16
uint32_t * KB4_Blocks_FreeBitCount
Definition: priv_phys_mem_manager.h:15