Bananymous
77b5e6d44a
Kernel: Make ATABus use BAN::Atomic<> instead of gcc builtin atomics
2024-07-21 17:39:26 +03:00
Bananymous
ffe73165f9
Kernel: Fix PCI typo serail -> serial
2024-07-21 17:36:29 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
819c130366
BAN: If format string is started with space, numbers are padded with it
2024-07-19 21:39:31 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
7a0fb9a57f
Kernel: Fix TTY scroll clearing first and/or last characters from line
2024-07-16 22:49:49 +03:00
Bananymous
58fcd2b2fe
Kernel: Fix multi-interface USB device initialization
2024-07-16 22:29:18 +03:00
Bananymous
bdcf058e52
README: update discord link
2024-07-16 21:10:32 +03:00
Bananymous
61f0043cd8
resolver: Fix infinite debug printing loop, if client disconnects
2024-07-16 15:05:07 +03:00
Bananymous
dd7bfba8d5
ports: Compile with multiple jobs and fix curl install query
2024-07-16 15:04:46 +03:00
Bananymous
5b8fdbc82d
LibC: Don't expose math.h in stdlib.h
2024-07-16 12:47:38 +03:00
Bananymous
6a1c677cbc
Ports: Update doom port gitignore
2024-07-16 11:54:57 +03:00
Bananymous
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
Bananymous
fd8dc03ae9
BAN: Default initialize optional storage
...
This removes maybe uninitialized warning when using default initialized
optionals.
2024-07-16 11:19:16 +03:00
Bananymous
1337758660
Kernel: Make USB HID interfaces configure all endpoints
2024-07-16 00:23:26 +03:00
Bananymous
339e8a7910
Kernel: Fix USB keyboard state updating with variable reports
2024-07-16 00:03:00 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
0578d41500
Kernel: Implement WriteCombining memory
...
This makes framebuffer much faster on real hardware
2024-07-15 22:09:09 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
86e9d92ecb
Kernel: Take ownership of xHCI controller from bios
2024-07-14 03:31:35 +03:00
Bananymous
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
Bananymous
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
Bananymous
1efc6a1385
Kernel: Implement simple USB HID driver
...
This should be easily expandable to add HID devices
2024-07-14 02:04:48 +03:00
Bananymous
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
Bananymous
749be67df3
Kernel: Fix cxxabi for function static variable guards
2024-07-14 01:53:50 +03:00
Bananymous
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
Bananymous
110a45bee6
BAN: Implement Variant::has_value() and Variant::operator bool()
2024-07-12 20:37:56 +03:00
Bananymous
f120da3aca
Kernel: USB device now sets the current configuration
2024-07-12 11:26:06 +03:00
Bananymous
240684bc1f
Kernel: Refactor some xHCI code and add new definitions
2024-07-12 11:25:24 +03:00
Bananymous
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
Bananymous
e905634343
Kernel: Fix bugs and cleanup USB and xHCI code and API
2024-07-11 14:10:55 +03:00
Bananymous
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
Bananymous
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
Bananymous
5dc441c4af
Kernel/userspace: Implement KD_LOADFONT and loadfont program
2024-07-03 09:02:49 +03:00
Bananymous
940fb0d1fd
Base: Add /var/www with dummy index.html
2024-07-02 21:34:32 +03:00
Bananymous
f18c33563d
Kernel: Fix PCI MSI-X allocation
2024-06-30 20:36:43 +03:00
Bananymous
10e8a54b2e
General: Add more missing features to README
2024-06-29 22:13:33 +03:00
Bananymous
f792976d6d
BuildSystem: Don't fill mount dir if mounting fails
2024-06-29 22:12:36 +03:00
Bananymous
08cbd009ac
Kernel: PCI don't report multi function bit with header_type()
2024-06-29 22:11:55 +03:00
Bananymous
3d4219bfee
Kernel: Don't panic if nvme initialization fails
2024-06-29 22:07:55 +03:00
Bananymous
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