X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Finclude%2Fmm_virt.h;h=4a11e7167f5370d3c10127a3db86146c517d0b67;hb=dc8801cc0b5ed911a775cfc2ea853048f7a00db1;hp=a3cae121d72b596377460678ceece8d085d7dcb4;hpb=930fe819133ddb444bc6c22df09baf788183f6ad;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/include/mm_virt.h b/Kernel/arch/x86/include/mm_virt.h index a3cae121..4a11e716 100644 --- a/Kernel/arch/x86/include/mm_virt.h +++ b/Kernel/arch/x86/include/mm_virt.h @@ -5,6 +5,8 @@ #ifndef _MM_VIRT_H #define _MM_VIRT_H +// NOTES: +// - 1PD is 0x400000 // - Memory Layout #define MM_USER_MIN 0x00200000 @@ -12,9 +14,11 @@ #define USER_STACK_TOP 0x00800000 #define USER_LIB_MAX 0xBC000000 #define MM_USER_MAX 0xBC000000 // Top load address for user libraries -#define MM_PPD_MIN 0xBC000000 // Per-Process Data -#define MM_PPD_VFS 0xBC000000 // -#define MM_PPD_CFG 0xBFFFF000 // +#define MM_PPD_MIN 0xBC000000 // Per-Process Data base +#define MM_PPD_HANDLES 0xBC000000 // - VFS Handles (Practically unlimited) +#define MM_PPD_MMAP 0xBD000000 // - MMap Entries (24b each = 0x2AAAA max) +#define MM_PPD_UNALLOC 0xBE000000 // +#define MM_PPD_CFG 0xBFFFF000 // - Per-process config entries #define MM_PPD_MAX 0xC0000000 // #define MM_KHEAP_BASE 0xC0400000 // C+4MiB @@ -23,17 +27,23 @@ #define MM_KUSER_CODE 0xCFFF0000 // 16 Pages #define MM_MODULE_MIN 0xD0000000 // Lowest Module Address #define MM_MODULE_MAX 0xE0000000 // 128 MiB -// Needs (2^36/2^12*8 bytes) -// - 2^27 bytes max = 128 MiB = 0x10000000 -// 2^12/2^3 items per page -// - 2^9 = 512 -#define MM_PAGEINFO_BASE 0xE0000000 + +// Page Info (Which VFS node owns each physical page) +// 2^32/2^12*16 +// = 2^24 = 16 MiB = 0x4000000 +// 256 items per page +#define MM_PAGENODE_BASE 0xE0000000 + +// Needs (2^32/2^12*4 bytes) +// - 2^22 bytes max = 4 MiB = 0x1000000 +// 1024 items per page +#define MM_REFCOUNT_BASE 0xE4000000 // === FUNCTIONS === extern void MM_FinishVirtualInit(void); extern void MM_SetCR3(Uint CR3); extern tPAddr MM_Clone(void); extern tVAddr MM_NewKStack(void); -extern tVAddr MM_NewWorkerStack(void); +extern tVAddr MM_NewWorkerStack(Uint *InitialStack, size_t StackSize); #endif