Bananymous
8dbece9119
Kernel: kmalloc minimum align is forced to s_kmalloc_min_align
2023-03-09 14:37:25 +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
fc58baf54d
Kernel: if VFS initialization does not find root, we fail
2023-03-09 02:17:42 +02:00
Bananymous
2e6e0d0ef5
Kernel: FIX ubsan complaining about unaligned addresses for STDHeaders
2023-03-08 22:55:44 +02:00
Bananymous
371dfe8ef3
BAN: Formatter now uses perfect forwarding on its arguments
2023-03-08 21:31:26 +02:00
Bananymous
7458f68c38
BAN: Error can now be constructed from c_string or format string
...
If the resulting string would overflow, we just truncate it to fit
the error message buffer (128) bytes
2023-03-08 17:05:37 +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
a068d828fe
Kernel: ATA reads go through the ata controller and not only device
2023-03-08 03:26:25 +02:00
Bananymous
1dabe7a222
Kernel: More rework on Scheduler
2023-03-08 03:26:25 +02:00
Bananymous
e7a577f54a
Kernel: fix includes
2023-03-08 03:26:25 +02:00
Bananymous
23b3028e15
Kernel: Rename RefCounted -> RefPtr and implement RefCounted
2023-03-08 03:26:25 +02:00
Bananymous
f7ebda3bf1
Kernel: Move interrupt related functions to InterruptController
2023-03-08 03:16:51 +02:00
Bananymous
b5673278c4
Kernel: Disable color after Debug::dump_stack_trace
2023-03-08 02:41:44 +02:00
Bananymous
0b62729887
Kernel: Scheduler sleeping is working
...
We have to disable optimization for one function, but I'm working
on a fix
2023-03-08 02:41:44 +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
42c33ebfb3
Kernel: kmalloc aligns size to s_kmalloc_min_align
...
We don't get unaligned memory anymore from kmalloc
2023-03-08 02:41:44 +02:00
Bananymous
ed18d86f08
Kernel: Fix spinlock unlocking in x86_64
...
Spinlock unlock used a 64 bit write on 32 bit integer, overwriting
some random memory. This caused some really hard to find bugs
2023-03-08 02:41:44 +02:00
Bananymous
df8811fc1a
Kernel: Remove "a" from .section .text
2023-03-07 01:57:09 +02:00
Bananymous
8a52c0f9d7
Kernel: Cleanup RSDP parsing code
2023-03-07 00:41:13 +02:00
Bananymous
06db890d49
Kernel: Add ubsan
...
My brain has been melting since I'm getting very random bugs.
I hope I can debug them better with ubsan :)
2023-03-06 23:38:05 +02:00
Bananymous
d5f302a68b
Kernel: kmalloc now uses two locks
...
One for fixed allocations and one for general allocations
2023-03-06 12:40:35 +02:00
Bananymous
f1f5e76636
Kernel: kmalloc requires alignment to be power of two
2023-03-02 22:31:13 +02:00
Bananymous
52aa98ba25
Kernel+LibC: Add some errno codes
...
Kernel now returns ENOMEM and other errnos, so we dont have to write
error messages
2023-03-02 21:10:44 +02:00
Bananymous
90a7268e5a
BAN: Rewrite RefCounted to return ErrorOr
2023-03-02 12:30:11 +02:00
Bananymous
1dd61e93b6
Kernel: Threads cannot take arguments anymore
2023-03-02 01:56:09 +02:00
Bananymous
4d8bdec16d
Kernel: fix i386 MMU
2023-03-02 00:47:29 +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
7f8cad83b1
Kernel: x86_64 boot script now makes GDT with null, kernel code and data
2023-03-01 21:21:56 +02:00
Bananymous
ba8c4dbc7f
Kernel: panic now disables interrupts as the first thing
2023-03-01 21:21:56 +02:00
Bananymous
9756de02ef
Kernel: MMU now takes flags when allocating pages
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
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
Bananymous
04bb08d27f
Kernel: Add basic PCI enumeration
2023-02-26 02:56:53 +02:00
Bananymous
34f9912a1d
Kernel: Add IO functions inl, outl, and ins{b,w,l} to read into buffer
2023-02-24 12:39:38 +02:00
Bananymous
80f9428337
Kernel: Fix prefs font for 32 bit
2023-02-24 03:19:54 +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
0e668738dc
Kernel: Make some basic bitmap font parsing code
2023-02-22 22:28:12 +02:00
Bananymous
a3e9e7d125
Kernel: Fix some shell commands
2023-02-22 21:55:32 +02:00
Bananymous
4cd99c71ca
Kernel: kmalloc uses now spinlock and fix kmalloc_fixed()
2023-02-22 21:49:28 +02:00
Bananymous
c9ea22f5e2
Kernel: IDT now confirms that it allocated succesfully
2023-02-22 21:48:40 +02:00
Bananymous
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
Bananymous
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
Bananymous
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
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
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
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
6a133782ed
All: Move to c++20
2023-02-09 23:05:26 +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
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
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
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
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
Bananymous
1954f223ad
Kernel: Add no sse and sse2 for kernel code
2023-01-31 18:43:09 +02:00
Bananymous
1687028ed5
Kernel: Add constructor and destructor to MMU
2023-01-30 18:54:04 +02:00
Bananymous
6dc22b7251
Kernel: Add actual register values to x86_64 kernel panic
...
Very hackish implementation, but we now get actual registers at the
time of the interrupt happening
2023-01-30 18:52:38 +02:00
Bananymous
bfe3426f6d
Kernel: Add processor dump flag to APIC
2023-01-26 13:13:46 +02:00
Bananymous
6418d7cfc3
Kernel: Add Other GDT entries to x86_64
2023-01-26 12:53:04 +02:00
Bananymous
f0093ed2fd
Kernel: kmalloc_eternal now updates the used/free values
...
I also improved the kmalloc_dump_info() formatting. We format the
values as 8-digit hex numbers since (atleast for now) the kmalloc
will always be under 4 GiB address and size :)
2023-01-26 03:04:19 +02:00
Bananymous
e00d18029d
Kernel: rewrite some of APIC since it didn't work with xsdts for some reason
2023-01-26 02:57:14 +02:00
Bananymous
35d2e27292
Kernel: Improve MMU
...
We don't have to invalidate page in AllocatePage() if we don't make
any changes. We also should not assert on deallocating non-present
pages, just return early :)
2023-01-26 02:57:14 +02:00
Bananymous
589f338357
Kernel: Cleanup IDT register dump inline assembly
2023-01-26 02:57:14 +02:00
Bananymous
05b48fa71c
Kernel: add gcc option to make sure we have (r/e)bp saved on stack
2023-01-26 02:57:14 +02:00
Bananymous
aa0757e135
Kernel: Move dump_stacktrace from panic -> debug
2023-01-26 02:57:14 +02:00
Bananymous
e87026f01d
Kernel: I have no idea what this commit does
...
I had committed a change in IDT but reverted it now.
This propably only adds a spurious interrupt detection to common cpp
interrupt handler?
2023-01-26 02:55:37 +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
b315fdc27f
Kernel: Finally managed to get 64-bit working
...
I had weird problems with interrupts but everything should work now
2023-01-25 19:19:28 +02:00
Bananymous
c4670f49d4
Kernel: Refactor some IDT code
2023-01-25 19:19:28 +02:00
Bananymous
48348c9e57
Kernel: Cleanup APIC code. Remove unnecessary defines and add consts
2023-01-25 19:00:41 +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
b50bb03ed4
Kernel: Panic now halts machine even if we get spurious irqs
2023-01-23 18:25:48 +02:00
Bananymous
54043288cb
Kernel: Move CPUID out of arch/
...
CPUID instructions behaves the same on x86 and x86_64. I am not
planning on supporting any non x86 based architectures.
2023-01-23 18:12:52 +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
10c7ef7baa
Kernel: MMU rename weird variable
2023-01-22 20:16:44 +02:00
Bananymous
b67bbab083
Kernel: fix dump_stacktrace
2023-01-22 20:05:24 +02:00
Bananymous
62469c529f
Kernel: IDT now allocates descriptors with kmalloc_eternal
2023-01-22 03:18:42 +02:00
Bananymous
026fdc251c
Kernel: Add kmalloc_eternal back
2023-01-22 03:10:48 +02:00
Bananymous
cdd27ae3db
Kernel: rename MMU::m_page_directory_pointer_table -> m_highest_paging_stuct
...
This might not always be pdpt. In x86_64 it is pml4/pml5
2023-01-22 03:03:58 +02:00
Bananymous
6ec4ba3dc9
Kernel: Move dump_backtrace() out of arch.
...
I discovered __builtin_frame_address()
2023-01-22 03:00:13 +02:00
Bananymous
fbfb3d6b70
Kernel: IDT cleanup GateDesctiptor usage
...
And move everything to IDT namespace
2023-01-22 02:06:43 +02:00
Bananymous
558374a47c
Kernel: IDT flush only once in initialization
2023-01-22 02:06:43 +02:00
Bananymous
6e24ef8323
Kernel: IDT cleanup Kernel panic messages
2023-01-22 02:06:43 +02:00
Bananymous
3e8fbbaabd
Kernel: Fix small typos in IDT
2023-01-22 01:12:47 +02:00
Bananymous
491610db2c
Kernel: move GDT initialization to boot.S
2023-01-22 00:48:12 +02:00
Bananymous
aac7595a47
Kernel: cleanup boot.S code and enable SSE
2023-01-21 23:44:23 +02:00
Bananymous
fdbc04f29d
Kernel: kmalloc now uses the actual kernel end location
2023-01-21 22:40:23 +02:00
Bananymous
9088f7b305
Kernel: kmalloc prints addresses on panic
2023-01-21 22:29:44 +02:00
Bananymous
b5453fad5c
Kernel: dump_stacktrace uses now "\r\n" line endings for bochs
2023-01-21 22:21:38 +02:00
Bananymous
bb051604a1
Kernel: Move dump_stacktrace() to arch folder
...
It uses mov instruction which has different register on x86/x86-64
2023-01-21 22:16:31 +02:00
Bananymous
9e092c80c0
Kernel: Cleanup boot.S
2023-01-21 22:16:01 +02:00
Bananymous
53a5ad3cf9
BAN: Function now properly forward arguments
2023-01-17 11:16:46 +02:00
Bananymous
b9a4530e54
Kernel: Kernel::Panic now dumps stacktrace to com1
2023-01-16 21:50:50 +02:00
Bananymous
7540fa0385
Kernel: Shell now 'properly' parses commandline
2023-01-16 20:09:22 +02:00
Bananymous
e307db47eb
Kernel: Kernel::Panic() will now always print to serial output
2023-01-16 15:44:27 +02:00
Bananymous
73abc3b2ee
fixup! Kernel: Move GDT to its own namespace and cleanup
2023-01-16 15:24:59 +02:00
Bananymous
46e5b3f3d6
Kernel: Move GDT to its own namespace and cleanup
2023-01-16 15:24:10 +02:00
Bananymous
b46fa0d116
Kernel: Shell can now dump kmalloc info
2023-01-16 15:17:00 +02:00
Bananymous
8881c1e117
Kernel: Shell is no longer singleton
2023-01-16 15:16:39 +02:00
Bananymous
1545850be3
Kernel: Input callbacks use the new BAN::Function
2023-01-16 15:15:02 +02:00
Bananymous
d5e162b1ea
Kernel: fix kmalloc header
2023-01-16 12:10:50 +02:00
Bananymous
689338b506
Kernel: kmalloc can now dump current memory usage
2023-01-13 17:42:19 +02:00
Bananymous
f547a788f2
Kernel: Add support for arrow keys in Shell
2023-01-13 15:07:24 +02:00
Bananymous
bf4b26d1fd
Kernel: kmalloc now returns nullptr if you try to allocate over kmalloc size
2023-01-13 15:04:06 +02:00
Bananymous
32453daf66
Kernel: actually dont map page 0
2023-01-13 15:04:06 +02:00
Bananymous
416a41745f
Kernel: Kernel::Panic now checks that TTY is initialized instead of VESA
2023-01-13 15:04:06 +02:00
Bananymous
77e82de51e
Kernel: Make IDT exceptions use a single Kernel:Panic
...
This allows IDT to print exceptions even when we dont have TTY
2023-01-13 15:04:06 +02:00
Bananymous
af8d486893
Kenrel: TTY fix cursor position with ANSI escapes
2023-01-13 15:04:06 +02:00
Bananymous
75ee592fb5
Kernel: remove debug print from MMU
2023-01-13 00:04:50 +02:00
Bananymous
6b73547989
All: edit gcc flags
2023-01-13 00:04:15 +02:00
Bananymous
7f01eaa936
Kernel: Move CPUID feature strings to cpp file
2023-01-13 00:03:37 +02:00
Bananymous
d0aa938b35
Kernel: remove unused function from kmalloc
2023-01-13 00:03:10 +02:00
Bananymous
4c7950cd3e
Kernel: remove unused function from IDT
2023-01-13 00:02:39 +02:00
Bananymous
61bd9da8e0
BAN: Add [[nodiscard]] to BAN functions returning ErrorOr
2023-01-12 23:57:07 +02:00
Bananymous
4ae4ad528a
Kernel: APIC use dprintln instead of kprintln
...
VESA drivers will be initialized much later now so kprintln
will not be available when initializing APIC
2023-01-12 13:52:22 +02:00
Bananymous
f412c164b3
Kernel: Rename ACPI debug print macro
2023-01-12 13:48:05 +02:00
Bananymous
5493d1bae1
Kernel: Add debug print to MMU and fix comment
2023-01-12 13:46:02 +02:00
Bananymous
301ad89783
Kernel: Unallocate RSDT after we are done with it
2023-01-12 13:45:01 +02:00
Bananymous
087d14fbb7
Kenrel: Remove unnecessary print from kmalloc_initialize()
2023-01-12 13:24:41 +02:00
Bananymous
3dfe062de1
Kernel: Cleanup TTY code
2023-01-12 13:24:41 +02:00
Bananymous
33a4fcc662
Kernel: Add helper macro for bochs magic break point
2023-01-12 13:24:41 +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
7d45b3cbd6
Kernel: Rewrote kmalloc to be much simpler and allow alignment
2023-01-10 21:10:36 +02:00
Bananymous
d89b6aa9ce
Kernel: Serial output now gives clickable links
2023-01-10 21:09:59 +02:00
Bananymous
6f9552d673
BAN: Add math to its own namespace
2023-01-10 19:11:27 +02:00
Bananymous
181478119e
Kernel: Paging is now enabled by boot.S
2023-01-10 17:53:29 +02:00
Bananymous
85068e27d6
BAN: BAN/Memory.h now provides the operator new and delete
2023-01-10 17:51:33 +02:00
Bananymous
c6467b8ebc
Kernel: Multiboot data and kernel command lines are now global variables
2023-01-10 17:50:24 +02:00
Bananymous
5106552bfd
Kernel: Serial output uses now "\r\n" as line endings
2023-01-10 11:24:30 +02:00
Bananymous
979a5960e4
Kernel: We don't use floating point arithemtic anymore in kernel
2023-01-10 11:10:17 +02:00
Bananymous
efd8638a96
Kernel: Improve kernel panic message and rename it 'panic'->'Panic'
2023-01-09 21:57:03 +02:00
Bananymous
531f470132
Kernel: Add helper to map pages with base address and size
...
This allows us to easily map enough pages for buffer with known size
VESA driver can now allocate enough memory for whole framebuffer if it
doesn't fit in a single page (1920x1080 for example)
2023-01-05 03:44:41 +02:00
Bananymous
086f0c7cf6
Kernel: Better error reporting from VESA and fix texmode rendering
2023-01-05 03:36:20 +02:00
Bananymous
d6623def32
Kernel: Paging uses now PAE with 2 MiB pages
2023-01-05 02:00:18 +02:00
Bananymous
a12ddfa12a
Kernel: Update PS/2 controller
2023-01-04 19:22:23 +02:00
Bananymous
fcec793873
Kernel: Shell now renders a mouse
...
PS/2 mouse doesn't seem to work with PIC.
2022-12-30 20:48:15 +02:00
Bananymous
9d9a6b2fec
Kernel: VESA can now print 8x16 bitmaps
2022-12-30 20:47:25 +02:00
Bananymous
f51ca4b642
Kernel: Rewrite IDT exception kernel panic message
2022-12-30 20:03:09 +02:00
Bananymous
fc05642b74
Kernel: Make Render from buffer public tty function
2022-12-30 19:57:44 +02:00
Bananymous
ef0b2010e0
Kernel: Add basic PS/2 Mouse driver
2022-12-30 19:38:21 +02:00
Bananymous
3c92aa45fb
Kernel: 'cpuinfo' command in shell now shows wheter you are running on 64-bit cpu
2022-12-28 19:46:37 +02:00
Bananymous
267367333e
Kernel: Move paging code to a helper
2022-12-28 19:01:01 +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
2a65c5fd0f
Kernel: Shell now actually prints to its TTY
2022-12-27 20:11:49 +02:00
Bananymous
fd4fdffd46
BAN::Formatter now takes putc like function as a parameter
...
This allows us to use capturing lambdas as a putc like function
2022-12-27 19:55:07 +02:00
Bananymous
98fc72b0d0
Kernel: kmalloc now aligns everything by alignof(max_align_t)
...
kmalloc properly aligns everything now.
I also changed so that kmalloc addresses are stored as uintptr_t
instead of void* or uint8_t* for easier arithemetic and less casting
2022-12-27 19:07:20 +02:00
Bananymous
9169020ad2
Kernel: Remove unnecessary checks from GraphicsPutCharAt()
2022-12-27 18:29:51 +02:00
Bananymous
620b836fc3
Kernel: VESA now somewhat handles Cursor in Graphics mode
2022-12-27 18:29:02 +02:00
Bananymous
2d46281c16
Kernel: TTY scroll is now done using memmove
...
This will be faster when memory functions will be optimized
2022-12-27 17:45:47 +02:00
Bananymous
5ae1fc58e9
Kernel: Clean code in tty and vesa
2022-12-27 17:22:45 +02:00
Bananymous
2535eb1c4c
Kernel: TTY now handles keeping terminal buffer
...
VESA Driver cannot scroll anymore, this is handled by tty
2022-12-27 17:06:33 +02:00
Bananymous
f7eb85babd
Kernel: IDT exceptions print better errors now
2022-12-23 15:56:10 +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
4c559f50a4
BAN: StringView::Split() now precomputes number of elements
...
We dont have to resize vector on PushBack()'s if we reserve required size
2022-12-20 11:37:28 +02:00
Bananymous
c82caacbaa
Kernel: Cleanup APIC code
...
APIC seems to work on my main machine, but not on other one
2022-12-20 04:45:46 +02:00
Bananymous
64a5a28ff0
Kernel: Add time since boot to Shell
2022-12-19 11:46:38 +02:00
Bananymous
c8866aa88b
Kernel: Move GDT and IDT assembly to inline assembly
2022-12-19 11:46:38 +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
7efa5bfb75
Kernel: Shell backspace unicode detection cleanup
2022-12-16 11:53:59 +02:00
Bananymous
f244728d33
Kernel: Add unicode support
2022-12-16 03:55:13 +02:00
Bananymous
6fe0d04f07
Kernel: Implement basic VESA Graphics mode driver
...
We now support VESA Graphics mode with some bitmap fonts
2022-12-16 00:47:03 +02:00
Bananymous
9274c9ee2f
Kernel: Abstract TTY to use new VESA
2022-12-15 19:05:07 +02:00
Bananymous
930661619b
Kernel: Add more functionality to Shell
...
commands 'time', 'cpuid', 'random'
2022-12-15 17:29:35 +02:00
Bananymous
a2d38af37a
Kernel: Implement 'cpuid' and enumerations for features
2022-12-15 17:28:54 +02:00
Bananymous
7bddcafadd
Kernel: Remove a lot of empty lines
2022-12-14 21:17:46 +02:00
Bananymous
711ba19a82
Kernel: Add basic Shell to test functionality
2022-12-13 21:34:50 +02:00
Bananymous
f8224e55b1
Kernel: Force strlen compilation so BAN can use it
2022-12-13 21:33:54 +02:00
Bananymous
ced05ff5f2
BAN: use only memcmp when comparing string(view) with const char*
2022-12-13 21:32:51 +02:00
Bananymous
833a82c8d1
Kernel: Fix keymay brace/bracket to correct way around
2022-12-13 21:10:25 +02:00
Bananymous
fd6e0ed0f7
Kernel: debug printing now show system time correctly
2022-12-13 20:44:52 +02:00
Bananymous
174daa3e02
Kernel: Keyboard event callback can now be registered later
2022-12-13 16:15:10 +02:00
Bananymous
171a33bbcd
Kernel/BAN: Add weekday to Time structure and get it with RTC
2022-12-13 14:37:10 +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
334abe6b27
Kernel: lol
2022-12-13 12:12:15 +02:00