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
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
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
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
5dc441c4af
Kernel/userspace: Implement KD_LOADFONT and loadfont program
2024-07-03 09:02:49 +03:00
Bananymous
f18c33563d
Kernel: Fix PCI MSI-X allocation
2024-06-30 20:36:43 +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
1a844426c3
Kernel: Add fast path for framembuffer sync if bpp == 32
2024-06-28 23:34:11 +03:00
Bananymous
42237a3bc8
Kernel: Implement fast scrolling for TTY
2024-06-28 23:15:03 +03:00
Bananymous
48a76426e7
BAN: Add more APIs for Atomic and make compare_exchage take a reference
2024-06-28 21:47:47 +03:00
Bananymous
31568fc5a1
Kernel: Rewrite Sockets to not be TmpInodes
...
TmpInodes just caused issues because TmpFS kept them alive. There was
really no reason for sockets to even be stored inside a TmpFS...
2024-06-27 00:35:19 +03:00
Bananymous
cb07142832
Kernel: ACPI allow more calling or \_S5
...
Spec says that \_Sx must have 4 fields, but virtual box seems to only
have the two defined once. This patch allows shutodown on virtual box
2024-06-25 23:25:10 +03:00
Bananymous
60a05412c9
Kernel: ACPI implement SizeOf
2024-06-25 23:24:51 +03:00
Bananymous
0179f5ea09
Kernel: ACPI add \_OS string
2024-06-25 23:24:19 +03:00
Bananymous
f671ed7e3f
Kernel: ACPI implement integer stores to registers as copies
...
Before storing const integer and then modifying the register it would
error.
2024-06-25 23:23:52 +03:00
Bananymous
2fccff5a35
Kernel: Implement ACPI IndexOp into Strings
2024-06-25 23:23:00 +03:00
Bananymous
af4b138094
Kernel/LibC: Implement realpath
...
realpath is implemented as a syscall. This is not really required but it
was the easiest way to get it working as there is already path
canonicalization at kernel level.
2024-06-25 19:32:40 +03:00
Bananymous
25099b4c98
Kernel: Don't validate O_SEARCH for non-directories
2024-06-25 19:27:55 +03:00
Bananymous
d7b8458a56
Kernel: Fix TCP sending
...
TCP send was effectively always waiting for connection to close and then
return a value of 0.
2024-06-25 11:04:03 +03:00
Bananymous
67dfe0bcf3
BAN: Allow String::formatted to fail
2024-06-25 11:04:03 +03:00
Bananymous
9e1b5cbaab
BuildSystem: Cleanup CMake code to allow libc only installation
...
There was no way to just install libc which is required for stdlibc++
2024-06-21 01:45:14 +03:00
Bananymous
4f0457a268
Kernel: Rewrite a lot of TCP code and implement TCP server sockets
...
TCP stack is now implemented much closer to spec
2024-06-20 13:26:50 +03:00
Bananymous
bce16cdd6e
Kernel: Fix how socket closing works
...
Sockets are now closed only when they are not referenced any more. This
allows child process to close socket and still keep it open for the
parent.
2024-06-19 10:39:44 +03:00
Bananymous
ad6d95ba52
BuildSystem: Rework the whole cmake build system
...
Now files are installed using the install() command instead of manually
copying files to their destinations. This allows automatic recompilation
of headers that did not work previously
2024-06-19 09:40:03 +03:00
Bananymous
318ce5dec8
All: Fix a lot of compiler warnings from header files
...
While reworking build system, header files started to report warnings.
2024-06-18 23:02:10 +03:00
Bananymous
c69919738b
BuildSystem: Move all userpace libraries under the userspace directory
...
As the number of libraries is increasing, root directory starts to
expand. This adds better organization for libraries
2024-06-18 13:14:35 +03:00
Bananymous
f1e366d36f
Kernel: Free keyboard mutex while waiting for data to read
...
This was making select hang if one thread was trying to read from
keyboard.
2024-06-17 23:04:37 +03:00
Bananymous
be7ed8e74a
Kernel/LibC: Implement {get,set}sockopt()
...
These are pretty much dummy functions in the kernel side. Only case that
is handled is SOL_SOCKET with SO_ERROR. This is hard coded to return no
error. Network stack is currently synchronous, so all errors are already
reported through synchronous network functions.
2024-06-17 20:56:48 +03:00
Bananymous
cad55a4da5
Kernel/LibC: Implement getsockname for ipv4 sockets
2024-06-17 20:54:45 +03:00
Bananymous
511fc870a1
BAN: Mark RefPtr and WeakPtr operator bool() as explicit
2024-06-17 20:19:36 +03:00
Bananymous
ea7fc7f6c4
Kernel: Implement read-only FAT12/16/32 driver with long name support
...
You can now mount FAT filesystems! This code might not work perfectly
but my quick testing seemed to work on all (FAT12/16/32) variants.
2024-06-14 01:04:12 +03:00
Bananymous
6b1d5d28be
Kernel: VFS root now has to be block device instead of partition
2024-06-14 00:19:12 +03:00
Bananymous
766439db6d
Kernel: Start work on adding support for new filesystems
...
Old code tried to create ext2 filesystem from all devices.
2024-06-11 10:50:26 +03:00
Bananymous
d4903caafa
Kernel: Combine consecutive mouse move and scroll events
...
This makes mouse work much smoother when running without kvm.
2024-06-11 00:07:31 +03:00
Bananymous
ffacff67cf
LibFont: Move PSF code to separate file
2024-06-10 16:10:05 +03:00
Bananymous
530c259e71
Kernel: Close unix domain socket when it gets destoyed
...
Inode closing is something that needs a complete rework. Currently all
sockets are closed when close() is called, which leads to connection
closing if you fork()/exec() with socket being marked as CLOEXEC.
Inodes should probably only be closed once they are not referenced
anywhere.
2024-06-03 18:06:01 +03:00
Bananymous
765ccfa18c
Kernel: Deliver SIGCHLD on process exit and ignore it properly
2024-06-03 17:58:24 +03:00
Bananymous
bd1290706a
Kernel: Implement SharedMemoryObject cloning
2024-06-03 03:41:00 +03:00
Bananymous
aec5a09caf
Kernel/LibC: Implement SYS_ISATTY and isatty()
2024-06-03 03:36:25 +03:00
Bananymous
446220494e
Kernel: Unix domain sockets close can now be detected
...
When a unix domain socket is closed and it has a connection to another
socket, it will make the other socket readable and recv will return 0.
This allows detection of socket closing
2024-06-02 16:48:55 +03:00
Bananymous
8bfacb0091
Kernel: Implement deletion of SMO objects
2024-05-31 13:04:23 +03:00