about summary refs log tree commit diff stats
path: root/tools/iso/kernel.soso/vmm.h
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-01-01 18:22:19 -0800
committerKartik Agaram <vc@akkartik.com>2020-01-01 18:42:48 -0800
commit65409d2312e702a48d3cf5b32479d25266bda3c3 (patch)
tree62a7262fce61f2302109246da4536ce6f8e9ef80 /tools/iso/kernel.soso/vmm.h
parenta6da50ad30d2e1825575ffef497ab450a8f26e94 (diff)
downloadmu-65409d2312e702a48d3cf5b32479d25266bda3c3.tar.gz
5858
Move script to create a Soso boot image into a sub-directory.

I'm trying to streamline newcomer attention to just a couple of use cases.
Diffstat (limited to 'tools/iso/kernel.soso/vmm.h')
-rw-r--r--tools/iso/kernel.soso/vmm.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/iso/kernel.soso/vmm.h b/tools/iso/kernel.soso/vmm.h
new file mode 100644
index 00000000..f7955afb
--- /dev/null
+++ b/tools/iso/kernel.soso/vmm.h
@@ -0,0 +1,48 @@
+#ifndef VMM_H
+#define VMM_H
+
+#include "common.h"
+
+typedef struct Process Process;
+typedef struct List List;
+
+extern uint32 *gKernelPageDirectory;
+
+extern uint8 gKernelPageHeapBitmap[];
+
+
+#define SET_PAGEFRAME_USED(bitmap, pageIndex)	bitmap[((uint32) pageIndex)/8] |= (1 << (((uint32) pageIndex)%8))
+#define SET_PAGEFRAME_UNUSED(bitmap, p_addr)	bitmap[((uint32) p_addr/PAGESIZE_4M)/8] &= ~(1 << (((uint32) p_addr/PAGESIZE_4M)%8))
+#define IS_PAGEFRAME_USED(bitmap, pageIndex)	(bitmap[((uint32) pageIndex)/8] & (1 << (((uint32) pageIndex)%8)))
+
+#define SET_PAGEHEAP_USED(pageIndex)	gKernelPageHeapBitmap[((uint32) pageIndex)/8] |= (1 << (((uint32) pageIndex)%8))
+#define SET_PAGEHEAP_UNUSED(p_addr)	gKernelPageHeapBitmap[((uint32) p_addr/PAGESIZE_4K)/8] &= ~(1 << (((uint32) p_addr/PAGESIZE_4K)%8))
+#define IS_PAGEHEAP_USED(pageIndex)	(gKernelPageHeapBitmap[((uint32) pageIndex)/8] & (1 << (((uint32) pageIndex)%8)))
+
+char* getPageFrame4M();
+void releasePageFrame4M(uint32 p_addr);
+
+uint32 *getPdFromReservedArea4K();
+void releasePdFromReservedArea4K(uint32 *);
+
+void initializeMemory(uint32 high_mem);
+
+uint32 *createPd();
+void destroyPd(uint32 *);
+uint32 *copyPd(uint32* pd);
+
+BOOL addPageToPd(uint32* pd, char *v_addr, char *p_addr, int flags);
+BOOL removePageFromPd(uint32* pd, char *v_addr, BOOL releasePageFrame);
+
+void enablePaging();
+void disablePaging();
+
+uint32 getTotalPageCount();
+uint32 getUsedPageCount();
+uint32 getFreePageCount();
+
+void initializeProcessMmap(Process* process);
+void* mapMemory(Process* process, uint32 nBytes, uint32 pAddress, List* pAddressList);
+BOOL unmapMemory(Process* process, uint32 nBytes, uint32 vAddress);
+
+#endif // VMM_H