af854ec9e1
Kernel: Thread creation now takes void(*)() as entry and void* as data
...
This simplifies threading for the future and gets rid of (undefined?)
cast of member function pointer to address
2023-03-09 15:33:42 +02:00
8dbece9119
Kernel: kmalloc minimum align is forced to s_kmalloc_min_align
2023-03-09 14:37:25 +02:00
8940ff8002
Kernel: You don't have to check whether VFS is initialized or not
...
VFS now returns Error when attempting to traverse inodes if it did
not find root partition
2023-03-09 02:31:24 +02:00
fc58baf54d
Kernel: if VFS initialization does not find root, we fail
2023-03-09 02:17:42 +02:00
2e6e0d0ef5
Kernel: FIX ubsan complaining about unaligned addresses for STDHeaders
2023-03-08 22:55:44 +02:00
371dfe8ef3
BAN: Formatter now uses perfect forwarding on its arguments
2023-03-08 21:31:26 +02:00
7458f68c38
BAN: Error can now be constructed from c_string or format string
...
If the resulting string would overflow, we just truncate it to fit
the error message buffer (128) bytes
2023-03-08 17:05:37 +02:00
d90aba0963
Kernel: Create CriticalScope and fix kmalloc
...
This disables interrupts for the current scope and restores them
after the scope. This is used in kmalloc, since scheduler might
call into kmalloc/kfree, but deadlock if some thread is currently
trying to allocate. This allows us to use kmalloc in Scheduler.
2023-03-08 13:55:53 +02:00
a068d828fe
Kernel: ATA reads go through the ata controller and not only device
2023-03-08 03:26:25 +02:00
1dabe7a222
Kernel: More rework on Scheduler
2023-03-08 03:26:25 +02:00
23b3028e15
Kernel: Rename RefCounted -> RefPtr and implement RefCounted
2023-03-08 03:26:25 +02:00
f7ebda3bf1
Kernel: Move interrupt related functions to InterruptController
2023-03-08 03:16:51 +02:00
b5673278c4
Kernel: Disable color after Debug::dump_stack_trace
2023-03-08 02:41:44 +02:00
0b62729887
Kernel: Scheduler sleeping is working
...
We have to disable optimization for one function, but I'm working
on a fix
2023-03-08 02:41:44 +02:00
b8ee77eb78
Kernel: Initial work on new scheduler with queues
...
Sleeping is definately broken
2023-03-08 02:41:44 +02:00
a9acf1f6dc
Kernel: PCIDevice is now class with getters and constructor
2023-03-08 02:41:44 +02:00
42c33ebfb3
Kernel: kmalloc aligns size to s_kmalloc_min_align
...
We don't get unaligned memory anymore from kmalloc
2023-03-08 02:41:44 +02:00
8a52c0f9d7
Kernel: Cleanup RSDP parsing code
2023-03-07 00:41:13 +02:00
06db890d49
Kernel: Add ubsan
...
My brain has been melting since I'm getting very random bugs.
I hope I can debug them better with ubsan :)
2023-03-06 23:38:05 +02:00
d5f302a68b
Kernel: kmalloc now uses two locks
...
One for fixed allocations and one for general allocations
2023-03-06 12:40:35 +02:00
f1f5e76636
Kernel: kmalloc requires alignment to be power of two
2023-03-02 22:31:13 +02:00
52aa98ba25
Kernel+LibC: Add some errno codes
...
Kernel now returns ENOMEM and other errnos, so we dont have to write
error messages
2023-03-02 21:10:44 +02:00
90a7268e5a
BAN: Rewrite RefCounted to return ErrorOr
2023-03-02 12:30:11 +02:00
1dd61e93b6
Kernel: Threads cannot take arguments anymore
2023-03-02 01:56:09 +02:00
7fcbb869e1
Kernel: Initialize GDT in kernel code
...
We dont use the boot GDT only while booting
2023-03-01 21:21:56 +02:00
9756de02ef
Kernel: MMU now takes flags when allocating pages
2023-03-01 21:21:56 +02:00
7d84f290a1
Kernel: Add lock to Disk reads before I forget
2023-02-26 03:48:11 +02:00
ee5d02aa70
Kernel: Rewrite basically all current disk io stuff
...
This is a big commit that was kinda hard to split to smaller ones.
Essentially we now look at all the mass storage devices from PCI
and initialize (P)ATA devices. This doesn't provide any more functionality
but better abstractions and everything doesn't have to be on its old
default port that might be different for modern computers.
2023-02-26 03:00:29 +02:00
40cf68a22a
Kernel: Shell now sleeps through Scheduler and doesn't 'hlt'
...
ls doesn't crash when trying to list file
2023-02-26 02:57:27 +02:00
04bb08d27f
Kernel: Add basic PCI enumeration
2023-02-26 02:56:53 +02:00
390a747768
Kernel: Add prefs font for terminal output before file system
2023-02-23 01:22:50 +02:00
a4980acc88
Kernel: Fonts can now be parsed from the filesystem and set to terminal
...
We currently dont have a fallback font if we cannot get to filesystem
initialization, but that will come later. I can't test on real hardware
for this reason.
2023-02-22 22:29:31 +02:00
0e668738dc
Kernel: Make some basic bitmap font parsing code
2023-02-22 22:28:12 +02:00
a3e9e7d125
Kernel: Fix some shell commands
2023-02-22 21:55:32 +02:00
4cd99c71ca
Kernel: kmalloc uses now spinlock and fix kmalloc_fixed()
2023-02-22 21:49:28 +02:00
d9c05b7378
Kernel: rewrite the whole kmalloc (again)
...
Performance of the old kmalloc implementation was terrible.
We now use fixed-width linked list allocations for sizes <= 60 bytes.
This is much faster than variable size allocation.
We don't use bitmap scanning anymore since it was probably the slow
part. Instead we use headers that tell allocations size and aligment.
I removed the kmalloc_eternal, even though it was very fast, there is
not really any need for it, since the only place it was used in was IDT.
These changes allowed my psf (font) parsing to go from ~500 ms to ~20 ms.
(coming soon :D)
2023-02-22 16:32:50 +02:00
5d31e89574
Kernel: Update ErrorOr API and add path find to VFS
...
These two are done on the same commit since Changes to Shell were
annoying to make work with only one change
2023-02-22 01:23:11 +02:00
038379274e
Kernel: Inode can now return full mode value
...
Kernel::Inode::Mode is an union of bitmasked fields for every
possible bit
2023-02-20 21:39:24 +02:00
efaca469ee
Kernel: Ext2Inode now supports indirect blocks through for_each_block()
2023-02-20 10:25:15 +02:00
80006ea137
Kernel: Initial work on filesystem
...
We support now ext2 directory listing. File reading is not yet supported.
2023-02-20 01:46:00 +02:00
0506fee34a
Kernel: Shell's thread now uses sleep instead of polling
...
Also added 'sleep' command that just sleeps for 5 seconds
2023-02-19 18:52:25 +02:00
1bd8b0fe5c
Kernel: Sleep now actually sleeps and allows idling
2023-02-19 18:52:25 +02:00
8f1b6da2af
Kernel: Use Vector instead of raw poiters in Disk stuff
...
We now don't have to manually free allocated data
2023-02-16 20:48:41 +02:00
460fc3a29f
Kernel: Start working on filesystem
...
We have a basic PATA driver (for reading) and gpt parser.
2023-02-16 20:00:31 +02:00
94cbacc998
Kernel: PIT now has very barebones sleep
2023-02-16 17:53:25 +02:00
1b45b4d728
Kernel: Remove unnecessary BOCKS_BREAK()
2023-02-16 17:52:39 +02:00
2161528cb6
Kernel: Shell is now launched as a capturing lambda
2023-02-02 23:27:51 +02:00
cdbad56ed7
Kernel: Update shell thread command to run following command as thread
...
'thread echo "Hello World"' runs the command 'echo "Hello World"' after
5 seconds have passed. This was just my test code for threading
2023-02-02 23:26:19 +02:00
5b5e620d8a
Kernel: Improve multithreading support
...
We can now use arbitary BAN::function<void(...)> as the Thread.
I also implemented multithreading for i386 since it was not done
on the initial multithreading commit.
2023-02-02 23:24:12 +02:00
f6b05212e0
Kernel: Add is_locked() to spinlock
...
I think this is atomic read
2023-02-02 15:49:30 +02:00