Commit Graph

1435 Commits

Author SHA1 Message Date
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
e8f853a197 Kernel: After device updates, reschedule instead of sleeping 2024-01-09 11:21:00 +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
2fec718590 Bootloader: cleanup code 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
41ae05dd6e Kernel: Update block_or_eintr API to return ErrorOr<> 2024-01-05 12:13:11 +02:00
40f55be587 Userspace: Write simple mouse test program
This program draws circle on framebuffer, that you can move with
mouse, resize with scroll, and recolor with mouse buttons.
2024-01-04 19:50:26 +02:00
54c811ac2e Kernel: Fix some mouse scrolling bugs and cleanup event generation 2024-01-04 19:50:26 +02:00
12a78c822e Kernel: Explicitly construct ByteSpan from Span<uint8_t>
VSC complains about not finding proper constructor, this fixes that.
2024-01-04 12:17:55 +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
d2d12d5281 Kernel: validate_{string,pointer}_access now return ErrorOr<void>
Now that signals are only processed when returning to userspace,
address validation has to do an early return.
2024-01-03 23:53:04 +02:00
0ba278041b Kernel: Start exec by loading the ELF file. It might not exist... 2024-01-03 23:50:02 +02:00
ccaa159a73 Bootloader: Add support for ext2 blocks up to 4 KiB
This should work with blocks bigger than that, but my linux system
only supports up to 4 KiB, so I cannot test this.

This allows getting rid of forced block size in mkfs and let the
program select appropriately sized blocks.
2024-01-03 18:26:03 +02:00
7356a83a44 Bootloader: Optimize some unnecessary branches on carry add/sub 2024-01-03 17:05:33 +02:00
2a68df81e2 Bootloader: Fix bootloader on bochs
Bochs int 0x10 seems to scrap full ebp and top bits in some
registers. I now save all 32-bit registers on call frame. Also
ebp is across all int 0x10 calls.
2024-01-03 13:09:55 +02:00
50ca2ac09e Bootloader: Interpret 0x7F (DEL) as backspace
This allows backspace to work over qemu's serial connection
2024-01-03 11:58:50 +02:00
b0ff2392a1 Kernel: Add some helpful debug prints
Log RIP when stack pointer is out of bounds.

Log all syscalls that return ENOTSUP
2024-01-03 02:08:01 +02:00
001e95f973 Kernel: Optimize sse saving/loading
Only save and load sse when new thread is trying to execute sse
instruction. There is no need to do that every time we enter kernel.
2024-01-03 02:06:49 +02:00
db0650cf10 LibC: Implement basic atexit. This allows clean exit from doom (soon) 2024-01-03 00:30:37 +02:00
753de3d9f0 ls: Write group name instead of gid in list mode 2024-01-03 00:15:13 +02:00
668c4c8976 LibC: Implement getgrnam and getgrgid 2024-01-03 00:14:49 +02:00
d2bc399770 BAN: Make StringView::split const and fix bug with empties 2024-01-03 00:14:29 +02:00
1bd33e76e5 cat/cat-mmap: print newline if file doesn't end in one 2024-01-02 23:27:13 +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
96d831c31a Kernel/LibC/Userspace: Implement chown and set tty owner on login 2024-01-02 22:19:38 +02:00
07d5d3f936 BAN: Simple iterator now contains valid flag
This allows iteration over empty containers
2023-12-29 14:49:57 +02:00
51820b15cb README: Add packages required by compilation in pacman 2023-12-29 03:11:30 +02:00
9fafafb17e BuildSystem: Add instructions + fixes to build system
You can now easily build with clean ubuntu install
2023-12-28 21:37:18 +02:00
7c6565880d BuildSystem: Use git apply instead of am
This allows you to not have configured git user
2023-12-28 20:16:36 +02:00
93a72ebd06 BuildSystem: Download cmake only if needed 2023-12-28 19:50:22 +02:00
4307968182 All: Start work again on sse support 2023-12-28 19:14:42 +02:00
5d83ab2289 BuildSystem: Download correct cmake if it is not available 2023-12-28 19:13:27 +02:00
af80bad87a BuildSystem: Allow running custom version of cmake
You can now set the environment variable CMAKE_COMMAND to use custom
cmake version.
2023-12-27 13:01:11 +02:00
87272f0cd7 BuildSystem: Create build directory if it doesn't exists 2023-12-27 12:36:40 +02:00
8b5e437936 AOC2023: Implement day25 part1
7 starts missing + partly broken day22. I might finish these soon...
2023-12-26 20:04:42 +02:00
3939da4fb0 BuildSystem: Increase image size 50MiB -> 500 MiB 2023-12-26 15:01:12 +02:00
d87fa1a7ea AOC2023: Implement day24 part1 2023-12-26 14:10:49 +02:00
910a57089b AOC2023: Implement day23 part1
My day22 implementation is off by couple of bricks...
2023-12-26 00:56:35 +02:00
861bf27e96 BAN: Implement abs() 2023-12-26 00:54:06 +02:00
36590fb5c7 AOC2023: Implement day21 part1 2023-12-24 14:58:21 +02:00
ce990c3026 AOC2023: Implement day20 part1 2023-12-24 13:39:26 +02:00
b833239a82 BAN: Make hashmap work with non-copy constructable values 2023-12-24 13:38:47 +02:00
6fec142760 BAN: Add requires clauses for vector 2023-12-24 13:38:20 +02:00