Bananymous
0424082e7b
Kernel: Only compile lai for x86_64 targets
...
I will be dropping lai entirely soon. Once I get to writing AML
interpreter.
2024-03-22 15:41:15 +02:00
Bananymous
45cea14165
Kernel: Move sys_fork trampolines to kernel/arch/ directory
2024-03-22 12:48:54 +02:00
Bananymous
26ed689d30
Kernel: Remove old GDT, IDT and MMU code from i386
...
It will be easier to just rewrite them
2024-03-22 12:47:34 +02:00
Bananymous
f0105cb7fb
Kernel: Move Interruptable from InterruptController.h to its own file
2024-03-06 00:47:02 +02:00
Bananymous
418bc54f2b
Kernel: Move SpinLock definition to header and fix Scheduler locking
...
This patch allows inlining of spinlocks :)
2024-03-04 22:36:41 +02:00
Bananymous
9c36d7c338
BAN/Kernel: Rework assertion/panic system
...
BAN/Assert.h does not need any includes meaning it can be included
anywhere without problems.
2024-03-04 11:41:54 +02:00
Bananymous
8141b9977d
Kernel: Per processor information is now stored in class Processor
...
This allows us to allocate processor stacks, and other per processor
structures dynamically in runtime. Giving processor stack to
ap_trampoline feels super hacky, but it works for now.
2024-03-03 22:30:06 +02:00
Bananymous
d94f6388b7
Kernel: Fix all broken locks from new mutexes
2024-02-28 22:45:34 +02:00
Bananymous
198dde8365
Kernel: Add klibc for kernel
...
Now building same source as libc is not needed and libc doesn't
have to do hacks to allow kernel compilation
2024-02-14 15:00:04 +02:00
Bananymous
435636a655
Kernel: Implement super simple TCP stack
...
No SACK support and windows are fixed size
2024-02-12 04:45:42 +02:00
Bananymous
b45d27593f
Kernel: Implement super simple PRNG
2024-02-12 04:25:06 +02:00
Bananymous
e7dd03e551
Kernel: Implement basic connection-mode unix domain sockets
2024-02-08 02:28:19 +02:00
Bananymous
5da59c9151
Kernel: Make better abstractions for networking
2024-02-06 16:45:39 +02:00
Bananymous
692cec8458
Kernel/Userspace/LibC: Implement basic dprintln for userspace
2024-02-05 01:24:09 +02:00
Bananymous
a0138955cd
Kernel: Implement barebones arp table
2024-02-03 01:50:10 +02:00
Bananymous
ec2f21bb9f
Kernel/LibC: Implement SYS_SENDTO
2024-02-02 03:16:01 +02:00
Bananymous
99eed9c37a
Kernel: Start work on network stack
2024-02-01 23:38:06 +02:00
Bananymous
f4e86028d0
Kernel: Write simple working E1000 and E1000E drivers
2024-02-01 22:08:59 +02:00
Bananymous
54a92293da
Kernel: Implement NVMe driver
...
I'm actually able to boot this os fine on own laptop now!
2024-01-17 08:26:58 +01:00
Bananymous
8f89519bcf
Kernel: Keymaps can now be loaded from files
2024-01-10 14:43:19 +02:00
Bananymous
961ab9768a
Kernel: KeyEvent is now well known keycode
...
Keycodes are easier to handle as you need only one keyboard layout
for keycodes. Otherwise you would need to implement keyboard layout
for every keyboard driver in every language.
2024-01-10 12:51:24 +02:00
Bananymous
e45b544a39
Kernel: Implement PS/2 mouse driver
...
This is realtively simple driver that queries extensions (scroll +
extra buttons) from mouse and reads mouse packages.
2024-01-04 12:17:55 +02:00
Bananymous
d4191c0d94
Kernel: Reorganize PS/2 files to their own directory
2024-01-04 12:04:45 +02:00
Bananymous
891ced4da2
Kernel: Move PS2Device to its own file
2024-01-04 12:04:45 +02:00
Bananymous
9fa13079f2
Kernel: Implement supplementary groups
...
This code has very ugly file parsing code. I have to create API
for reading files line by line in kernel space...
This allows users to open framebuffer/input files without root.
Mounting has to be moved to userspace soon. It makes no sense to
hard code permissions for every (device) file.
2024-01-02 23:24:32 +02:00
Bananymous
9b841cb823
BuildSystem/Kernel: Enable -Wextra and -Werror in kernel
...
Only needed to fix some unused variable bugs
2023-12-01 01:22:53 +02:00
Bananymous
c1cac43f28
BuildSystem: Don't build lai with -Wstack-usage
...
Lai has two functions that trigger warnings on gcc. There isn't
really anything I can do about it, so just disable the warning
2023-12-01 01:22:53 +02:00
Bananymous
ab9954fe73
Kernel: Delete the now obsolete VesaTerminalDriver
2023-11-22 21:59:11 +02:00
Bananymous
fd18071975
Kernel: Implement TerminalDriver for Framebuffer device
...
Use this new FramebufferTerminalDriver for terminal instead of the
old VesaTerminalDriver. Only drawback with this is that framebuffer
device can only be intialized after DevFS is initialized.
2023-11-22 21:57:17 +02:00
Bananymous
cdf53f33f6
Kernel: Implement basic framebuffer device
...
This allows exposing framebuffer to userspace
2023-11-22 20:34:41 +02:00
Bananymous
6a068fb9f9
Kernel: Move Partition to its own file
2023-11-21 15:16:04 +02:00
Bananymous
84040e64b8
Kernel: Don't use multiboot2 explicitly. Parse it to common structure
...
This allows support of multiple different bootloaders
2023-11-17 18:54:59 +02:00
Bananymous
d6ae1bcf36
Kernel: Remove now obsolete RamFS
...
Everything is using now the better TmpFS which uses physical pages
for page allocation instead of the static kmalloc memory.
2023-11-07 16:07:11 +02:00
Bananymous
99d7b0917d
Kernel: Start work on proper TmpFS in Heap instead of kmalloc memory
2023-11-04 18:18:45 +02:00
Bananymous
f6c312a6b3
BuildSystem: using sysroot doesn't need root privileges anymore!
...
Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices.
2023-11-04 17:50:43 +02:00
Bananymous
6e676ee8c5
Kernel: Remove GeneralAllocator since it was not used
2023-10-30 18:13:17 +02:00
Bananymous
066fb44105
Kernel: Allow offsetof with packed fields
...
This is not standard C++ but should be fine with my toolchain.
2023-10-30 17:51:18 +02:00
Bananymous
0b5fcb3f88
Kernel/LibC: Add crt* files to LibC and remove crt0 from kernel
...
There was no reason for libc get crt0 from kernel.
2023-10-30 11:06:13 +02:00
Bananymous
adc5ff9e99
Kernel: Implement AHCI driver
...
SATA drives can now be used with banan-os. This allows much faster
disk access (writing 10 MiB from 30s to 1.5s). This can definitely
be optimized but the main slow down is probably the whole disk
structure in the os.
AHCI drive is now the default when running qemu.
2023-10-12 21:53:48 +03:00
Bananymous
a6ca9fd453
Kernel: Implement bare boness DMA Region
...
This does nothing but allocate contiguous physical and virtual memory
and map it as CacheDisable. Also memory is automatically freed RAII style.
2023-10-08 02:57:22 +03:00
Bananymous
f21d4e794c
Kernel: Rework whole ATA driver structure
...
Make ATA driver more compatible when we are adding SATA support
2023-10-08 02:50:23 +03:00
Bananymous
68a913c838
BuildSystem: Don't strip kernel
2023-10-05 18:52:44 +03:00
Bananymous
8f630a97df
Kernel: Add procfs that contains only pids
2023-09-30 21:19:36 +03:00
Bananymous
7b1c573ad0
Kernel: Implement MAP_PRIVATE file mappings
...
mmap() now supports mapping files with MAP_PRIVATE.
2023-09-29 17:23:42 +03:00
Bananymous
4ee759aa3b
Kernel: Implement new abstract MemoryRegion
...
MemoryBackedRegion now inherits from this and is used for private
anonymous mappigs. This will make shared mappings and file backed
mappings much easier to implement.
2023-09-29 16:18:23 +03:00
Bananymous
a34f2e6e0d
Kernel: Use the new on demand ELF structure
...
All executable files are now read from disk and paged on demand.
This was a big rewrite of the old ELF library but in the end
everything seems much cleaner, since all the old functionality was
not actually needed for execution.
I have to do some measurements, but I feel like memory usage dropped
quite a bit after this change.
2023-09-29 02:00:10 +03:00
Bananymous
d1bbbf48f6
Kernel: Fully remove sys_alloc and sys_free
...
I could delete the whole FixedWidthAllocator as it was now obsolete.
GeneralAllocator is still used by kmalloc. Kmalloc cannot actually
use it since, GeneralAllocator depends on SpinLock and kmalloc runs
without interrupts.
2023-09-23 03:53:30 +03:00
Bananymous
c5f9f0c307
Kernel: Add LAI as a dependency
...
I did not feel like implementing AML interpreter now, and wanted
everything AML has to offer. I will be writing my own AML interperter
at some point.
2023-09-22 17:20:35 +03:00
Bananymous
a740bf8df4
1000th COMMIT: Kernel: Add basic E1000 driver
...
This driver is only capable to read mac address and enable and read
link status
2023-09-22 17:20:28 +03:00
Bananymous
1fcf122c50
Kernel: Add basic ZeroDevice to /dev/zero
2023-09-10 00:31:42 +03:00