Commit Graph

69 Commits

Author SHA1 Message Date
e84f613c4d Kernel: Shell now somewhat functions again
I will not be fixing the shell implementation until I get to
userspace
2023-04-05 11:37:41 +03:00
a423cd8bb3 Kernel: Add partial support for shell
We don't handle arrow keys, and the tty does not know how to clear
the screeen :D
2023-04-05 01:30:58 +03:00
db076058b9 Kernel: Process can now initialize stdio
This allows the use of the fds STD{IN,OUT,ERR}_FILENO
2023-04-05 01:10:25 +03:00
a1100624bf Kernel: Start work on making tty a file
TTY is now a file that you can read from/write to. I still have
to port shell to use this new interface
2023-04-05 00:56:09 +03:00
26d9a3e253 Kernel: Move DeviceManager to its own file 2023-03-30 22:39:45 +03:00
2995a36942 Kernel: root partition is now passed from the commandline 2023-03-30 18:46:19 +03:00
5d5487315f Kernel: Remove the mount test from VFS 2023-03-30 11:43:24 +03:00
a24c2d9be2 Kernel: DeviceManager is now a 'FileSystem' so it can expose devices
Shell reads keyboard through /dev/input :)
2023-03-29 11:50:46 +03:00
ac094a48d6 Kernel: Rework the whole input system
We now use Device abstraction that will allow us to provide devices
to userspace through /dev. Currently Shell reads from first and only
device (it being PS/2 Keyboard).
2023-03-29 03:05:16 +03:00
2f8c9746e3 Kernel: Move ACPI to its own file 2023-03-27 17:30:45 +03:00
39b560fde3 Kernel: Add basic mounting to VFS. 2023-03-19 05:51:25 +02:00
1a26a318a4 Kernel: Rework filesystem reading
We now read from a filesystem to user provided buffer.

Read sizes are determined by read call.

You should now get file descriptors and do reading through Process::current()
2023-03-17 21:18:41 +02:00
1b7625581d Kernel: Add basic concept of Processes
We now create Shell as a process that has its own threads
2023-03-16 12:17:04 +02:00
8b8e3cbbf0 Kernel/Userspace: Start initial work on userspace and syscalls 2023-03-13 15:32:46 +02:00
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
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
371dfe8ef3 BAN: Formatter now uses perfect forwarding on its arguments 2023-03-08 21:31:26 +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
f7ebda3bf1 Kernel: Move interrupt related functions to InterruptController 2023-03-08 03:16:51 +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
7fcbb869e1 Kernel: Initialize GDT in kernel code
We dont use the boot GDT only while booting
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
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
1bd8b0fe5c Kernel: Sleep now actually sleeps and allows idling 2023-02-19 18:52:25 +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
2161528cb6 Kernel: Shell is now launched as a capturing lambda 2023-02-02 23:27:51 +02:00
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
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
9c31790359 Kernel: Add option to disable Serial output
This makes all debug output to appear on the TTY
2023-01-25 22:51:42 +02:00
c0bc002ac6 Kernel: Move debug printing to its own file
It didn't make sense that dprint was defined in Serial.h.
We also now dump dprint to tty if there is no serial and tty is initialized
2023-01-25 22:51:42 +02:00
ba53582f23 Kernel: Rewrite APIC and PIC more OOP friendly
x86_64 port is slowly coming together
2023-01-23 20:13:57 +02:00
1b9f7aa815 Kernel: Rewrite the whole VESA driver
We dont support vga text mode currently. I might add it later if needed.

I also removed mouse 'support' from Shell since it didn't do anything
and I didn't implement arbitary bitmap rendering to framebuffer
2023-01-23 13:21:53 +02:00
491610db2c Kernel: move GDT initialization to boot.S 2023-01-22 00:48:12 +02:00
46e5b3f3d6 Kernel: Move GDT to its own namespace and cleanup 2023-01-16 15:24:10 +02:00
8881c1e117 Kernel: Shell is no longer singleton 2023-01-16 15:16:39 +02:00
f547a788f2 Kernel: Add support for arrow keys in Shell 2023-01-13 15:07:24 +02:00
8fd51fb47d Kernel: Replace Paging{.h,.cpp} with better MMU{.h,.cpp} 2023-01-12 13:24:36 +02:00
64c57ea3d0 Kernel: Remove obsole CPUID::IsAvailable
This is now a harware requirement that is verified already in boot.S
2023-01-10 21:28:59 +02:00
c6467b8ebc Kernel: Multiboot data and kernel command lines are now global variables 2023-01-10 17:50:24 +02:00
efd8638a96 Kernel: Improve kernel panic message and rename it 'panic'->'Panic' 2023-01-09 21:57:03 +02:00
086f0c7cf6 Kernel: Better error reporting from VESA and fix texmode rendering 2023-01-05 03:36:20 +02:00
a12ddfa12a Kernel: Update PS/2 controller 2023-01-04 19:22:23 +02:00
ef0b2010e0 Kernel: Add basic PS/2 Mouse driver 2022-12-30 19:38:21 +02:00
06a4ef1d87 Kernel: Commandline parsing does not depend on kmalloc anymore 2022-12-28 04:17:46 +02:00
5d7a767f8b Kernel: Enable basic paging 2022-12-28 04:17:34 +02:00
3e8590687f Kernel: Cleanup code and move kmalloc initialization to later 2022-12-28 04:16:21 +02:00
d8fd6afd12 Kernel: Make TTY a class 2022-12-23 15:55:45 +02:00