ApertureOS
priv_phys_mem_manager.h
Go to the documentation of this file.
1 #ifndef _PRIV_PHYS_MEM_MANAGER_H_
2 #define _PRIV_PHYS_MEM_MANAGER_H_
3 
4 #include "types.h"
5 
6 #define PAGE_SIZE KB(4)
7 #define MAX_ALLOCS_PERENTRY ((PAGE_SIZE / sizeof(PhysAllocInfoEntry)) - 1)
9 
10 #define KB4_DIVISOR 5
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))
14 
17 
18 #define I_OFF(i) ((i % KB4_DIVISOR) * KB4_MAX_VAL_L)
19 
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))) & \
27  KB4_MAX_VAL_MASK)
28 
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)))
31 
34 
35 uint64_t freePageCount;
36 uint64_t totalPageCount;
37 uint64_t lastNonFullPage;
38 
39 void MemMan_Initialize();
40 void *MemMan_Alloc(uint64_t size);
41 void MemMan_Free(void *ptr, uint64_t size);
42 
43 uint64_t MemMan_CalculateBitmapIndex(uint64_t addr, size_t blockSize);
44 void MemMan_MarkUsed(uint64_t addr, uint64_t size);
45 void MemMan_MarkKB4Used(uint64_t addr, uint64_t size);
46 
47 #endif /* end of include guard: _PRIV_PHYS_MEM_MANAGER_H_ */
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
void MemMan_Initialize()
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