Commit Graph

2215 Commits

Author SHA1 Message Date
Bananymous f188fea81c BAN: Implement basic HashSet 2023-02-10 02:59:52 +02:00
Bananymous 7630df84ad BAN: Add basic hashing functionality 2023-02-10 02:59:30 +02:00
Bananymous 4f8fcf0bd7 BAN: Add Formatter specialization for Vector 2023-02-10 02:58:14 +02:00
Bananymous f68ae01d0c BAN: Fix ErrorOr<void> to actually set error byte 2023-02-10 01:06:18 +02:00
Bananymous 7ee4ecd7f4 BAN: Vector's and Queue's underlying type is T* instead of uint8_t*
I have no idea what kind of brainfart I had to make use uint8_t*
that just complicated the code :D
2023-02-10 00:12:23 +02:00
Bananymous e5ffc1686f BAN: Vector::const_iterator now uses const T* as underlying type 2023-02-09 23:06:49 +02:00
Bananymous bfc9a2377c BAN: LinkedList now uses iterators instead of const_iterators on methods 2023-02-09 23:06:16 +02:00
Bananymous 6a133782ed All: Move to c++20 2023-02-09 23:05:26 +02:00
Bananymous 338771c5b0 BAN: Cleanup Vector code
*Applies to last patch also!*

Remove duplicate code in iterators. We used to have separate iterator
and const_iterator but now they are the same class with some enable_if
magic to disable references from const_iterator

This introduces some 'bad things' you can for example call
const_iterator.operator*<false>() to obtain non const reference. I
don't think this matters since you could use const_cast or something
else to work around const if you really tried
2023-02-07 11:08:05 +02:00
Bananymous 08dfb0e1db BAN: Cleanup LinkedList code 2023-02-06 19:01:52 +02:00
Bananymous 0eb1fb8bae Buildsystem: Build disk image manually
We don't use grub-mkrescue anymore. Instead we build the disk image
manually. This allows us to have known disk layout for easier testing
when I get to implementing disk reading. For now I made the root
partition ext2 since I think that will be the first format that I'll
implement.
2023-02-05 18:08:40 +02:00
Bananymous fb7fe73d49 Kernel: Add inw and outw to IO 2023-02-04 23:37:34 +02:00
Bananymous 6fab26692b Kernel: remove unnecessary function from x86_64 Thread.S 2023-02-02 23:48:18 +02:00
Bananymous 2161528cb6 Kernel: Shell is now launched as a capturing lambda 2023-02-02 23:27:51 +02:00
Bananymous 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
Bananymous 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
Bananymous 777ede328e Kernel: Add helper functions for reading current rsp and rbp 2023-02-02 23:19:44 +02:00
Bananymous 2403df50bb BAN: Add getter for Function size 2023-02-02 23:19:18 +02:00
Bananymous c85b97abee Kernel: fix some of i368 IDT. This was really broken 2023-02-02 15:52:06 +02:00
Bananymous 117d1de038 Kernel: panic does not need to include <kernel/kprint.h>
This allows us to not have kprint available literally everywhere
2023-02-02 15:51:15 +02:00
Bananymous 6cbad718fb Kernel: Add some more cxxabi functionality
We can now declate static variables in functions
2023-02-02 15:50:26 +02:00
Bananymous f6b05212e0 Kernel: Add is_locked() to spinlock
I think this is atomic read
2023-02-02 15:49:30 +02:00
Bananymous 01f267a321 Kernel: fix spinlock for i386 2023-02-02 15:49:00 +02:00
Bananymous 0d2d6e5348 BAN: Fix all emplace functions to actually do perfect forwarding 2023-02-01 21:41:51 +02:00
Bananymous 99cf1c0330 BAN: Add destructor to function if it needs to deallocate something someday 2023-02-01 21:41:18 +02:00
Bananymous 9b8de5025a All: rename every function from UpperCamelCase to snake_case
This was a mess since I didn't know which to use but now I decided
to go with snake_case :)
2023-02-01 21:05:44 +02:00
Bananymous 4faa662a59 BAN: Rewrite Traits and add some more of them 2023-02-01 20:05:34 +02:00
Bananymous 6a9d60a8fb Kernel: Implement somewhat functioning multithread support
This still uses only a single cpu, but we can now have 'parallelization'

