Bananymous
177b205c48
BuildSystem: userspace has cmake target
2023-05-11 16:19:53 +03:00
Bananymous
55bb0084aa
Kernel: namespace and function renames
...
MMU moved to namespace kernel
Kernel::Memory::Heap moved to just Kernel
MMU::map_{page,range} renamed to identity_map_{page,range}
Add MMU::get_page_flags
2023-04-28 14:48:38 +03:00
Bananymous
7530482cc2
Kernel: Cleanup process creation for userspace
2023-04-22 16:51:50 +03:00
Bananymous
e0ce2394fe
Kernel: Remove obsolete userspace stuff from kernel
2023-04-22 15:38:45 +03:00
Bananymous
fadce063a7
Kernel: Usespace programs are now ran through ELF files
...
only 64 bit elf files are supported for now.
2023-04-22 15:35:32 +03:00
Bananymous
26fe6ad898
Kernel: kmalloc does not dump stack trace
...
dump_stack_trace() page faults and i dont feel like debugging this
now :)
2023-04-21 13:45:13 +03:00
Bananymous
9c506ef85b
Kernel: Stack pointer is validated when updated
...
This allows us not to fail stack pointer when in syscall since
interrupts use their own stack
2023-04-21 10:40:24 +03:00
Bananymous
b1c7af38d0
Kernel: Add barebones per process virtual addresses
...
We now assign every (userspace) process its own MMU which we load
in scheduler. This allows every process to have separate virtual
address space.
This is very hackish implementations but it works for now
2023-04-20 00:45:41 +03:00
Bananymous
0030f035be
Kernel: Rename MMU::{un,}allocate... to MMU::{un,}map
...
This is more appropriate name for the behaviour :D
2023-04-19 21:50:30 +03:00
Bananymous
dcce18799f
Kernel: We now launch Shell again on boot
...
Adding this just before push :D
2023-04-19 00:41:24 +03:00
Bananymous
a9a15ea2c0
Kernel: init2 is now launched as a process instead of thread
...
Also only process can now add threads to scheduler. Nobody should
have raw access to scheduler and everything should be through
Process::current() or irqs (reschedules)
2023-04-19 00:39:06 +03:00
Bananymous
d63716db96
Kernel: Process is not reference counted any more
...
This was not necessary and it made things needlessly complicated
2023-04-19 00:34:18 +03:00
Bananymous
c5347e6707
Kernel: Reorder boot initialization
...
We now create the TTY as soon as possible so we can show console
output without serial port.
2023-04-18 10:18:15 +03:00
Bananymous
633929629c
Kernel: Start working on heap
2023-04-18 10:18:15 +03:00
Bananymous
fdb4eb6042
Kernel: Move kmalloc and MMU to Memory directory
2023-04-18 10:18:15 +03:00
Bananymous
998ae511a3
LibELF: Start implementing elf library
2023-04-18 10:18:15 +03:00
Bananymous
8ee63f8264
Kernel: We can create basic userspace processes
...
These are still allocated on the kernel memory
2023-04-12 17:52:36 +03:00
Bananymous
9e0b4132ee
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
Bananymous
4f522d337a
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
Bananymous
af0979ec32
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
Bananymous
7f95444bb5
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
Bananymous
a3ba6da6f3
Kernel: Move DeviceManager to its own file
2023-03-30 22:39:45 +03:00
Bananymous
d4c03d3939
Kernel: root partition is now passed from the commandline
2023-03-30 18:46:19 +03:00
Bananymous
9a4d603a62
Kernel: Remove the mount test from VFS
2023-03-30 11:43:24 +03:00
Bananymous
62fb233eb1
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
Bananymous
fa8e921ee8
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
Bananymous
c7286396d8
Kernel: Move ACPI to its own file
2023-03-27 17:30:45 +03:00
Bananymous
e4bcd98904
Kernel: Add basic mounting to VFS.
2023-03-19 05:51:25 +02:00
Bananymous
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
Bananymous
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
Bananymous
8b8e3cbbf0
Kernel/Userspace: Start initial work on userspace and syscalls
2023-03-13 15:32:46 +02:00
Bananymous
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
Bananymous
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
Bananymous
371dfe8ef3
BAN: Formatter now uses perfect forwarding on its arguments
2023-03-08 21:31:26 +02:00
Bananymous
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
Bananymous
f7ebda3bf1
Kernel: Move interrupt related functions to InterruptController
2023-03-08 03:16:51 +02:00
Bananymous
b8ee77eb78
Kernel: Initial work on new scheduler with queues
...
Sleeping is definately broken
2023-03-08 02:41:44 +02:00
Bananymous
a9acf1f6dc
Kernel: PCIDevice is now class with getters and constructor
2023-03-08 02:41:44 +02:00
Bananymous
7fcbb869e1
Kernel: Initialize GDT in kernel code
...
We dont use the boot GDT only while booting
2023-03-01 21:21:56 +02:00
Bananymous
7d84f290a1
Kernel: Add lock to Disk reads before I forget
2023-02-26 03:48:11 +02:00
Bananymous
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
Bananymous
390a747768
Kernel: Add prefs font for terminal output before file system
2023-02-23 01:22:50 +02:00
Bananymous
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
Bananymous
1bd8b0fe5c
Kernel: Sleep now actually sleeps and allows idling
2023-02-19 18:52:25 +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
2161528cb6
Kernel: Shell is now launched as a capturing lambda
2023-02-02 23:27:51 +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
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
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
Bananymous
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
Bananymous
ba53582f23
Kernel: Rewrite APIC and PIC more OOP friendly
...
x86_64 port is slowly coming together
2023-01-23 20:13:57 +02:00
Bananymous
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
Bananymous
491610db2c
Kernel: move GDT initialization to boot.S
2023-01-22 00:48:12 +02:00
Bananymous
46e5b3f3d6
Kernel: Move GDT to its own namespace and cleanup
2023-01-16 15:24:10 +02:00
Bananymous
8881c1e117
Kernel: Shell is no longer singleton
2023-01-16 15:16:39 +02:00
Bananymous
f547a788f2
Kernel: Add support for arrow keys in Shell
2023-01-13 15:07:24 +02:00
Bananymous
8fd51fb47d
Kernel: Replace Paging{.h,.cpp} with better MMU{.h,.cpp}
2023-01-12 13:24:36 +02:00
Bananymous
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
Bananymous
c6467b8ebc
Kernel: Multiboot data and kernel command lines are now global variables
2023-01-10 17:50:24 +02:00
Bananymous
efd8638a96
Kernel: Improve kernel panic message and rename it 'panic'->'Panic'
2023-01-09 21:57:03 +02:00
Bananymous
086f0c7cf6
Kernel: Better error reporting from VESA and fix texmode rendering
2023-01-05 03:36:20 +02:00
Bananymous
a12ddfa12a
Kernel: Update PS/2 controller
2023-01-04 19:22:23 +02:00
Bananymous
ef0b2010e0
Kernel: Add basic PS/2 Mouse driver
2022-12-30 19:38:21 +02:00
Bananymous
06a4ef1d87
Kernel: Commandline parsing does not depend on kmalloc anymore
2022-12-28 04:17:46 +02:00
Bananymous
5d7a767f8b
Kernel: Enable basic paging
2022-12-28 04:17:34 +02:00
Bananymous
3e8590687f
Kernel: Cleanup code and move kmalloc initialization to later
2022-12-28 04:16:21 +02:00
Bananymous
d8fd6afd12
Kernel: Make TTY a class
2022-12-23 15:55:45 +02:00
Bananymous
3f7a61a4d2
Kernel: VESA driver has now second buffer for fast scrolling
...
This allows us to not read from video memory, since it was very slow
I also implemented fast path for graphics clearing and scrolling if bpp is 32
2022-12-20 14:02:44 +02:00
Bananymous
5e2680cade
Kernel: You can now disable APIC from the grub commandline
2022-12-20 11:57:09 +02:00
Bananymous
0bdb01ee04
Kernel: Replace PIC with APIC
...
If APIC/IOAPIC is not found, we fallback to PIC
Interrupts don't seem to work on real hardware (?)
2022-12-19 11:46:25 +02:00
Bananymous
9274c9ee2f
Kernel: Abstract TTY to use new VESA
2022-12-15 19:05:07 +02:00
Bananymous
711ba19a82
Kernel: Add basic Shell to test functionality
2022-12-13 21:34:50 +02:00
Bananymous
52c793bb5c
Kernel/BAN: Make Time a struct in BAN and add formatter to it
2022-12-13 12:37:26 +02:00
Bananymous
68e88d9413
Kernel: Add clear() command public TTY API
2022-12-13 10:45:24 +02:00
Bananymous
e62a626b39
Kernel: Improve keyboard input by a lot
...
Seems to work on my 2 computerss
2022-12-13 10:45:06 +02:00
Bananymous
7ebe727a29
Kernel: Add RTC to get current time
2022-12-13 10:41:36 +02:00
Bananymous
03e7812cae
Kernel: Add basic ANSI support :)
2022-12-10 03:53:44 +02:00
Bananymous
3d3f12bd30
Kernel: Add new generic Printer class
...
kprint is now just a #define to Printer::print<terminal_putc>.
This allows us to use same print formatting for serial output :)
2022-12-10 00:57:09 +02:00
Bananymous
817de9f359
Kernel: Properly handle finnish keyboard layout.
...
You can now type any basic ascii character from keyboard.
Multimedia keys are not yet handled.
2022-12-08 18:05:48 +02:00
Bananymous
4202c999fa
Kernel: IRQs are now working :)
2022-12-07 02:48:44 +02:00
Bananymous
f2b45ba212
Add GDT and IDT
2022-11-16 19:49:09 +02:00
Bananymous
123382eace
Fixes :)
2022-11-15 21:42:14 +02:00
Bananymous
d289916bc0
Changed back to lower half kernel, since im dump.
...
I dont see the benefit of higher half (and could not get multiboot info)
2022-11-15 00:38:33 +02:00
Bananymous
b185ed4fd3
Libc is now written in C++
2022-11-14 00:31:24 +02:00
Bananymous
fd13f74bbf
Changed into higher half kernel
...
https://wiki.osdev.org/Higher_Half_x86_Bare_Bones
2022-11-13 02:03:20 +02:00
Bananymous
61609db228
Kernel is now in C++ :)
2022-11-12 21:30:26 +02:00