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
Bananymous
c07fd265f0
Kernel: Add support for ATA CHS addressing and cleanup code
...
I thought that I had an PC without LBA support so I implement support
for CHS. Turns out that my ATA device detection was broken and was no
device on that port and initialize data was just garbage.
Now that I added CHS, I guess I should just keep it in :)
Both ATA read and write are now combined into a single function to avoid
code duplication.
2024-11-19 20:39:32 +02:00
Bananymous
1de50a2a94
Kernel: Improve ATA device initialization
...
This does better detection of empty ports and fixes floating bus
read-value from 0x00 to 0xFF.
2024-11-19 00:25:42 +02:00
Bananymous
627ca432cc
Kernel: Make PS/2 controller not hang if device keeps sending resend
2024-11-19 00:18:48 +02:00
Bananymous
71563034a7
Kernel: Remove accidentally left debug prints
2024-11-18 03:45:07 +02:00
Bananymous
aaff5a65e1
Kernel/init: /dev/tty is now custom symlink to controlling terminal
...
kernel now passes the name of default console to init process so init
knows which file to open as stdio. before /dev/tty was referencing the
system wide current terminal which was inherited from cmdline. This
doesn't work anymore as we have pseudo terminals implemented that can
chage the current terminal during runtime :D
2024-11-17 22:38:52 +02:00
Bananymous
458a362f98
Kernel: Allow kernel to pass arguments to init process
2024-11-17 22:38:02 +02:00
Bananymous
f206e72447
Kernel: Don't require msync addresses to be page aligned
...
Inodes implementing msync can require page aligned addresses, but are
also allowed to not :) This reduces sizes of framebuffer msyncs!
2024-11-17 20:15:28 +02:00
Bananymous
58e45fb394
Kernel: Print process name on exceptions if it is available
2024-11-17 20:15:28 +02:00
Bananymous
5e8fdc997a
Kernel: Prevent userspace from overwriting CPU load memory
2024-11-17 20:15:28 +02:00
Bananymous
0228cd4f31
Kernel: Increase userspace stack size and decrease kernel stack
...
Quake II needs a lot of stack, it was overflowing my 256 KiB stack so
this patch doubles that, so Quake II can run!
Also every thread had 256 KiB kernel stack. This is unnecessarily large
and now dropped to 32 KiB.
2024-11-14 21:03:04 +02:00
Bananymous
64c52012df
Kernel: Fix MemoryRegion overlap comparison
...
This made some calls to `munmap` unmap extra regions.
2024-11-13 17:26:42 +02:00
Bananymous
1838ea5c30
Kernel: Fix pseudo terminal leaks
2024-11-04 15:35:07 +02:00
Bananymous
a3f41fd4d9
Kernel: Cleanup disk cache
...
Add missing include and cleanup code calling automatic disk sync.
2024-11-03 20:28:15 +02:00
Bananymous
f4be37700f
Kernel/userspace: rework floating point math
...
SSE is now unconditionally enabled any where and most of math.h is now
actually implemented. using __builtin_<func> lead to many hangs where
the builtin function would just call itself.
2024-11-03 20:28:15 +02:00
Bananymous
ed19bb11fe
Kernel: Cleanup thread default sse initialization
2024-11-03 20:22:28 +02:00
Bananymous
8fd0162393
Kernel: Rewrite x86_64 page tables to use HHDM instead of kmalloc
...
This allows page tables to not crash the kernel once kmalloc runs out of
its (limited) static memory.
2024-10-14 11:40:30 +03:00
Bananymous
f0b18da881
Kernel: Add kmalloc helper APIs
2024-10-14 11:39:04 +03:00
Bananymous
5f63ea8f8a
Kernel: Add CPUID check for 1 GiB page support
2024-10-14 11:38:03 +03:00
Bananymous
2b43569927
Kernel: Use enums in boot info instead of magic values
2024-10-14 11:36:51 +03:00
Bananymous
4ba33175cf
Kernel: Don't leak memory when preparing fast page
...
For some reason I was allocating memory for page table entry...
2024-10-14 11:34:48 +03:00
Bananymous
3edc1af560
Kernel: Don't map main bios area in page table initialization
...
This is only needed for RSDP lookup so it can be done with fast pages
2024-10-14 11:32:54 +03:00
Bananymous
55fbd09e45
Kernel: Rewrite physical memory allocation with PageTable::fast_pages
2024-10-14 11:32:54 +03:00
Bananymous
166550fbba
Kernel: Ext2 check if file exists before creating it
2024-10-07 18:21:05 +03:00
Bananymous
b6e040dfc2
Kernel/Shell: Fix backspace and delete key byte sequences
2024-10-04 04:14:47 +03:00
Bananymous
2d11ce9669
Kernel: Fix interrupt system
...
I had not understood how MSIs work and I was unnecessarily routing them
through IOAPIC. This is not necessary and should not be done :D
Also MSIs were reserving interrupts that IOAPIC was capable of
generating. Now IOAPIC and MSIs use different set of interrupts so
IOAPIC can use more interrupts if needed.
2024-09-27 15:31:31 +03:00
Bananymous
b89fc3fe87
Kernel: Implement ANSI SGR 7 to invert colors
...
This allows vim's visual selection to show up
2024-09-26 15:08:11 +03:00
Bananymous
39802b56c1
Kernel: Allow SYS_EXEC to fail at any point
...
This patch builds new executable image to another pml4 structure and
only after everything is validated will current context be replaced.
This allows exec to fail "late" where previously it would panic the
kernel or kill the process. This allows graceful handling of exec
failures in userspace!
2024-09-24 16:29:38 +03:00
Bananymous
ebb87ccdde
Kernel: Add asserts for overflow checks with ms -> ns conversions
2024-09-24 16:28:44 +03:00
Bananymous
f0e55938c1
Kernel: Allow initial binding of threads to specific processor
2024-09-24 16:27:40 +03:00
Bananymous
348d04f7f5
Kernel: Implement static Process::kill()
...
This allows killing processes even when there does not exist a current
thread.
2024-09-24 13:16:43 +03:00
Bananymous
d395cf38b7
Kernel: Binding to port 0 will always find unused port
2024-09-22 17:30:01 +03:00
Bananymous
57aec2a733
Kernel: Validate pointer's when printing stack trace
...
There was an kernel panic if stack trace contained uncanonical
addresses.
2024-09-22 17:16:01 +03:00
Bananymous
ae89237453
Kernel: Disable warning when calling syscall
...
This warning is only generated when compiling with UBSAN and I don't see
how the value would even be uninitialzed.
2024-09-22 17:15:07 +03:00
Bananymous
60d5257678
Kenrel: Add __builtin_unreachable support for UBSAN
2024-09-22 17:14:36 +03:00
Bananymous
d59463d11b
Kernel: Fix TTY reading one keyevent after disabling input handling
2024-09-22 17:13:10 +03:00
Bananymous
23d6205659
Kernel: Move DEBUG_* macros to centralized Debug.h
...
This makes toggling debug info much easier
2024-09-20 11:00:07 +03:00
Bananymous
bc0acc6f44
Kernel: Validate network packet sizes before casting
...
This caused a lot of crashes on invalid packets :D
2024-09-20 10:46:59 +03:00
Bananymous
b8622f2b4b
Kernel: Implement simple RTL8169 driver
...
This allows me to use internet when running banan-os on my hardware!
2024-09-19 22:58:03 +03:00
Bananymous
7f0c39fe91
Kernel: Don't crash the kernel if packet is smaller than ethernet hdr
2024-09-19 22:51:55 +03:00
Bananymous
a489be0e05
Kernel: Allow parallel LAPIC timer initialization with HPET
...
HPET supports reading LAPIC counter without locks, so it can be done in
parallel. This makes booting much faster. Previously initializing every
timer took 100 ms, so 16 CPUs took total of 1.6 seconds. This allows
doing it all in 100 ms.
2024-09-19 14:41:59 +03:00
Bananymous
8e08046519
Kernel: Add asserts about having locked TTY's write lock
...
This for some reason fixes booting on real hardware? :D
2024-09-18 00:56:48 +03:00
Bananymous
999eb53364
Kernel: Release debug lock if its locked during kernel panic
...
Also kernel panic now prints if it had lock
2024-09-18 00:56:02 +03:00
Bananymous
0620ed3d4f
Kernel: Fix file open permissions for some syscalls
2024-09-17 19:11:48 +03:00
Bananymous
b779b3cf2d
Kernel: Move file finding code to a helper
2024-09-17 18:52:52 +03:00