Bananymous
dc2a455395
Kernel: Optimize processes' memory management
...
Memory regions are now stored in a sorted array. This allows O(nlogn)
lookup for address validation instead of the old linear lookup.
Now inserting new regions is also O(nlogn) instead of the old constant
time, but lookups are **much** more frequent
2025-11-17 05:26:07 +02:00
Bananymous
c700d9f714
Kernel: Implement connect for UDP socket
2025-11-17 05:26:07 +02:00
Bananymous
f3beee9874
Kernel: Cleanup userspace pointer validation
2025-11-17 02:33:00 +02:00
Bananymous
89c0ff1a9d
Kernel/LibC: Replace SYS_{GET,SET}_TLS with SYS_{SET,GET}_{FS,GS}BASE
...
This allows userspace to use both registers
2025-11-13 04:20:53 +02:00
Bananymous
9537922acc
Kernel: Implement proper memory region splitting
...
Memory regions are now splitted when they get munmapped, mprotected, or
mmapped with MAP_FIXED. This is used by couple of ports, and without
this we were just leaking up memory or straight up crashing programs.
2025-11-13 04:20:53 +02:00
Bananymous
f1d12c330e
Kernel/LibC: Implement MMAP_FIXED_NOREPLACE
...
This is a handy thing from linux
Also fix MMAP_FIXED validation and error reporting
2025-11-12 00:06:36 +02:00
Bananymous
7b580b8f56
Kernel: Implement fd passing with SCM_RIGTHS
2025-11-12 00:06:36 +02:00
Bananymous
72982e3c2b
Kernel/LibC: Take fcntl extra field as uintptr_t
...
This allows passing pointers to fcntl
2025-11-10 01:40:33 +02:00
Bananymous
04d24bce70
Kernel/LibC: Implement {recv,send}msg as syscalls
...
This also removes the now old recvfrom and sendto syscalls. These are
now implemented as wrappers around recvmsg and sendmsg.
Also replace unnecessary spinlocks from unix socket with mutexes
2025-11-10 01:40:33 +02:00
Bananymous
7367672570
Kernel: Default initialize flock as unlocked
...
This caused unlocked flock's to hang on lock
2025-11-02 21:10:13 +02:00
Bananymous
5f61581e1d
Kernel: Show QR code with panic logs on kernel panic
...
This makes debugging on real hardware easier!
2025-10-28 05:50:19 +02:00
Bananymous
f519cb2cc0
Kernel: Expose boot framebuffer device
2025-10-28 05:50:19 +02:00
Bananymous
da39e98adf
Kernel: Make F11 drop disk cache
...
This can be useful to detect memory leaks or something
2025-08-31 00:36:59 +03:00
Bananymous
791a541381
Kernel: Implement process stopping and continuing
2025-08-31 00:34:52 +03:00
Bananymous
30215963b2
Kernel: Fix /proc/<pid>/exe permissions
2025-08-29 01:40:56 +03:00
Bananymous
391fc0c4c2
Kernel: Don't crash if Ext2 filesystem doing too many fileops
...
I had a hardlimit of 10 block buffers and if they ran out, the kernel
would crash. this patchs increases the number of buffers to 16 and
removes the crash condition when they run out :D
2025-08-28 15:55:40 +03:00
Bananymous
a8bb07052e
Kernel: Rewrite SMP message code
...
Remove locks and map smp buffer as uncached
2025-08-28 15:55:40 +03:00
Bananymous
51cd951b4c
Kernel: Add hardlink support to tmpfs
2025-08-28 15:55:40 +03:00
Bananymous
abbe7b79d6
Kernel: Add /proc/<pid>/exe
2025-08-28 15:55:40 +03:00
Bananymous
e4abe75043
Kernel: Add /proc/self
2025-08-28 15:55:40 +03:00
Bananymous
f926e599fa
Kernel: Zero initialize Processors
...
This moves processor array to .bss reducing data size by 8192 bytes :)
This needed GCC updated to 15.2.0 because of an internal compiler error
I found :)
2025-08-25 18:29:14 +03:00
Bananymous
9a6eae69ba
Kernel: Replace all occurances of BSB with BSP
2025-08-25 17:11:32 +03:00
Bananymous
350ae90bb6
Kernel: Make all futexes shared
...
Some stuff tries to use shared futexes so make them all shared. Private
futexes would be faster as they are process specific but supporting both
would need some reworks
2025-08-21 02:56:17 +03:00
Bananymous
0dfe0b7023
Kernel/LibC: Implement sigaltstack
2025-08-21 02:52:49 +03:00
Bananymous
def236b7cd
Kernel/LibC: Implement sigwait
2025-08-20 20:16:19 +03:00
Bananymous
247743ef9c
Kernel/LibC: Implement sigsuspend
2025-08-20 20:14:54 +03:00
Bananymous
49122cf729
Kernel: Allow adding signals to thread that are blocked
2025-08-20 18:35:18 +03:00
Bananymous
0bece8a54c
Kernel: Add missing ACPI resource header
2025-08-19 16:23:30 +03:00
Bananymous
c07188a60e
Kernel: Look for PS/2 devices in the ACPI namespace
...
This allows finding the PS/2 controller on newer machines that don't
have the 8042 bit set in FADT.
2025-08-15 17:02:15 +03:00
Bananymous
c2017a5181
Kernel: Allow looking up devices with multiple eisa ids
...
Also match against _CIDs in addition to _HID
2025-08-15 17:02:15 +03:00
Bananymous
58ad839136
Kernel: Add support for ACPI Embedded Controllers
2025-08-15 17:02:15 +03:00
Bananymous
ef6ee78fd1
Kernel/LibC: Implement chroot
2025-08-11 14:07:37 +03:00
Bananymous
af0bca74e4
Kernel/LibC: Implement {get,set,init}groups
...
This allows dropping /etc/group parsing from the kernel :D
2025-08-10 19:57:31 +03:00
Bananymous
f41e254e35
Kernel: Fix dead lock on process exit
2025-08-10 19:57:31 +03:00
Bananymous
5b587d199e
Kernel/LibC: Implement FIONREAD for tcp and udp sockets
2025-08-10 19:57:31 +03:00
Bananymous
7ad3f967db
Kernel: Don't stop audio processing after each entry in AC97
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
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
5940e912b3
Kernel/LibC: Implement simple futex
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
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
2c65590134
Kernel: Add support for absolute position mouse
2025-07-19 18:00:39 +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
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
8a663cb94f
Kernel: Implement basic AC97 driver
2025-07-15 14:17:49 +03:00