Bananymous
fbc17eb6dd
BAN: Implement basic HashMap
2023-02-20 16:00:51 +02:00
Bananymous
efaca469ee
Kernel: Ext2Inode now supports indirect blocks through for_each_block()
2023-02-20 10:25:15 +02:00
Bananymous
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
Bananymous
247f03c79e
BAN: Make ErrorOr<> have attribute [[nodiscard]]
...
We don't have to specify it everytime we make function return ErrorOr
2023-02-19 20:10:30 +02:00
Bananymous
feaeee11e5
Kernel: fix ARCH() macro and add helper macros for push/pop
2023-02-19 18:52:25 +02:00
Bananymous
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
Bananymous
1bd8b0fe5c
Kernel: Sleep now actually sleeps and allows idling
2023-02-19 18:52:25 +02:00
Bananymous
66a4b69a29
BAN: Math now uses template concepts and add div_round_up
2023-02-19 00:48:56 +02:00
Bananymous
eacf551d0f
Build: Make install-usb.sh print human readable size
2023-02-19 00:48:25 +02:00
Bananymous
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
Bananymous
7f12a7050a
BAN: Add data() to Vector.
...
This allows you to access the underlying data in a vector
2023-02-16 20:47:49 +02:00
Bananymous
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
Bananymous
94cbacc998
Kernel: PIT now has very barebones sleep
2023-02-16 17:53:25 +02:00
Bananymous
1b45b4d728
Kernel: Remove unnecessary BOCKS_BREAK()
2023-02-16 17:52:39 +02:00
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