Commit Graph

52 Commits

Author SHA1 Message Date
8670364f44 BAN: Remove unnecessary include from Array.h 2024-03-06 00:01:06 +02:00
7f028f70d5 Kernel: Replace CriticalScopes with SpinLock in PS/2 and input code 2024-02-29 19:17:28 +02:00
d94f6388b7 Kernel: Fix all broken locks from new mutexes 2024-02-28 22:45:34 +02:00
9594ee8e47 Kernel: Start making device numbers unique for each device 2024-02-22 15:53:48 +02:00
3fc1edede0 Kernel/LibC: Implement super basic select
This does not really even block but it works... :D
2024-02-12 17:26:33 +02:00
ed0b1a86aa Kernel: Semaphores and Threads can now be blocked with timeout 2024-02-09 15:28:15 +02:00
dfe5a2d665 All: Cleanup all files
Add newline to end of files and remove whitespace from end of lines
2024-01-24 15:53:38 +02:00
c6130f33d7 Kernel: Implement MSI, MSI-X and interrupt reservation 2024-01-13 18:21:21 +02:00
56a29dc176 Kernel: Fix PS/2 Controller if port 0 is empty 2024-01-13 17:05:29 +02:00
db933d5466 Kernel: Improve keymap file loading
Now you can include other files in keymaps and set which keys are
modifier keys

Only keys that are set in keymap file are actually updated
2024-01-12 02:55:06 +02:00
83ca469ed7 Kernel: Modifier keys are taken from current keyboard layout
I used to assume where all modifiers were, but they are now taken
from keyboard layout.
2024-01-11 11:53:11 +02:00
d2c0718f7d Kernel: Fix toggleable modifier keys and add two more keys 2024-01-11 11:43:05 +02:00
8f89519bcf Kernel: Keymaps can now be loaded from files 2024-01-10 14:43:19 +02:00
e6d42e5c45 Kernel: Add timeout for device commands on PS/2 devices 2024-01-10 12:51:24 +02:00
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
e4f48cbc73 Kernel: Move PS/2 command queue to controller instead of device 2024-01-09 20:00:19 +02:00
d760239748 Kernel: Do a big rewrite of PS/2 code
Command sending+response reading is now synchronized. This allows
bochs to properly initialize both mouse and keyboard simultaneously.

Also status register is checked EVERY time read/write to other IO
ports is performed.
2024-01-08 10:50:55 +02:00
f0cf54e194 Kernel: Reads from PS/2 keyboard and mouse can be terminated 2024-01-05 12:13:44 +02:00
54c811ac2e Kernel: Fix some mouse scrolling bugs and cleanup event generation 2024-01-04 19:50:26 +02:00
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
d1e187570e Kernel: Fix old keyboard command 2024-01-04 12:08:23 +02:00
d4191c0d94 Kernel: Reorganize PS/2 files to their own directory 2024-01-04 12:04:45 +02:00
c2957d8761 Kernel: PS/2 device automatically sends commands when appended 2024-01-04 12:04:45 +02:00
891ced4da2 Kernel: Move PS2Device to its own file 2024-01-04 12:04:45 +02:00
8f8d6bddc0 Kernel: Unify PS2Device to handle commands instead of inherited 2024-01-04 12:04:45 +02:00
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
951eac6bfa Kernel: Implement hacky non-block read for ps2 keyboard 2023-12-19 00:20:46 +02:00
c140dd2a65 Kernel: Fix keyboard layout for underscore 2023-12-01 12:31:16 +02:00
1405712f26 Kernel: Make PS/2 keyboard wait until interrupts are enabled 2023-11-07 15:58:50 +02:00
f3d9da9549 Kernel: Rewrite all read/write functions to use BAN::ByteSpan
This allows us to not work with raw pointers and use sized containers
for reading and writing.
2023-10-24 11:56:00 +03:00
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
27eb5af6f0 Kernel: Rework interrupt mechanism
All interruptrable classes now inherit from Interruptable which
has methdo handle_irq which is called on a interrupt.
2023-10-05 18:53:45 +03:00
Bananymous
921d95d18f All: Clear lines with only whitspace in them 2023-09-10 00:31:42 +03:00
Bananymous
dd9af56e21 Kernel: Start work on making inodes more thread safe
All inode operations are now locked and thread blocked
2023-09-10 00:31:42 +03:00
Bananymous
323de3c866 Kernel: Rework whole Terminal structure
Serial monitors can now be used as a output. This requires editing
init code for the stdio opening. Serial input is not supported, so qemu
still needs graphical window for ps/2 keyboard.
2023-09-04 19:34:18 +03:00
Bananymous
c732297623 Kernel: Rename TimerHandler to SystemTimer
I changed SystemTimer to only handle the "best" supported timer
it can initialize.
2023-08-04 16:06:47 +03:00
Bananymous
ca5a097ef5 Kernel: Add function to retrieve boot time as timespec 2023-08-04 16:06:47 +03:00
Bananymous
1f8a5f0ce5 Kernel: F11 now prints current time to debug output
This allows better timer percision and system freeze checks
2023-08-04 15:22:51 +03:00
Bananymous
7eb2c140fe Kernel: Move RTC to Timer directory
PIT ms counter seems to be off by multiple seconds/minute. I will
be probably changing to HPET for system time
2023-08-04 11:12:16 +03:00
Bananymous
659adb89a6 Kernel: Start work on abstracting Timers 2023-08-04 10:29:42 +03:00
Bananymous
9bcfb34524 Kernel: Rewrite whole device structure
We now have DevFileSystem which is derived from RamFileSystem. All
devices are RamInodes. We don't have separate DeviceManager anymore.
To iterate over devices, you can loop througn every inode in devfs.
2023-07-10 23:17:14 +03:00
Bananymous
aa2aee684b Kernel: remove message from BAN::Error
We don't store the error message anymore in BAN::Error.
Instead we store a error code that can be mapped into a string.
This allows BAN::Error to only take 4 bytes instead of 128.

We should also make some kernel initialization just panic instead
of returning errors since they are required for succesfull boot
anyway.
2023-04-11 23:25:21 +03:00
Bananymous
e1534ad25b Kernel: Fix keys in PS2Keymap 2023-04-03 20:25:23 +03:00
Bananymous
b87dae7e7c Kernel: Device dev and rdev number is done more properly
Also hd* partitions are now 1 indexed instead of 0
2023-04-03 11:43:16 +03:00
Bananymous
cbb0f6be9a Kernel: cleanup includes
I went quickly went through all files since I found some weird
includes :D
2023-04-01 02:14:49 +03:00
Bananymous
a3ba6da6f3 Kernel: Move DeviceManager to its own file 2023-03-30 22:39:45 +03:00
Bananymous
c2e3b422cc Kernel: Add Semaphore to block threads 2023-03-30 18:46:33 +03:00
Bananymous
f9cc114907 Kernel: All devices have atime, mtime, ctime at their creation 2023-03-30 13:15:46 +03:00
Bananymous
ab3cdea548 Kernel: Rewrite mounting code 2023-03-29 21:34:48 +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