ApertureOS
virt_mem_manager.h
Go to the documentation of this file.
1 #ifndef _VIRT_MEM_MAN_H_
2 #define _VIRT_MEM_MAN_H_
3 
4 #include "types.h"
5 
6 #define PAGE_DIR_STORAGE_POOL_SIZE MB(18)
7 #define MEMIO_TOP_BASE 0xF0000000
8 #define VIRTUALIZE_HIGHER_MEM_OFFSET(a) (((uint32_t)a - 0xF0000000) + 0x10000000)
9 
10 typedef enum
11 {
16 } MEM_TYPES;
17 
18 typedef enum
19 {
20  MEM_WRITE = 2,
21  MEM_READ = 4,
24 
25 typedef enum
26 {
30 
31 typedef uint64_t* VirtMemMan_Instance;
32 
33 void
34 virtMemMan_Setup(void);
35 
38 
41 
44 
45 void
48 
49 void
51 
52 void*
53 virtMemMan_FindEmptyAddress(size_t size,
54  MEM_SECURITY_PERMS privLevel);
55 
56 uint32_t
57 virtMemMan_Map(uint32_t v_address,
58  uint64_t phys_address,
59  size_t size,
60  MEM_TYPES type,
61  MEM_ACCESS_PERMS perms,
62  MEM_SECURITY_PERMS privLevel);
63 
64 void
65 virtMemMan_UnMap(void* v_address,
66  size_t size);
67 
68 void
70 
71 uint64_t
72 virtMemMan_GetPhysAddress(void *virt_addr);
73 
74 uint64_t
76  void *virt_addr);
77 
78 void*
80  size_t size,
81  MEM_SECURITY_PERMS privLevel);
82 
83 uint32_t
85  uint32_t v_address,
86  uint64_t phys_address,
87  size_t size,
88  MEM_TYPES type,
89  MEM_ACCESS_PERMS perms,
90  MEM_SECURITY_PERMS privLevel);
91 
92 void
94  void* v_address,
95  size_t size);
96 
97 #endif /* end of include guard: _VIRT_MEM_MAN_H_ */
Definition: virt_mem_manager.h:22
MEM_SECURITY_PERMS
Definition: virt_mem_manager.h:25
Definition: virt_mem_manager.h:14
uint32_t virtMemMan_MapInst(VirtMemMan_Instance curInstance_virt, uint32_t v_address, uint64_t phys_address, size_t size, MEM_TYPES type, MEM_ACCESS_PERMS perms, MEM_SECURITY_PERMS privLevel)
Definition: virt_mem_manager.c:202
Definition: virt_mem_manager.h:27
VirtMemMan_Instance virtMemMan_CreateInstance(void)
Definition: virt_mem_manager.c:97
Definition: virt_mem_manager.h:15
void virtMemMan_Setup(void)
Definition: virt_mem_manager.c:23
void virtMemMan_UnMap(void *v_address, size_t size)
Definition: virt_mem_manager.c:566
Definition: virt_mem_manager.h:28
MEM_TYPES
Definition: virt_mem_manager.h:10
void virtMemMan_UnMapInst(VirtMemMan_Instance curInstance_virt, void *v_address, size_t size)
Definition: virt_mem_manager.c:332
void virtMemMan_ForkCurrent(VirtMemMan_Instance dst)
Definition: virt_mem_manager.c:134
void * virtMemMan_FindEmptyAddressInst(VirtMemMan_Instance curInstance_virt, size_t size, MEM_SECURITY_PERMS privLevel)
Definition: virt_mem_manager.c:140
VirtMemMan_Instance virtMemMan_GetCurrent(void)
Definition: virt_mem_manager.c:92
uint32_t virtMemMan_Map(uint32_t v_address, uint64_t phys_address, size_t size, MEM_TYPES type, MEM_ACCESS_PERMS perms, MEM_SECURITY_PERMS privLevel)
Definition: virt_mem_manager.c:549
uint64_t virtMemMan_GetPhysAddressInst(VirtMemMan_Instance curInstance_virt, void *virt_addr)
Definition: virt_mem_manager.c:393
Definition: virt_mem_manager.h:13
void virtMemMan_FreeInstance(VirtMemMan_Instance inst)
Definition: virt_mem_manager.c:443
void virtMemMan_Fork(VirtMemMan_Instance dst, VirtMemMan_Instance src)
Definition: virt_mem_manager.c:124
MEM_ACCESS_PERMS
Definition: virt_mem_manager.h:18
uint64_t * VirtMemMan_Instance
Definition: virt_mem_manager.h:31
void * virtMemMan_FindEmptyAddress(size_t size, MEM_SECURITY_PERMS privLevel)
Definition: virt_mem_manager.c:542
uint64_t virtMemMan_GetPhysAddress(void *virt_addr)
Definition: virt_mem_manager.c:536
VirtMemMan_Instance curInstance_virt
Definition: virt_mem_manager.c:13
Definition: virt_mem_manager.h:12
Definition: virt_mem_manager.h:20
Definition: virt_mem_manager.h:21
VirtMemMan_Instance virtMemMan_SetCurrent(VirtMemMan_Instance instance)
Definition: virt_mem_manager.c:84