Commit Graph

109 Commits

Author SHA1 Message Date
5d56638851
kernel: Ignore all non-bootstrap processors
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-22 12:25:43 +02:00
df95126ccd
kernel: Remove unneeded debug logs & random cleanups
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-14 21:10:38 +02:00
ed0727332b x86_64/CPU: Assign a proper IRQ number to the keyboard interrupt
All checks were successful
continuous-integration/drone/push Build is passing
Ah, the dangers of copy-and-paste...
2023-04-04 12:13:34 +00:00
d48d0efb07
kernel: Add names to threads
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-24 21:05:38 +01:00
f084b57f39
kernel+sh: Allow using Ctrl+D to send EOF
Some checks failed
continuous-integration/drone/push Build is failing
2023-03-24 17:21:21 +01:00
d63c8abbfd
kernel/x86_64: Terminate page faults in a waitpid-friendly way 2023-03-24 00:52:17 +01:00
03adaa356c
kernel: Avoid printing keypresses twice 2023-03-23 21:33:50 +01:00
d33fccc66f
kernel: Implement reading from /dev/console 2023-03-19 19:15:19 +01:00
cd00e41f59
arch/x86_64: Decode keyboard scancodes
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 11:17:43 +01:00
54f2d35416
kernel: Add the fork() system call 2023-03-18 23:45:48 +01:00
8c72e9a49a
kernel: Add an exec() system call
All checks were successful
continuous-integration/drone/push Build is passing
Doesn't support arguments or environment for now.
2023-03-16 22:44:58 +01:00
e30eec4213
kernel/x86_64: Avoid kernel panics when a page fault occurs in a userspace thread 2023-03-07 21:08:05 +01:00
ca85a69442
kernel: Save floating-point environment when switching in and out of userspace threads 2023-03-07 20:59:11 +01:00
de38eb6877
luna: Remove pure_cstyle_format
All checks were successful
continuous-integration/drone/push Build is passing
It was causing a lot of code duplication. If someone doesn't have errors, just return {} from the callback and unwrap the Result.
2023-03-02 13:38:21 +01:00
519aa347dd
x86_64: Remove recursive mapping related things from MMU.h
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-27 13:07:52 +01:00
3ec54fafde
x86_64/MMU: Do not allocate level 1 page tables for huge page entries
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
This would leak memory, since we would never end up using them.
2023-02-27 12:55:15 +01:00
752dfdbf1c
MemoryManager: Reuse the existing mapping of physical memory that MMU has
All checks were successful
continuous-integration/drone/pr Build is passing
2023-02-27 12:51:29 +01:00
8df441064f
x86_64/MMU: Map the physical address space using huge pages 2023-02-27 12:47:17 +01:00
426f6e4da8
x86_64: Allow mapping huge pages, but don't do it yet 2023-02-27 12:41:28 +01:00
837d483e0b
x86_64/MMU: Copy from the mapped kernel directory instead of the physical version
All checks were successful
continuous-integration/drone/pr Build is passing
2023-02-27 12:30:52 +01:00
995d1bc36e
x86_64/MMU: Map all physical memory into the higher half instead of using recursive mapping
All checks were successful
continuous-integration/drone/pr Build is passing
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 12:24:21 +01:00
794567327f
kernel, luna: Port non-VFS changes over from pull request #22
All checks were successful
continuous-integration/drone/push 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:09:03 +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
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
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
631cdd0204
x86_64/CPU: Skip null instruction pointers on stack trace generation
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-16 20:44:45 +01:00
1b807a4e06
arch/Timer: Make sure ARCH_TIMER_FREQ is a power of two
(avoid division and modulo, division is slow)
Fortunately, GCC will optimize divisions by powers of two to simple bitwise shifts :)
2023-01-16 19:43:05 +01:00
84c82a4e75
luna, kernel: More constness
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-10 19:31:41 +01:00
a8a64863c8
kernel, libc: Add clock_gettime() 2023-01-07 00:21:08 +01:00
87a4bc91d8
arch/x86_64: Nicer display for page faults that shows a human-readable version of the error code 2023-01-06 17:31:22 +01:00
fd8a0175d9
Add a syscall infrastructure (our baby program can print to the console now!)
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-05 22:39:56 +01:00
0aac6c888d
x86_64: Basic exit() syscall!
User processes need to do something, amirite?
2023-01-05 21:53:48 +01:00
31ea030c7f
MMU: Add functions to create and delete userspace page directories 2023-01-05 21:50:26 +01:00
5854e5e530
Add newlines at end-of-file 2023-01-02 13:07:29 +01:00
7952d1d8a0
x86_64: Add basic keyboard support with an ASYNC DRIVER
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-26 19:59:18 +01:00
a1eca479d5
x86_64: Add a getter for the initial page directory
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-26 12:57:25 +01:00
2600acc96c
Thread: Add init_regs_user() 2022-12-26 12:46:07 +01:00
0054777e7d
x86_64: Warn if NX is not supported 2022-12-26 12:11:10 +01:00
08984e1673
x86_64: Create a has_flag() helper function and remove redundant clearing of reserved bits 2022-12-26 12:10:47 +01:00
59d69f684f
x86_64: Add general protection fault handler
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-24 11:49:47 +01:00
a3595e71a9
Update .clang-format
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-21 20:22:44 +01:00
2e8ea724a0
arch/x86_64: Refactor the stack tracing code to remove duplicate code
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-21 17:21:01 +01:00
a89ae9bed7
Run include-what-you-use
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-17 15:51:19 +01:00
95b0091622
Split off arch/x86_64/CPU.cpp into various files
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-17 15:45:06 +01:00
59c9d8f119
asm -> asm volatile
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-17 14:32:24 +01:00
abbed13f27
Add a 'pure' variant of cstyle_format which is infallible
If we cannot fail to output, it doesn't make sense to propagate errors. So if you're SURE there are no errors, use pure_cstyle_format().
If, however, output can fail, use cstyle_format().

This has a drawback of adding quite a bit of code duplication to Format.cpp.
Some of it is dealt using templates, but some code still remains duplicate.
2022-12-17 12:38:22 +01:00