712f4f5e51
KernelHeap: Add more debug logging
2022-10-20 18:49:33 +02:00
92634048fc
UserHeap: some nice improvements
2022-10-17 18:49:19 +02:00
64f5078494
Kernel, libc: Implement fork()
...
This time for real.
Also, add a new per-user-task virtual address allocator (UserHeap), so that mmap'ed pages are in user range and can be copied.
2022-10-17 18:43:35 +02:00
682be58d97
AddressSpace: copy instead of linking
2022-10-17 17:24:33 +02:00
68403dc029
Kernel: Make AddressSpaces reference-counted
2022-10-15 17:40:33 +02:00
1c3377fc98
Prepare for cloning address spaces, not there yet
2022-10-14 18:17:57 +02:00
26211bd49f
It (almost) works now
...
The only thing doing weird stuff is exec(), so that's commented out and throws ENOSYS right now.
But we have two user tasks running in parallel, isolated from each other!
2022-10-14 16:46:00 +02:00
24272c57ef
Almost there!
2022-10-13 21:55:51 +02:00
ee712432bd
Some more multiple address space stuff
...
This page-faults. This is because the memory where the ELF should be is all zeroes, which the CPU tries to interpret.
2022-10-13 21:14:39 +02:00
229b06c63b
Add basic address space infrastructure
2022-10-13 19:19:51 +02:00
83e6b8cd21
VMM: Fix naming convention
2022-10-13 18:42:53 +02:00
57482e4e93
VMM: Make it even nicer
2022-10-13 18:15:52 +02:00
b360307f41
VMM: Make it so much gooder
...
There are still some fixes to be made, but I think this is already way cleaner than before.
2022-10-13 17:58:13 +02:00
69a9f7f06a
Kernel: Move VMM from a class to a namespace
...
Also, rename the ugly Paging::VirtualMemoryManager name to just 'VMM'. Which is now used instead of kernelVMM.
2022-10-12 20:02:25 +02:00
97eacc027e
Kernel: Use PAGE_SIZE in more places
2022-10-12 13:05:57 +02:00
abcf1b6118
Define PAGE_SIZE as 4096 and use it everywhere instead of using 4096 as a magic number
2022-10-08 14:52:28 +02:00
594d79143e
Kernel: enable -Wconversion
2022-10-06 17:13:34 +02:00
952d8fa294
Be more strict with warnings
2022-10-05 17:34:22 +02:00
8f310dd307
PMM: Map the page bitmap to kernel heap once the PMM and VMM are both initialized
2022-10-04 18:36:09 +02:00
e769cb45a7
MemoryManager: add get_page_at and get_pages_at functions to map any physical memory at a fixed virtual address (inverse of get_mapping and get_mappings)
2022-10-01 12:12:50 +02:00
522d74b65d
Add is_user_address and is_kernel_address functions
2022-09-29 19:30:42 +02:00
a078a11dde
Move PMM and VMM initialization into MemoryManager::init
2022-09-25 17:38:17 +02:00
704a23d0ad
Sanity checks
2022-09-24 23:09:39 +02:00
6bd3529f32
Port liballoc to get proper kmalloc/kcalloc/krealloc/kfree functions.
...
Yes, that's not completely-from-scratch.
But let's be honest, am I going to do everything from scratch? Probably not. I'm not making my own bootloader.
And making a proper smaller-than-4-KB allocator is not something I want to do.
Plus, liballoc works perfectly in this rewrite, seeing as the MM code actually works, instead of leaking all your poor memory
And liballoc_{lock, unlock} can be actually defined, since we have spinlocks here!
2022-09-24 22:40:59 +02:00
3891d0c52e
Rename KernelMemoryManager to MemoryManager
...
Kind of a more catchy name, isn't it?
2022-09-24 21:45:13 +02:00
46b7dab847
Remove RangeAllocator and make a PMM namespace
2022-09-24 21:27:45 +02:00
c3e5251687
Some more userland and font failing
2022-09-23 16:41:43 +02:00
11dd165a8e
Scheduler: add proper support for user tasks (still faults though)
2022-09-22 08:14:04 +02:00
543fe2885f
Add support for user pages
2022-09-22 07:57:30 +02:00
b4484e951d
LOTS MORE LOGGING. which is great, of course.
2022-09-07 19:41:08 +02:00
1820286d8b
stuff
2022-09-07 10:33:22 +02:00
bd0a24097f
Add a KernelMemoryManager namespace to wrap PMM + VMM
2022-09-06 18:08:15 +02:00
0fbc68ca88
Finish VMM
2022-09-06 13:49:17 +02:00
8bff2ee0f5
Add a RangeAllocator which serves as a physical memory allocator
2022-09-06 13:21:54 +02:00
6a6be3292d
Memory::get_system and Memory::get_usable
2022-09-05 17:13:12 +02:00
1b727a66ea
Ready. Set. Go!
2022-09-05 16:13:51 +02:00