Bananymous
5b587d199e
Kernel/LibC: Implement FIONREAD for tcp and udp sockets
2025-08-10 19:57:31 +03:00
Bananymous
3aa20a3a32
Kernel: Fix ACPI _GPE calling
...
This adds patch adds support for extended GPEs and the second GPE
register block.
2025-08-07 19:35:13 +03:00
Bananymous
de7c3d3d29
Kernel: Don't try to create . in USTAR
...
Our build system adds . entry to the tar archive and it should be
handled as an no-op
2025-08-07 19:35:13 +03:00
Bananymous
3f89df338e
IDT: Remove stack OOB check
...
This makes debugging easier when you can see the actual register values
and what is mapped and where
2025-08-07 19:35:13 +03:00
Bananymous
7ad3f967db
Kernel: Don't stop audio processing after each entry in AC97
2025-08-07 16:43:05 +03:00
Bananymous
d1c814cf9d
Kernel: Optimize consecutive absolute mouse move events
...
This is a hack to make window server usable without kvm :D
2025-08-07 16:43:05 +03:00
Bananymous
72f85dce2b
Kernel: Make userspace stack on-demand allocated
...
Also bump the hardlimit of stack size from 512 KiB->32 MiB. This still
feels quite low but is much better than before :D
2025-08-07 16:43:05 +03:00
Bananymous
f5bbcc017c
Kernel: Only send one smp message when reserving a range
...
This was causing some kernel panic because processors ran out of smp
message storage when reserving large areas.
Also most of the time there is no need to actually send the SMP message.
If process is mapping something to just its own address space, there is
no need for a TLB shootdown. Maybe this should be only limited to kernel
memory and threads across the same process. I'm not sure what the best
approach here and it is better to send too many invalidations that too
few!
2025-08-07 16:43:05 +03:00
Bananymous
647fedfa19
Kernel: Add missing multiboot.h
2025-08-05 17:12:26 +03:00
Bananymous
f27823babe
Kernel: Move stacks to the top of userspace address space
2025-08-05 03:09:24 +03:00
Bananymous
95cfac471a
Kernel: Rename loopback adapter lo0 -> lo
2025-08-05 03:09:24 +03:00
Bananymous
f7c1084c3e
Kernel: Expose boot command line in /proc/cmdline
2025-08-05 03:09:24 +03:00
Bananymous
cf96bb6cc3
Kernel: Add support for multiboot
...
I don't know why I did it but it works now :D
2025-08-05 03:09:24 +03:00
Bananymous
f1369c8fd6
Kernel/LibC: Implement mprotect
...
There may be some race conditions with this but i think this is good
enough to start with
2025-08-05 03:09:24 +03:00
Bananymous
dfdfb7cdaf
Kernel: check all threads in validate_pointer_access
2025-08-05 03:09:24 +03:00
Bananymous
1cc0fb9c01
Kernel: Reschedule if idle after IPI
...
This allows starting thread execution right after thread is received
from load balancing
2025-08-05 03:09:24 +03:00
Bananymous
a51b589bc9
Kernel: Allow any signal flags and support SA_RESETHAND
2025-08-05 03:09:24 +03:00
Bananymous
5940e912b3
Kernel/LibC: Implement simple futex
2025-08-05 03:09:24 +03:00
Bananymous
284c9e5f61
Kernel: Don't kill process if stack pointer is OOB
...
This can be valid if process is using green threads or for some other
reason using its own stack
2025-08-05 03:09:24 +03:00
Bananymous
927fbda1e8
Kernel: Make on-demand paging thread safe
2025-08-05 03:09:24 +03:00
Bananymous
d8a695a88d
Kernel: Don't fail ustar unpack when creation fails
2025-08-05 03:09:24 +03:00
Bananymous
8c29036fbf
Kernel: Fix EAGAIN on hungup pipe
2025-07-31 22:47:40 +03:00
Bananymous
cc04bd0f06
LibC/Kernel: Implement ttyname_r
2025-07-31 22:47:40 +03:00
Bananymous
e72e1e4e43
LibC: Add _SC_NPROCESSORS_{CONF,ONLN)
2025-07-31 22:47:40 +03:00
Bananymous
9b18bda9c8
Kernel: Make epoll always check for HUP and ERR
2025-07-31 22:47:29 +03:00
Bananymous
2c65590134
Kernel: Add support for absolute position mouse
2025-07-19 18:00:39 +03:00
Bananymous
a0d1a9ad67
Kernel: Fix PIT::prescheduler_sleep_ns
...
I don't even know what I was doing here :D
2025-07-19 01:25:46 +03:00
Bananymous
5df6270e32
Kernel: Clobber flags in `rdrand`
2025-07-18 19:36:37 +03:00
Bananymous
7af6e1cd34
Kernel: Ignore HID main item tag 0
...
This for some reason exists in vmware's usb devices
2025-07-18 19:11:12 +03:00
Bananymous
cceb066284
Kernel: Don't use IST on 32 bit target
...
This only exists in 64 bit
2025-07-18 19:10:48 +03:00
Bananymous
7a054787ca
Kernel: Don't print error if `root` is empty
...
This is used when loading filesystem from initrd
2025-07-18 19:09:43 +03:00
Bananymous
d27891c79f
Kernel: Fix correct IOAPIC lookup based on gsi
2025-07-18 19:09:20 +03:00
Bananymous
5874fd640e
Kernel: Fix TmpFS for 32 bit target
...
There was a problem when sizeof(size_t) != sizeof(PageInfo)
2025-07-18 19:07:32 +03:00
Bananymous
e16fb6a8e9
Kernel: Don't validate allowed null pointers on syscalls
2025-07-17 22:14:04 +03:00
Bananymous
d5301508ec
Kernel: Increase kernel thread stack size
...
HACK HACK HACK
This is just to make banan-os boot on one razer laptop where AML
triggers a stack overflow :)
2025-07-17 21:21:14 +03:00
Bananymous
793cca423b
Kernel: Fix system timer disabling
...
I was actually not disabling system timer (HPET, PIT) when using lapic
timers for scheduling. This made BSB get too many timer interrupts :D
2025-07-16 20:02:04 +03:00
Bananymous
3960687f9d
Kernel: Parse PCIConfig opregion address on read/write
...
I was testing on some hardware and _ADR does not have to exist in the
namespace when opregion is parsed :)
2025-07-16 15:34:36 +03:00
Bananymous
3ec7aad432
Kernel: Increase PS/2 timeout and detect more keyboards
...
I was testing on a old T61
2025-07-16 15:29:27 +03:00
Bananymous
8a663cb94f
Kernel: Implement basic AC97 driver
2025-07-15 14:17:49 +03:00
Bananymous
674e194a91
Kernel: Don't fail PCI interrupt allocation with PCIe and no PCI
2025-07-15 14:17:49 +03:00
Bananymous
c57f0abb56
BuildSystem: Order source list alphabetically
2025-07-15 14:17:49 +03:00
Bananymous
995dfa1455
Kernel: Fix AML PCIConfig OpRegion accesses
...
Apparently I'm not supposted to calculate device/function from the
offset, but parse them from the acpi namespace :)
This allows PCI PIN interrupt routing actually work
2025-07-04 13:21:02 +03:00
Bananymous
544c8dbc13
Kernel: Optimize AML interpreter stack usage
...
There is a very hacky no-inline hack that I am not proud of but it drops
the stack usage of few functions A LOT.
Previously Virtual Box could not boot with our 8 page stack, but these
changes allow it to boot on 5!
2025-07-03 00:49:23 +03:00
Bananymous
8da4f80453
Kernel: Add custom stack to double fault handler
...
This prevents triple faults!
2025-07-02 23:14:52 +03:00
Bananymous
6084aae603
Kernel: Add guard pages to kernel and userspace stacks
2025-07-02 23:12:36 +03:00
Bananymous
e1319a06f2
Kernel: Remove accidentally commited debug prints
2025-07-02 23:09:57 +03:00
Bananymous
51fd7a607d
Kernel: Fix IDE controller waiting
...
We did not correctly wait until controller is ready to receive data on
write command. Also remove possible kernel panic if controller sends
unexpected interrupts
2025-07-02 22:04:41 +03:00
Bananymous
8a0269d29e
Kernel: Remove kernel processes
...
Kernel can just use raw threads, pretty muchs the only thing that
process provides is syscalls which kernel threads of course don't
need.
Also this makes init process have pid 1 :D
2025-07-02 01:54:03 +03:00
Bananymous
892e16dfb1
Kernel: Increase PS2 timeout to 300 ms, load PS2 in separate thread
...
PS/2 seems to hit command timeout sometimes on slow emulation so
increase the timeouts.
Also move PS/2 device initialization to a different thread because
device indentification waits for timeouts.
2025-07-02 00:17:42 +03:00
Bananymous
92e4078287
Kernel: Rewrite ThreadBlocker
...
This gets rid of a very old bug where kernel panics when thread is being
woken up and unblocked at the same time on different cores. This
required adding a new lock to SchedulerQueue::Node and adding a cap to
how many threads a threadblocker can simultaneously block. I don't think
I ever block more than five threads on the same ThreadBlocker so this
should be fine.
2025-07-02 00:17:42 +03:00