048a2ebb95
ALL: Disk image's root partition now has name 'banan-root'
2023-02-26 02:59:33 +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
dc1a4614fb
BAN: Errors are now moved around with TRY()
2023-02-26 02:54:34 +02:00
9439582154
BAN: Add ASSERT_NOT_REACHED()
2023-02-26 02:53:58 +02:00
34f9912a1d
Kernel: Add IO functions inl, outl, and ins{b,w,l} to read into buffer
2023-02-24 12:39:38 +02:00
80f9428337
Kernel: Fix prefs font for 32 bit
2023-02-24 03:19:54 +02:00
6c1f0d1dc8
BAN: Add big_endian_to_host in Math
2023-02-23 15:58:32 +02:00
5cd97e44e2
LibC: Add strcmp and strncmp
2023-02-23 15:57:33 +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
c9ea22f5e2
Kernel: IDT now confirms that it allocated succesfully
2023-02-22 21:48:40 +02:00
0e77b4dc4e
BAN: You can now transform little endian data to host endian
2023-02-22 21:47:22 +02:00
f98f3d851c
BAN: HashMap uses LinkedList as bucket, so kmalloc_fixed can be used
2023-02-22 21:46:41 +02:00
a845f8696c
BAN: Add function to decode utf-8 encoded strings
...
works for 3 byte unicode characters
2023-02-22 21:45:26 +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
4afc4660a4
BAN: Basic containers have shrink_to_fit() method
...
I also chaged the default memory allocation increase from 1.5 to 2
2023-02-22 02:07:05 +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
9aab67fed8
BAN: make all Math functions inline constexpr
2023-02-22 01:17:56 +02:00
10b6d51522
BAN: implement Variant<> for two types
2023-02-22 01:17:21 +02:00
afd4b7a184
BAN: HashMap now copies size when copying :D
2023-02-22 01:16:07 +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
fbc17eb6dd
BAN: Implement basic HashMap
2023-02-20 16:00:51 +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
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
feaeee11e5
Kernel: fix ARCH() macro and add helper macros for push/pop
2023-02-19 18:52:25 +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
66a4b69a29
BAN: Math now uses template concepts and add div_round_up
2023-02-19 00:48:56 +02:00
eacf551d0f
Build: Make install-usb.sh print human readable size
2023-02-19 00:48: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
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
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
f188fea81c
BAN: Implement basic HashSet
2023-02-10 02:59:52 +02:00
7630df84ad
BAN: Add basic hashing functionality
2023-02-10 02:59:30 +02:00
4f8fcf0bd7
BAN: Add Formatter specialization for Vector
2023-02-10 02:58:14 +02:00
f68ae01d0c
BAN: Fix ErrorOr<void> to actually set error byte
2023-02-10 01:06:18 +02:00
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
e5ffc1686f
BAN: Vector::const_iterator now uses const T* as underlying type
2023-02-09 23:06:49 +02:00
bfc9a2377c
BAN: LinkedList now uses iterators instead of const_iterators on methods
2023-02-09 23:06:16 +02:00
6a133782ed
All: Move to c++20
2023-02-09 23:05:26 +02:00
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
08dfb0e1db
BAN: Cleanup LinkedList code
2023-02-06 19:01:52 +02:00
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