Bananymous
267fdf9fa1
Kernel: Remove storage devices after unplugging them
2025-02-07 18:04:54 +02:00
Bananymous
26d2a4420e
Kernel: Don't limit xHCI TRB transfer length to max packet size
...
This made no sense and just used a ton of TRBs.
This patch also fixes some incorrectly set flags in data/status stage
TRBs.
2025-02-06 23:18:14 +02:00
Bananymous
c623ad7da0
Kernel: Use correct USB endpoint field to determine interval
...
I was using the wrong endpoint descriptor field which caused intervals
to be messed up.
2025-02-06 23:18:14 +02:00
Bananymous
7de689055c
Kernel: Pass xHCI device information in structs
...
This makes code more readable and extendable
2025-02-06 23:18:14 +02:00
Bananymous
63b15a8855
Kernel: Rename USB initialize_endpoint -> configure_endpoint
...
This makes more sense as the USB command is CONFIGURE_ENDPOINT
Also configure_endpoint can be called multiple times on the same
endpoint. There was no reason to limit this to only one call.
2025-02-06 22:10:00 +02:00
Bananymous
a2a7302964
Kernel: Make sure USB class driver is deinitialized before xhci device
2025-02-06 22:00:26 +02:00
Bananymous
6a5367dbe3
Kernel: Don't initialize USB alternate interfaces
2025-02-06 21:43:15 +02:00
Bananymous
6768a18475
Kernel: Don't parse xHCI custom slot_types
...
xHCI spec mandates that slot_type for USB protocol is 0.
2025-02-06 21:41:44 +02:00
Bananymous
242ed4a3c2
Kernel: Remove support for custom xHCI speed_ids
...
This gets really weird with hubs and I don't think even linux handles
them.
2025-02-06 21:38:30 +02:00
Bananymous
f9b70d1b5b
Kernel: Don't enter infinite loop on unexpected serial behaviour
2025-02-06 20:59:17 +02:00
Bananymous
faa5252191
Kernel: Fix TTY ANSI CSI m and prevent crash :)
2025-02-06 20:58:03 +02:00
Bananymous
b30a79c7fe
Kernel: Temporary hack to "fix" munmap
...
My current munmap implementation does not support partial unmaps and
GCC relies on this behaviour. This patch removes unmapping if the
address and len does not fully contain the mmap region.
2025-02-01 22:25:22 +02:00
Bananymous
d1c3d3d5aa
Kernel: Fix ANSI CSI L
...
With my new memcpy implementation this crashed. I have no idea how this
was not crashing before :D
2025-01-28 18:41:53 +02:00
Bananymous
5938cc4086
Kernel: Support pselect sigmask
2025-01-28 17:17:59 +02:00
Bananymous
7c57d736c6
Kernel/LibC: Fix dirent functions
...
dirent functions used to fail if a directory contained more than 128
files :D
2025-01-28 17:15:11 +02:00
Bananymous
cbe3f2a4ac
BuildSystem: Cleanup and fix cmake files
...
I now set library SONAME so i don't have to build them in build root.
Creating font now makes sure the install directory exists. This allows
building using make files.
LibC now links agains ligcc
2025-01-28 17:11:21 +02:00
Bananymous
7a10e0e347
Kernel: Fix TmpFS inode linking
...
TmpFS now looks for empty entries in directories instead of always
appending files to the end of directories. This makes kernel not crash
after process pid 126 is created :D
2025-01-28 17:06:35 +02:00
Bananymous
cbcb9f9044
Kernel: Warn on unsupport `clock_gettime` `clock_id`s
2025-01-25 17:31:17 +02:00
Bananymous
2a16a67aed
Kernel: Ignore SA_RESTART flag on sigaction
...
This is a big hack but a lot of ports set this flag. This seems really
annoying to implement properly
2025-01-24 19:34:22 +02:00
Bananymous
ee078fc638
Kernel: Fix fd status/descriptor flag handling
...
I was not sharing status and offset on fork and I was sharing descriptor
flags on dup/dup2
2025-01-17 20:12:04 +02:00
Bananymous
9893c90e74
Kernel: Remove SYS_DUP and implement it using fcntl F_DUPFD
2025-01-17 19:29:47 +02:00
Bananymous
82978da5e3
Kernel: Cleanup AML code
2025-01-17 16:20:00 +02:00
Bananymous
80ce9d546a
Kernel: Don't error out on SYS_WAIT with W{CONTINUED,UNTRACED}
...
As I don't support stopping and continuing processes these flags are
effecively no-ops
2025-01-17 16:14:52 +02:00
Bananymous
34775633b2
Kernel: Clear DF on every interrupt handler
...
I was missing this and it lead to UB with my new mem* functions that
were implemented with `rep`
2025-01-17 16:11:13 +02:00
Bananymous
03b5c8e76e
Kernel: Fix disk caching when `readonly` is specified
2025-01-16 16:16:38 +02:00
Bananymous
609067cefa
Kernel: Cleanup internal CPUID functions declarations
2025-01-14 22:57:44 +02:00
Bananymous
9d497ad311
Kernel: Cleanup interrupt stub definitions
2025-01-14 22:55:06 +02:00
Bananymous
ebecbb69ec
LibC: Implement some mem* and str* functions in assembly
...
This made them a lot faster on modern cpus with optimized rep stos and
rep movs
2025-01-14 22:50:46 +02:00
Bananymous
b129bab81a
Kernel: Make mem* and str* functions weak symbols
2025-01-14 19:08:03 +02:00
Bananymous
d189f00f38
Kernel: Null terminate tmpfs directory entries
2025-01-12 16:03:09 +02:00
Bananymous
a5cf92b2ff
Kernel: Use uint64_t instead of size_t for AML node conversion
...
This allows 32 bit to compile again :)
2024-12-30 06:27:49 +02:00
Bananymous
69137cddab
Kernel: Implement TIOCSWINSZ for pseudo terminals
...
I have no idea how I had forgotten this
2024-12-21 03:22:48 +02:00
Bananymous
d7b4f54983
Kernel: Check Control Method Battery _STA bit 4
...
This bit indicates wheter the battery is actually present.
2024-12-19 02:35:09 +02:00
Bananymous
00b0dcd306
Kernel: Reorder ACPI initialization method calls
2024-12-19 02:35:09 +02:00
Bananymous
53c356a940
Kernel: Implement AML MatchOp
2024-12-18 19:26:19 +02:00
Bananymous
3a6cdfff45
Kernel: Fix ACPI namespace initialization
...
Now _REG, _STA, _INI are called in the order my laptop expects them to
be called. This was kinda weird because what uACPI was doing did not
work.
\_SB_.PCI0.LPC0.EC0_.BAT0._STA required \_SB_.PCI0.LPC0.EC0_._REG to be
called
\_SB_.PCI0.LPC0.EC0_._REG required \_SB_.PCI0._STA to be called
Now I call all the _REG methods of a device after calling _STA/_INI and
after performing the whole _STA/_INI sequence i call rest of missing
_REG functions
2024-12-18 18:30:45 +02:00
Bananymous
c26e347e91
Kernel: Fix AML FieldUnit conversion and NameString construction
2024-12-18 18:29:04 +02:00
Bananymous
1b94957b07
Kernel: Copy AML NameString base when moving it :)
2024-12-18 18:28:16 +02:00
Bananymous
4e364bd2f6
Kernel: Add support for ACPI Control Method Batteries
...
The implementation is kinda weird but it exposes some battery
information to userspace!
2024-12-18 14:06:32 +02:00
Bananymous
b9fe564d78
Kernel: Check for GCC when ignoring Wmaybe-uninitialized
2024-12-18 01:45:36 +02:00
Bananymous
437fa45ca2
Kernel: Add helper to find ACPI devices with EISA id
2024-12-18 01:45:00 +02:00
Bananymous
85e215650c
Kernel: Implement AML ToStringOp
2024-12-18 01:44:33 +02:00
Bananymous
7eb186dad4
Kernel: Add to_sv() helper for AML String
2024-12-18 01:43:46 +02:00
Bananymous
2259614640
Kernel: Remove unused function from ACPI namespace
2024-12-18 01:43:04 +02:00
Bananymous
869f4011a1
Kernel: Replace the old AML interpreter by a new, better one
...
The old AML interpreter was trash and did not follow value/reference
semantics at all. It was also super slow, one of my machines taking over
7 seconds to parse ACPI namespace and call _INI and _STA.
2024-12-17 03:36:33 +02:00
Bananymous
46d4e32510
Kenrel: Validate inode open mode on read/write syscalls
2024-12-15 20:49:12 +02:00
Bananymous
1815a913c3
Kernel: Remove unnecessary hash map lookups
2024-12-15 20:47:40 +02:00
Bananymous
12a37500b0
Kernel: Fix triple-fault in vitual tty
...
This was happening when printing non-utf8 data while having virtual tty
as the debug console.
2024-12-09 03:35:51 +02:00
Bananymous
2d0690ae2d
Kernel: Cleanup most of syscalls dealing with files
2024-12-07 05:33:04 +02:00
Bananymous
71a2d0971f
Kernel: Remove unnecessary reverse from VFS file search
2024-12-07 01:41:23 +02:00
Bananymous
3bf57e0748
Kernel: Add . and .. entries to /proc/<pid> directories
...
This allows to run `cd ..` in one of these directories
2024-12-07 01:37:40 +02:00
Bananymous
51b6329c86
Kernel: Make backspace \b and delete 0x7F
...
This is what `vim` seems to expect and imo makes way more sense.
2024-12-05 17:34:37 +02:00
Bananymous
72d9e4c1e7
Kernel: Remove accidental debug prints from fcntl syscall
2024-12-05 17:34:32 +02:00
Bananymous
49133dce48
Kernel: Make pipe check data every 100ms
...
This prevents dead lock if read-end does not detect data before blocking
why write-end already notified.
2024-12-03 21:54:27 +02:00
Bananymous
0a5aacfd87
Kernel: Allow open with O_CREAT bypass file permission checks
...
call to open(path, O_CREAT|O_EXCL|O_RDWR, 0444) should open file as
read-write although file is created as read-only on filesystem.
2024-12-03 16:17:34 +02:00
Bananymous
2dec3a6c95
Kernel: Add some sanity checks for existanse of threads
2024-12-03 16:16:50 +02:00
Bananymous
fcc2814199
Kernel: Remove process from alarm list after it dies
2024-12-03 16:16:08 +02:00
Bananymous
0fab7ad63b
Kernel: Fix SYS_FCNTL command handling :)
...
I had misunderstood how these work
2024-12-03 16:12:26 +02:00
Bananymous
e6a2f55a59
Kernel: Closing file backed mmap wont expand the file size
2024-12-03 16:12:26 +02:00
Bananymous
67e9ca56ac
Kernel: Create /dev/urandom -> /dev/random symlink
...
Most software uses urandom instead of random so this allows it work
normally.
2024-12-03 16:12:26 +02:00
Bananymous
713daf6cd3
Kernel/LibC: Add support for creating hardlinks
2024-12-03 16:12:26 +02:00
Bananymous
415b20f884
LibC: Remove errno EEXISTS
...
I don't know why I had added this. It doesn't seem to be a thing on
either POSIX or linux. This was literally equivalent to EXIST
2024-12-02 20:13:38 +02:00
Bananymous
d58ca5f37a
Kernel/LibC: Implement symlink{,at}
2024-12-02 20:13:38 +02:00
Bananymous
a10ca47657
Kernel/LibC: Implement {,f}statvfs
2024-12-02 20:13:37 +02:00
Bananymous
ad1f175a39
Kernel/LibC: Implement getppid
2024-12-02 20:13:37 +02:00
Bananymous
6ed1435aeb
Kernel/LibC: Implement tcgetpgrp
2024-12-02 20:13:37 +02:00
Bananymous
6346e288ad
LibC: Implement getrlimit
2024-12-02 20:13:37 +02:00
Bananymous
747c3b2a4b
Kernel/LibC: Implement fsync
2024-12-02 20:13:37 +02:00
Bananymous
c02de2580d
Kernel: Add support for SIOCGIFNAME ioctl
2024-12-02 20:13:37 +02:00
Bananymous
4149748766
Kernel: Add missing include in ACPI headers
2024-12-01 21:32:34 +02:00
Bananymous
8dbbbc1a1a
Kernel: Add command line option `readonly`
...
This prevents calls to write_sectors_impl and all dirty pages are always
kept in RAM.
2024-11-27 13:31:55 +02:00
Bananymous
a6fc3cf7a6
Kernel: Clear AHCI pending interrupts
...
I have no idea why I did not have this in. All devices were just
constatly spamming interrupts like crazy :D
2024-11-26 01:39:11 +02:00
Bananymous
1941885cfd
Kernel: Disable USB Mass Storage writing until I get it fixed
...
This prevented real hw from running for over 10-20 seconds. When first
disk sync happens after 10 secods, USB storage would enter faulty state
and not allow any io operations.
I have no idea what the problem is. If I don't send Reset command to the
USB device writing seems to work fine. I also don't think its part of
the Reset process either as reading works just fine.
2024-11-26 01:01:25 +02:00
Bananymous
88a86a9927
Kernel: Fix Thread destruction after sys_exit
...
This had undefined behaviour as Thread's (Processes's) PageTable was
destroyed before Thread had the change to destroy its own stacks that
lived on the PageTable.
2024-11-26 00:59:34 +02:00
Bananymous
48e030bca3
Kernel: Make PageTable non-copyable and non-movable
...
Also PageTable destructor now verifies that is has allocated something
instead of assuming paddr of 0.
2024-11-26 00:58:35 +02:00
Bananymous
793c0368f2
Kernel: Refactor USB mass storage code
...
Also increment command timeout to 10 seconds so commands don't timeout
when they are not supposted to :)
2024-11-23 01:24:32 +02:00
Bananymous
076001462e
Kernel: Implement AML ConcatOp
2024-11-22 22:23:07 +02:00
Bananymous
d2e1d8ec13
Kernel: Implement AML NotOp
2024-11-22 22:22:44 +02:00
Bananymous
30ceaa6bef
Kernel: Implement AML ToHexStringOp
2024-11-22 22:22:27 +02:00
Bananymous
0247d47a3d
Kernel: Make USBMassStorage send_scsi_command templated
...
This allows passing ConstByteSpan when data will not be modified
2024-11-22 22:21:19 +02:00
Bananymous
480368c878
Kernel: Cleanup and fix xHCI interrupt handling
...
Always clear EventHandlerBusy bit and remove unnecessary nesting
2024-11-22 22:19:53 +02:00
Bananymous
c1d8790623
Kernel: Don't allow sending commands to halted xHCI
2024-11-22 22:19:29 +02:00
Bananymous
fb1ffec5bb
Kernel: Remove unused mutex from xHCI
...
This was preventing multiple xHCI controllers to do parallel device
initialization
2024-11-22 22:18:38 +02:00
Bananymous
1bdabe693f
Kernel: Preserve RsvdP bits in xHCI controller initialization
2024-11-22 22:18:09 +02:00
Bananymous
ce09f35275
Kernel: Fix PCI 64 bit MSI msg_data offset
2024-11-22 22:17:25 +02:00
Bananymous
40c13043b3
Kernel: Add support for scratchpad buffers in xHCI
2024-11-22 22:16:57 +02:00
Bananymous
e620068416
Kernel: Allow USB devices to handle STALL conditions
2024-11-22 22:15:22 +02:00
Bananymous
8e624ca85a
Kernel: Don't panic if uninitialized AHCI device gets an interrupt
2024-11-21 20:41:13 +02:00
Bananymous
c7afd46016
Kernel: Don't log spurious interrupts
...
Some PCs seem to be spamming a lot of int 7
2024-11-21 20:40:29 +02:00
Bananymous
3573656244
Kernel: Make PARTUUID matching case insensitive
...
Case sensitivity made it super annoying to work with :)
2024-11-21 20:39:27 +02:00
Bananymous
1de6de975a
Kernel: Rename cmdline UUID= to PARTUUID=
...
This makes more sense and behaves more like existing software.
2024-11-21 20:38:50 +02:00
Bananymous
865061b492
Kernel: Temporary fix to make tmpfs more stable
...
whole TmpFS will have to be rewritten at some point :)
2024-11-21 18:13:26 +02:00
Bananymous
70880636f4
Kernel: Implement basic USB Mass Storage support
...
I finally decided to do this :D
2024-11-21 18:08:37 +02:00
Bananymous
8054f6c618
Kernel: Wait 10 seconds to find root device
...
If root device is initialized asynchronously it may not be ready when
main initialization thread is finished. This patch adds searching for
root device every 500 ms for 10 seconds.
2024-11-21 17:56:58 +02:00
Bananymous
658ea68d04
Kernel: Check max packet size for all USB devices
...
Spec says that this has to be done. Most cases can be probably skipped
as I used to do, but this is less error prone and adds practically no
overhead
2024-11-21 13:46:42 +02:00
Bananymous
5750f87396
Kernel: Fix unaligned access in xHCI controller initialization
2024-11-21 13:46:09 +02:00
Bananymous
1253e2a458
Kernel: Add support for bulk endpoints and update endpoint API
...
USB device now sets its own data buffers for IN/OUT endpoints. This
allows more customization and parallelism as data buffer does not have
to be shared.
2024-11-21 13:44:21 +02:00
Bananymous
857b3e92f8
Kernel: Support initializing USB 3 devices
2024-11-21 13:40:16 +02:00
Bananymous
8bf14d542e
Kernel: Move SCSI device rdev allocation out of ATA code
2024-11-21 13:36:59 +02:00
Bananymous
97718b4046
Kernel: Don't launch init process twice
...
I had accidentrally left the old init process launch in when replacing
it with the new one.
2024-11-19 20:43:38 +02:00