1354 Commits

Author SHA1 Message Date
eebbbf0b16
luna -> libluna 2023-02-27 15:19:18 +01:00
32dc5473a5
TmpFS: Use StaticString<128> instead of char[128] 2023-02-27 15:14:07 +01:00
76f9bd8112
luna: Add StaticString, an OOP char[] 2023-02-27 15:13:23 +01:00
55b430a4fd
TmpFS: Use a fixed char array in DirInode's Entry instead of OwnedStringView 2023-02-27 15:04:29 +01:00
19b72fe779
luna: Add strlcpy() 2023-02-27 15:03:22 +01:00
ec146caeea
Vector: Fix try_append (hopefully)
Still doesn't work with OwnedStringViews inside of structs.
2023-02-27 15:02:55 +01:00
7f1884213a
InitRD: Use MMU::translate_physical_address instead of allocating VM
This one is a perfect candidate, since we're just mapping a fixed continuous range of physical memory to virtual memory.
2023-02-27 13:31:36 +01:00
3654cc5bee
MemoryManager: Initialize KernelVM at the end of init()
KernelVM is not needed for MMU's init process anymore.
2023-02-27 13:31:36 +01:00
a0252e42a4
x86_64: Remove recursive mapping related things from MMU.h 2023-02-27 13:31:36 +01:00
2038ee1929
x86_64/MMU: Do not allocate level 1 page tables for huge page entries
This would leak memory, since we would never end up using them.
2023-02-27 13:31:36 +01:00
9af6a3f30f
MemoryManager: Reuse the existing mapping of physical memory that MMU has 2023-02-27 13:31:36 +01:00
ff01f49b41
x86_64/MMU: Map the physical address space using huge pages 2023-02-27 13:31:35 +01:00
efdd64736f
x86_64: Allow mapping huge pages, but don't do it yet 2023-02-27 13:31:35 +01:00
9da5204079
x86_64/MMU: Copy from the mapped kernel directory instead of the physical version 2023-02-27 13:31:35 +01:00
78cea0a47e
x86_64/MMU: Map all physical memory into the higher half instead of using recursive mapping
This still has a few problems. Notably, we are not using huge pages for this mapping, which would be a lot more efficient.
Right now, used memory is 8.1 MiB at boot for a 256MiB system.
But after improving it, this system will be much better than recursive mapping.
fork() will be MUCH easier to implement, for example.
2023-02-27 13:31:35 +01:00
5b43345b7d
kernel: Implement creating file inodes in tmpfs directories 2023-02-25 19:22:05 +01:00
9248a5b3cc
tmpfs: make the root inode a DirInode instead of a FileInode 2023-02-25 19:08:55 +01:00
cca4743a51
tmpfs: add DirInode skeleton 2023-02-25 19:06:50 +01:00
0635f1c243
Update README.md with realism 2023-02-25 18:19:00 +01:00
b71d899b52
tmpfs: rename tmpfs::Inode to tmpfs::FileInode 2023-02-25 18:11:39 +01:00
05b627d037
tmpfs: Make m_next_inode_number atomic 2023-02-25 18:06:23 +01:00
6daad7787a
kernel: Rename FileSystem::root() to root_inode() and add a shortcut for the root filesystem's root inode 2023-02-25 18:05:25 +01:00
ddc4692671
kernel: Make a factory function for filesystem creation of inodes, and add inode numbers
Now every filesystem must provide fs->create_file_inode() for new inodes :)
2023-02-25 18:03:11 +01:00
5edd316198
kernel: Add a subclass of VFS::Inode to make it easier to implement file inodes 2023-02-25 17:54:01 +01:00
045efc7046
kernel, luna: Port non-VFS changes over from pull request
OwnedPtr, SharedPtr: Add operator bool
Option, Result: Make try_move_value() non-const since it modifies the Option
kernel: Switch to a stack we control for the main task as soon as we leave early boot
Heap: Fix GPF caused when making many small allocations
Heap: Avoid accessing a block after it's potentially deleted
luna: Skip UBSAN.cpp in CMakeLists as that's not implemented yet
luna: Use spinlocks in the heap implementation
kernel, luna: Move Spinlock.h to luna
Option: Use __builtin_launder to ensure that the compiler doesn't label this as UB
SharedPtr: Implement make_shared using adopt_shared
SharedPtr: Delete ptr on failure in all adopt_shared* functions
2023-02-25 17:47:58 +01:00
6fc02e042a
SharedPtr: Implement make_shared using adopt_shared 2023-02-25 17:45:41 +01:00
620810d720
SharedPtr: Delete ptr on failure in all adopt_shared* functions 2023-02-25 17:45:41 +01:00
32ada00b72
kernel: Add a guard page to the bootstrap stack so that we can catch more stack overflows 2023-02-25 17:45:41 +01:00
dc795ff491
luna: Introduce fail(...), a replacement for expect(false, ...) 2023-02-25 17:45:40 +01:00
5f6a659fa1
kernel: Enable UBSAN when building in debug mode 2023-02-25 17:45:40 +01:00
d82b3f809b
luna: Add UB sanitizer, for both kernel-space and userspace 2023-02-25 17:45:40 +01:00
96a213ec5c
libc: Make dbgln() also print a newline in userspace
Previously, dbgln() only printed a newline in kernel-space.
2023-02-25 17:45:40 +01:00
e9e1bef89c
OwnedPtr, SharedPtr: Add operator bool 2023-02-25 16:27:36 +01:00
ae22321648
Option, Result: Make try_move_value() non-const since it modifies the Option 2023-02-25 16:22:11 +01:00
d842443869
kernel: Switch to a stack we control for the main task as soon as we leave early boot
This is probably pointless as the main task only exists up until the point where the Scheduler starts running, but some init code was running into a stack overflow due to the fact that we only had one bootloader-provided page of stack.

