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
continuous-integration/drone/pr Build is passing
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
continuous-integration/drone/pr Build was killed
2023-02-25 18:19:00 +01:00
b71d899b52
tmpfs: rename tmpfs::Inode to tmpfs::FileInode
continuous-integration/drone/pr Build is passing
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 #22
...
continuous-integration/drone/pr Build is passing
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
continuous-integration/drone/pr Build is failing
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
continuous-integration/drone/pr Build is passing
2023-02-25 16:27:36 +01:00
ae22321648
Option, Result: Make try_move_value() non-const since it modifies the Option
continuous-integration/drone/pr Build is passing
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
...
continuous-integration/drone/pr Build is passing
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
...
continuous-integration/drone/pr Build is passing
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
continuous-integration/drone/pr Build is passing
2023-02-14 20:17:31 +01:00
08d5d727ee
luna: Skip UBSAN.cpp in CMakeLists as that's not implemented yet
continuous-integration/drone/pr Build is passing
2023-02-14 20:10:02 +01:00
38bd3d3eef
luna: Use spinlocks in the heap implementation
continuous-integration/drone/pr Build is failing
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
continuous-integration/drone/pr Build is passing
2023-02-14 19:59:44 +01:00
cb4246b98d
kernel: Start working on a VFS implementation using OOP and SharedPtr
continuous-integration/drone/pr Build is passing
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
continuous-integration/drone/push Build is passing
2023-02-02 21:26:07 +01:00
c05a87c7ff
kernel: Reenable the text console on panic
continuous-integration/drone/push Build is passing
2023-02-01 22:58:31 +01:00
e9a009478f
SharedPtr: Fixes and support for casting to other SharedPtr types
continuous-integration/drone/push Build is passing
2023-01-31 19:59:06 +01:00
3a84e4998c
kernel/Thread: Add FIXME
continuous-integration/drone/push Build is passing
2023-01-31 17:02:49 +01:00
35501407c1
kernel: Stop shouting when creating threads
continuous-integration/drone/push Build is passing
2023-01-25 21:25:34 +01:00
fd0e29ede5
kernel: Add FIXME in copy_to_user()/copy_from_user()
continuous-integration/drone/push Build is passing
2023-01-25 21:22:14 +01:00
8098ff0616
tools: Avoid rebuilding libc and friends every single time
...
continuous-integration/drone/push Build is passing
We do this by preserving timestamps when copying headers so CMake doesn't think they have changed.
2023-01-25 21:16:20 +01:00
635437a4a4
luna: Add a new idiomatic way to mark unused parameters as used while keeping their names
...
Just call ignore(...)
2023-01-25 21:14:44 +01:00
39042cbbd4
kernel: PCI constness updates
continuous-integration/drone/push Build is passing
2023-01-25 21:01:45 +01:00
fa29d6e9b9
kernel: Rename PCI::callback_t to PCI::Callback
continuous-integration/drone/push Build is passing
2023-01-25 20:58:59 +01:00
15c89a3592
kernel: Implement filtered PCI scans
continuous-integration/drone/push Build is passing
2023-01-23 21:24:05 +01:00
3a4ca73df7
kernel: Sync log output
continuous-integration/drone/push Build is passing
2023-01-23 20:42:34 +01:00
6677c643a5
kernel: Start scanning the PCI bus for devices
continuous-integration/drone/push Build is passing
2023-01-23 20:07:17 +01:00
de04c094e7
x86_64: Skip enabling WP for now until I find how to check for its availability
2023-01-23 20:06:45 +01:00
8cb9c14b1e
luna/Format: Make output_(pure_)integer_data take a const reference to vstate
continuous-integration/drone/push Build is passing
2023-01-22 17:36:02 +01:00
7f8a8cdcaf
kernel, libc: Add an usleep() system call and use that to implement usleep() and sleep() in libc
continuous-integration/drone/push Build is passing
2023-01-22 15:00:20 +01:00
d5b1d72396
x86_64/MMU: Map the kernel page directory to virtual memory
...
This avoids depending on the kernel address space to create a new userspace one,
since there is no physical memory access.
This was fine for a single process, since its address space was created from the kernel one
and no more address spaces were created,
but for two or more, this started to become problematic, since we would create one address space
while being in another process's address space, which has no direct mapping of physical memory.
2023-01-22 14:46:03 +01:00
a7a38d3433
Bitmap: Add a fallible variant of match_region() that does not crash if arguments are out of range
...
continuous-integration/drone/push Build is passing
This lets us call deallocate_memory() with any address and it will not crash.
2023-01-22 14:25:51 +01:00