Bananymous
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
Bananymous
2fec718590
Bootloader: cleanup code
2024-01-08 10:50:55 +02:00
Bananymous
f0cf54e194
Kernel: Reads from PS/2 keyboard and mouse can be terminated
2024-01-05 12:13:44 +02:00
Bananymous
41ae05dd6e
Kernel: Update block_or_eintr API to return ErrorOr<>
2024-01-05 12:13:11 +02:00
Bananymous
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
Bananymous
54c811ac2e
Kernel: Fix some mouse scrolling bugs and cleanup event generation
2024-01-04 19:50:26 +02:00
Bananymous
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
Bananymous
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
Bananymous
d1e187570e
Kernel: Fix old keyboard command
2024-01-04 12:08:23 +02:00
Bananymous
d4191c0d94
Kernel: Reorganize PS/2 files to their own directory
2024-01-04 12:04:45 +02:00
Bananymous
c2957d8761
Kernel: PS/2 device automatically sends commands when appended
2024-01-04 12:04:45 +02:00
Bananymous
891ced4da2
Kernel: Move PS2Device to its own file
2024-01-04 12:04:45 +02:00
Bananymous
8f8d6bddc0
Kernel: Unify PS2Device to handle commands instead of inherited
2024-01-04 12:04:45 +02:00
Bananymous
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
Bananymous
0ba278041b
Kernel: Start exec by loading the ELF file. It might not exist...
2024-01-03 23:50:02 +02:00
Bananymous
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
Bananymous
7356a83a44
Bootloader: Optimize some unnecessary branches on carry add/sub
2024-01-03 17:05:33 +02:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
db0650cf10
LibC: Implement basic atexit. This allows clean exit from doom (soon)
2024-01-03 00:30:37 +02:00
Bananymous
753de3d9f0
ls: Write group name instead of gid in list mode
2024-01-03 00:15:13 +02:00
Bananymous
668c4c8976
LibC: Implement getgrnam and getgrgid
2024-01-03 00:14:49 +02:00
Bananymous
d2bc399770
BAN: Make StringView::split const and fix bug with empties
2024-01-03 00:14:29 +02:00
Bananymous
1bd33e76e5
cat/cat-mmap: print newline if file doesn't end in one
2024-01-02 23:27:13 +02:00
Bananymous
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
Bananymous
96d831c31a
Kernel/LibC/Userspace: Implement chown and set tty owner on login
2024-01-02 22:19:38 +02:00
Bananymous
07d5d3f936
BAN: Simple iterator now contains valid flag
...
This allows iteration over empty containers
2023-12-29 14:49:57 +02:00
Bananymous
51820b15cb
README: Add packages required by compilation in pacman
2023-12-29 03:11:30 +02:00
Bananymous
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
Bananymous
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
Bananymous
93a72ebd06
BuildSystem: Download cmake only if needed
2023-12-28 19:50:22 +02:00
Bananymous
4307968182
All: Start work again on sse support
2023-12-28 19:14:42 +02:00
Bananymous
5d83ab2289
BuildSystem: Download correct cmake if it is not available
2023-12-28 19:13:27 +02:00
Bananymous
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
Bananymous
87272f0cd7
BuildSystem: Create build directory if it doesn't exists
2023-12-27 12:36:40 +02:00
Bananymous
8b5e437936
AOC2023: Implement day25 part1
...
7 starts missing + partly broken day22. I might finish these soon...
2023-12-26 20:04:42 +02:00
Bananymous
3939da4fb0
BuildSystem: Increase image size 50MiB -> 500 MiB
2023-12-26 15:01:12 +02:00
Bananymous
d87fa1a7ea
AOC2023: Implement day24 part1
2023-12-26 14:10:49 +02:00
Bananymous
910a57089b
AOC2023: Implement day23 part1
...
My day22 implementation is off by couple of bricks...
2023-12-26 00:56:35 +02:00
Bananymous
861bf27e96
BAN: Implement abs()
2023-12-26 00:54:06 +02:00
Bananymous
36590fb5c7
AOC2023: Implement day21 part1
2023-12-24 14:58:21 +02:00
Bananymous
ce990c3026
AOC2023: Implement day20 part1
2023-12-24 13:39:26 +02:00
Bananymous
b833239a82
BAN: Make hashmap work with non-copy constructable values
2023-12-24 13:38:47 +02:00
Bananymous
6fec142760
BAN: Add requires clauses for vector
2023-12-24 13:38:20 +02:00
Bananymous
84b2438b3d
BAN: Add requires for copy constructor for linked list
2023-12-24 13:37:49 +02:00
Bananymous
0e714d5eb4
BAN: Implement String::operator==(const String&)
2023-12-24 13:36:46 +02:00
Bananymous
9b8e6e6629
BAN: Implement is_*constructable
2023-12-24 13:36:12 +02:00
Bananymous
4146f2777b
AOC2023: Implement 10 hour solution to day19 part2
2023-12-23 20:53:50 +02:00