Commit Graph

1990 Commits

Author SHA1 Message Date
96c7e9e29d Kernel: Cleanup VirtualRange code
Virtual range does not need to look into the page table for mapped
physcial pages. It can (and should) just keep track of them itself.
2024-07-21 17:35:07 +03:00
02051ed60f Kernel: Move keyboard kernel panic to the general input device
This will allow command to work without requiring it per keyboard driver
2024-07-21 17:33:38 +03:00
f49689caac Kernel: Implement API for sending IPIs for only one processor
Also move the spin wait to check for pending IPI sends to the start of
ipi sending function. There is no need to wait for IPI send succeeding
right after it. It is enough to make sure there are not multiple IPIs
being sent at the same time.
2024-07-21 17:30:59 +03:00
819c130366 BAN: If format string is started with space, numbers are padded with it 2024-07-19 21:39:31 +03:00
974b9b992d Kernel: Fix process exiting infinite loop
If process was exiting and had a process waiting for it and that waiting
process got interrupted, the exiting process could never exit.
2024-07-18 21:40:44 +03:00
3ab1214012 LibC: Fix _toupper and _tolower definitions
They were using C++ global namespace, which of course does not exist for
C targets.
2024-07-18 01:10:51 +03:00
4b917390ac Kernel: Fix sse state saving
This was broken when I added SMP support. This patch makes sse kind of
dumb as it is saved and restored on every interrupt, but now it at least
works properly... I'll have to look into how sse can get optimized
nicely with SMP. Simple way would be pinning each thread to a specific
processor and doing pretty much what I had before, but sse thread saved
in processor rather than static global.
2024-07-16 23:15:11 +03:00
7a0fb9a57f Kernel: Fix TTY scroll clearing first and/or last characters from line 2024-07-16 22:49:49 +03:00
58fcd2b2fe Kernel: Fix multi-interface USB device initialization 2024-07-16 22:29:18 +03:00
bdcf058e52 README: update discord link 2024-07-16 21:10:32 +03:00
61f0043cd8 resolver: Fix infinite debug printing loop, if client disconnects 2024-07-16 15:05:07 +03:00
dd7bfba8d5 ports: Compile with multiple jobs and fix curl install query 2024-07-16 15:04:46 +03:00
5b8fdbc82d LibC: Don't expose math.h in stdlib.h 2024-07-16 12:47:38 +03:00
6a1c677cbc Ports: Update doom port gitignore 2024-07-16 11:54:57 +03:00
e30952efee Kernel: Implement key repeating for USB keyboard
USB keyboards don't send repeating keys automatically, so it has to be
emulated in software.
2024-07-16 11:54:57 +03:00
fd8dc03ae9 BAN: Default initialize optional storage
This removes maybe uninitialized warning when using default initialized
optionals.
2024-07-16 11:19:16 +03:00
1337758660 Kernel: Make USB HID interfaces configure all endpoints 2024-07-16 00:23:26 +03:00
339e8a7910 Kernel: Fix USB keyboard state updating with variable reports 2024-07-16 00:03:00 +03:00
a60b460701 Kernel: Update USB HID code to support multiple top-level collections
This allows me to use my laptops own keyboard!
2024-07-16 00:01:53 +03:00
a5cb4057f9 Kernel: Implement unified input files for device hot-plugging support
/dev/keyboard and /dev/mouse can be read for events from any attached
keyboard or mouse respectively. This makes device hot-plugging support
pretty much automatic for TTY, GUI, and whatever takes input.
2024-07-15 22:11:15 +03:00
9d7f97ccd5 Kernel: Implement DevFileSystem::remove_device
This function cleanly removes the devices from the whole filesystem.

USB devices are now removed from the filesystem as soon as they are
destroyed.
2024-07-15 22:10:42 +03:00
0578d41500 Kernel: Implement WriteCombining memory
This makes framebuffer much faster on real hardware
2024-07-15 22:09:09 +03:00
42c3fa24f0 Kernel: Add support for HID Report ID and parsing all collections
Only the first top-level collection is used for the device, but that
seems to generally be what keyboard and mouse use for input.
2024-07-15 15:51:07 +03:00
60b396fee5 Kernel: Add mouse move and scroll event merging back
This makes mouse work much faster when reading can't keep up with the
amount of events.
2024-07-15 15:45:20 +03:00
4cd9252ff6 Kernel: Fix USB code
Fix USB Keyboard scan code table for bottom row of keyboard