This seems to work fine in qemu and bochs, but my own computer did not
like this when I last tried.

I have absolutely no idea how multithreading should actually be
implmemented and I just thought and implemented the most simple one I
could think of. This might not be in any way correct :D
2023-02-01 01:53:35 +02:00
Bananymous 7d8aafa0b5 Kernel: Add macros for current archutecture 2023-02-01 01:52:52 +02:00
Bananymous 337569b0ca Kernel: Implement basic SpinLock 2023-02-01 01:52:52 +02:00
Bananymous 1945b716ad BAN: Implement basic LinkedList 2023-02-01 01:22:41 +02:00
Bananymous 5127da9ecc BAN: Add more traits 2023-02-01 01:22:19 +02:00
Bananymous 56d6b2af3d BAN: TRY() now returns the error itself and not ErrorOr<>
This allows us to use TRY with different ErrorOr<> templates
2023-02-01 01:21:14 +02:00
Bananymous 3a1f068bac BAN: Add needed include to Function 2023-01-31 18:43:24 +02:00
Bananymous be502ae616 Kernel: Debug stacktrace now detects if it kernel panics itself 2023-01-31 18:43:09 +02:00
Bananymous cb3b62d665 Kernel: Only allocate single GDT entry during boot.S
When we need more, we should probably initialize rest of them
in cpp code
2023-01-31 18:43:09 +02:00
Bananymous 1954f223ad Kernel: Add no sse and sse2 for kernel code 2023-01-31 18:43:09 +02:00
Bananymous f10a57dcec BAN: Add RefCounted<> and Unique<>
We have now maybe functional smart pointers
2023-01-31 18:43:09 +02:00
Bananymous 1687028ed5 Kernel: Add constructor and destructor to MMU 2023-01-30 18:54:04 +02:00
Bananymous 3d5f1b5a86 Kernel: Change default host to x86_64 2023-01-30 18:53:30 +02:00
Bananymous 6dc22b7251 Kernel: Add actual register values to x86_64 kernel panic
Very hackish implementation, but we now get actual registers at the
time of the interrupt happening
2023-01-30 18:52:38 +02:00
Bananymous bfe3426f6d Kernel: Add processor dump flag to APIC 2023-01-26 13:13:46 +02:00
Bananymous 6418d7cfc3 Kernel: Add Other GDT entries to x86_64 2023-01-26 12:53:04 +02:00
Bananymous f0093ed2fd Kernel: kmalloc_eternal now updates the used/free values
I also improved the kmalloc_dump_info() formatting. We format the
values as 8-digit hex numbers since (atleast for now) the kmalloc
will always be under 4 GiB address and size :)
2023-01-26 03:04:19 +02:00
Bananymous e00d18029d Kernel: rewrite some of APIC since it didn't work with xsdts for some reason 2023-01-26 02:57:14 +02:00
Bananymous 35d2e27292 Kernel: Improve MMU
We don't have to invalidate page in AllocatePage() if we don't make
any changes. We also should not assert on deallocating non-present
pages, just return early :)
2023-01-26 02:57:14 +02:00
Bananymous 589f338357 Kernel: Cleanup IDT register dump inline assembly 2023-01-26 02:57:14 +02:00
Bananymous 05b48fa71c Kernel: add gcc option to make sure we have (r/e)bp saved on stack 2023-01-26 02:57:14 +02:00
Bananymous aa0757e135 Kernel: Move dump_stacktrace from panic -> debug 2023-01-26 02:57:14 +02:00
Bananymous e87026f01d Kernel: I have no idea what this commit does
I had committed a change in IDT but reverted it now.

This propably only adds a spurious interrupt detection to common cpp
interrupt handler?
2023-01-26 02:55:37 +02:00