This should probably be changed afterwards.
2023-02-18 00:18:42 +01:00
37bbc04719
Heap: Fix GPF caused when making many small allocations
Apparently space was too tight to split(), but we did it anyways, corrupting the next block.
This patch fixes this behavior.
2023-02-17 22:47:15 +01:00
4697a16206
Heap: Avoid accessing a block after it's potentially deleted 2023-02-14 20:17:31 +01:00
08d5d727ee
luna: Skip UBSAN.cpp in CMakeLists as that's not implemented yet 2023-02-14 20:10:02 +01:00
38bd3d3eef
luna: Use spinlocks in the heap implementation 2023-02-14 20:07:30 +01:00
4e88a7482c
kernel, luna: Move Spinlock.h to luna 2023-02-14 20:05:00 +01:00
6eff41e7af
Option: Use __builtin_launder to ensure that the compiler doesn't label this as UB 2023-02-14 20:03:29 +01:00
79078ff21e
SharedPtr: Implement make_shared using adopt_shared 2023-02-14 19:59:44 +01:00
cb4246b98d
kernel: Start working on a VFS implementation using OOP and SharedPtr 2023-02-03 22:20:00 +01:00
51024f879d
SharedPtr: Delete ptr on failure in all adopt_shared* functions 2023-02-03 22:20:00 +01:00
89958fbc74
kernel: Show a more technical message on failure to remap kernel data sections 2023-02-02 21:26:07 +01:00
c05a87c7ff
kernel: Reenable the text console on panic 2023-02-01 22:58:31 +01:00
e9a009478f
SharedPtr: Fixes and support for casting to other SharedPtr types 2023-01-31 19:59:06 +01:00
3a84e4998c
kernel/Thread: Add FIXME 2023-01-31 17:02:49 +01:00
35501407c1
kernel: Stop shouting when creating threads 2023-01-25 21:25:34 +01:00
fd0e29ede5
kernel: Add FIXME in copy_to_user()/copy_from_user() 2023-01-25 21:22:14 +01:00