143 Commits

Author SHA1 Message Date
cbb44a5a10
kernel/ATA: Route interrupts to the correct drive
Some checks failed
continuous-integration/drone/pr Build is failing
2023-06-03 20:59:01 +02:00
7545cb055c
kernel: Start reading the MBR partition table from the ATAPI drive 2023-06-03 20:59:01 +02:00
159bdeffb9
ATA: Mark the CDROM as a block device 2023-06-03 20:59:01 +02:00
6ea67bfb61
kernel/ATA: Pass extra information to DeviceRegistry
This is needed since merging e7d482e from main.
2023-06-03 20:59:01 +02:00
b63f0f8009
kernel+init: Create a device node in /dev to access the CDROM from userspace!
Still using PIO, though.
2023-06-03 20:59:00 +02:00
0ab0aaf129
kernel/ATA: Read the CDROM's first sector using ATAPI PIO!!
Sadly, for some reason, DMA is not working right now.
This is a problem, as PIO is inconvenient. But hey, it works for now!
2023-06-03 20:59:00 +02:00
804bc78dbb
kernel/x86_64: Implement writing to PCI fields 2023-06-03 20:59:00 +02:00
0254849a5c
kernel/PCI: Add bit enum for the Command field 2023-06-03 20:59:00 +02:00
544c6abccd
kernel: Actually register interrupt handlers properly 2023-06-03 20:58:59 +02:00
b8f173bced
kernel/ATA: Calculate block sizes for ATA devices as well 2023-06-03 20:58:59 +02:00
3733b0f26e
kernel/ATA: Send a READ CAPACITY packet to an ATA drive on initialization 2023-06-03 20:58:59 +02:00
d01f751e6d
kernel/ATA: Read the PCI Busmaster registers and start preparing for DMA 2023-06-03 20:58:59 +02:00
963b645ed1
kernel/ATA: Read the Busmaster base port and verify it 2023-06-03 20:58:58 +02:00
73890bc8f3
kernel: Handle device BARs properly 2023-06-03 20:58:58 +02:00
c4249f172d
kernel/ATA: Read ATA strings properly instead of backwards
Now we can see the model string. What does it say...

"QEMU DVD-ROM". Let's go!
2023-06-03 20:58:58 +02:00
6fca8eeeaa
kernel/ATA: Implement enough to send an IDENTIFY command and read the model number :) 2023-06-03 20:58:58 +02:00
9466161213
kernel/ATA: Handle drive IRQs in compatibility mode 2023-06-03 20:58:57 +02:00
ffe970ef60
kernel/CPU: Allow passing arbitrary data to interrupt handlers 2023-06-03 20:58:57 +02:00
805dea84a6
kernel/ATA: Start reading/writing registers and detecting drives 2023-06-03 20:58:57 +02:00
25c9274a66
kernel: Warn if no ATA controller is found 2023-06-03 20:58:57 +02:00
dfd01d3e2a
kernel: Add a KMutex class and use that for ATA::Controller locking 2023-06-03 20:58:57 +02:00
c0ae3df706
kernel/x86_64: Add basic ATA controller and channel identification 2023-06-03 20:58:56 +02:00
476dcaf67d
kernel/PCI: Add more PCI field types 2023-06-03 20:58:56 +02:00
c3c088ba66
kernel/x86_64: Add a way to register IRQ handlers from other kernel subsystems 2023-06-03 20:58:53 +02:00
8bcec00a9d
kernel: Change the timer subsystem to use timespecs natively
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-03 13:15:10 +02:00
11a4f8cc90
kernel: Wake the parent process when a child exits because of a page fault 2023-05-28 21:50:13 +02:00
916a73ca95
kernel: Rework the timer subsystem to count in microseconds
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-07 21:51:36 +02:00
72dadc6706
kernel: Define a constant to check for default memory access
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-07 21:38:38 +02:00
b25e212880
kernel: Make a generic function for checking memory flags
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-07 21:37:01 +02:00
293a992133
kernel: Add a kernel_wait_for_event() function to avoid weird calls to kernel_wait in kthreads
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-04 23:43:00 +02:00
4a7f68b989
kernel: Add a convenience wake_up() function 2023-05-04 23:35:54 +02:00
3ed9e578c7
kernel/x86_64: Wake the IO thread up only when there is an IO event, instead of polling every 10 ms 2023-05-04 23:07:09 +02:00
abaf24d0da
kernel/CPU: Move some stuff to StringView 2023-05-03 17:35:46 +02:00
77dcfab5ef
kernel: Run the initialization process in a thread
All checks were successful
continuous-integration/drone/push Build is passing
This way we can give it more stack and also reclaim it later!
2023-04-28 13:23:07 +02:00
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
apio
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