Commit Graph

1340 Commits

Author SHA1 Message Date
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
All checks were successful
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
Some checks reported errors
continuous-integration/drone/pr Build was killed
2023-02-25 18:19:00 +01:00
b71d899b52
tmpfs: rename tmpfs::Inode to tmpfs::FileInode
All checks were successful
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
All checks were successful
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
Some checks failed
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
All checks were successful
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
All checks were successful
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
All checks were successful
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
All checks were successful
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
All checks were successful
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
All checks were successful
continuous-integration/drone/pr Build is passing
2023-02-14 20:10:02 +01:00
38bd3d3eef
luna: Use spinlocks in the heap implementation
Some checks failed
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
All checks were successful
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
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-02 21:26:07 +01:00
c05a87c7ff
kernel: Reenable the text console on panic
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-31 19:59:06 +01:00
3a84e4998c
kernel/Thread: Add FIXME
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-31 17:02:49 +01:00
35501407c1
kernel: Stop shouting when creating threads
All checks were successful
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()
All checks were successful
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
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-25 21:01:45 +01:00
fa29d6e9b9
kernel: Rename PCI::callback_t to PCI::Callback
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-25 20:58:59 +01:00
15c89a3592
kernel: Implement filtered PCI scans
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 21:24:05 +01:00
3a4ca73df7
kernel: Sync log output
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 20:42:34 +01:00
6677c643a5
kernel: Start scanning the PCI bus for devices
All checks were successful
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
All checks were successful
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
All checks were successful
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
All checks were successful
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
cb59a4e0e3
libc: Add assert.h
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-22 12:51:30 +01:00
34a9b35037
Option, Result: Propagate caller locations when erroring out
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-22 12:00:52 +01:00