Support multiple interfaces on a single USB device

Add usb mouse to default qemu settings
2024-07-15 11:48:48 +03:00
75875d3a8f Kernel: Set interval and average trb length on configure endpoint
Real controllers seem to require this while spec 4.8.2.4 says that they
should be left as zero.
2024-07-15 11:46:28 +03:00
86e9d92ecb Kernel: Take ownership of xHCI controller from bios 2024-07-14 03:31:35 +03:00
baa4e6475a Kernel: Implement basic USB Mouse
This has the same problem I described in previous commit for keyboard
2024-07-14 02:11:32 +03:00
ac5c77ee2c Kernel: Implement USB Keyboard
This is kinda hacky, as I had disable the PS/2 initialization so that
usb keyboard gets /dev/keyboard0. I should add device hot plugging
support for TTY and GUI...
2024-07-14 02:09:18 +03:00
1efc6a1385 Kernel: Implement simple USB HID driver
This should be easily expandable to add HID devices
2024-07-14 02:04:48 +03:00
442ea8a692 BAN: Remove Optional emplace constructor
This was kind breaking some initializations. Emplacing is still possible
through Optional::emplace
2024-07-14 01:53:50 +03:00
749be67df3 Kernel: Fix cxxabi for function static variable guards 2024-07-14 01:53:50 +03:00
a97a574718 Kernel: Rewrite the whole input system
PS/2 code is now kind of messed up, but it works. Keyboards and mice are
now an abstract class that is automatically exposed to userspace. This
will make adding USB input much nicer.
2024-07-14 01:53:50 +03:00
110a45bee6 BAN: Implement Variant::has_value() and Variant::operator bool() 2024-07-12 20:37:56 +03:00
f120da3aca Kernel: USB device now sets the current configuration 2024-07-12 11:26:06 +03:00
240684bc1f Kernel: Refactor some xHCI code and add new definitions 2024-07-12 11:25:24 +03:00
62003d96f3 BAN: Implement Optional::value_or
This will return value specified in the argument if optional is not
storing any value.
2024-07-12 11:22:10 +03:00
e905634343 Kernel: Fix bugs and cleanup USB and xHCI code and API 2024-07-11 14:10:55 +03:00
14dce1abac Kernel: Start work on USB stack
Current code can enumerate all xHCI devices and detect their type based
on the class code on device or interface descriptors.
2024-07-10 12:06:00 +03:00
8ddab05ed3 BuildSystem: Cleanup userspace directory layout
userspace programs are now in userspace/programs
userspace tests are now in userspace/tests

This makes listing userspace projects much cleaner. Libraries were
already separated to their own directory, so other programs should also.
2024-07-03 09:18:02 +03:00
5dc441c4af Kernel/userspace: Implement KD_LOADFONT and loadfont program 2024-07-03 09:02:49 +03:00
940fb0d1fd Base: Add /var/www with dummy index.html 2024-07-02 21:34:32 +03:00
f18c33563d Kernel: Fix PCI MSI-X allocation 2024-06-30 20:36:43 +03:00
10e8a54b2e General: Add more missing features to README 2024-06-29 22:13:33 +03:00
f792976d6d BuildSystem: Don't fill mount dir if mounting fails 2024-06-29 22:12:36 +03:00
08cbd009ac Kernel: PCI don't report multi function bit with header_type() 2024-06-29 22:11:55 +03:00
3d4219bfee Kernel: Don't panic if nvme initialization fails 2024-06-29 22:07:55 +03:00
d58a569660 WindowServer: Limit msync to 60 Hz and only sync necessary pages
This speeds up GUI a lot. I can now run GUI on real hardware at almost
60 Hz.
2024-06-29 19:00:58 +03:00
fd3cf5d2b1 BuildSystem: Allow running qemu without kvm
If you set QEMU_ACCEL to empty string, build system won't try to look
for kvm support.
2024-06-29 19:00:10 +03:00
1a844426c3 Kernel: Add fast path for framembuffer sync if bpp == 32 2024-06-28 23:34:11 +03:00