Commit Graph

3799 Commits

Author SHA1 Message Date
a2691bd70d LibGUI: Cleanup window initialization 2026-07-04 08:41:58 +03:00
b2169cbce6 WindowServer: Fix fd closing
Don't close fds in Window destructor :P
2026-07-04 07:33:41 +03:00
c9b3d50523 LibC: Fix printf zero padding on floats 2026-07-04 04:50:29 +03:00
e717b95df0 LibC: Fix printf %g modifier
Apparently I had missed like half of the features it was supposed to do
2026-07-04 04:49:44 +03:00
0d8d731d91 LibC: Implement wsctoT functions 2026-07-04 04:13:21 +03:00
122c325a5b LibC: Move strtoT implementation to common header 2026-07-04 04:13:21 +03:00
d5bc88584d LibC: Implement wcscasecmp and wcsncasecmp 2026-07-04 02:25:56 +03:00
63b2284324 Kernel/LibC: support RDTSCP based clock_gettime
RDTSCP seems to be faster than LSL and it removes the need for getting
the current cpu twice to make sure TSC is read on the correct CPU
2026-07-03 06:32:04 +03:00
917321eb5f LibC: Wait for thread before returning from pthread_create
We now make sure the thread starts up and sets its id. There was a race
condition where a process could create a thread and immediately try to
join it. If the thread had not initialized itself the join would fail
with EINVAL as we passed -1 as its id.
2026-07-03 02:14:10 +03:00
13bf1ba647 mkdir: Cleanup code and add better argument parsing 2026-07-02 22:54:45 +03:00
0a8b03d349 LibAudio: Make AudioLoaders return float instead of double
AudioBuffers already use floats internally so there is no need for
loaders to produces doubles
2026-07-02 22:54:45 +03:00
4473ee4d49 LibAudio: Add an API to query free space in audio buffer
Also optimize and cleanup sample queueing
2026-07-02 22:54:45 +03:00
ded722fb4c LibC: bump SYMLOOP_MAX to 128 2026-07-02 20:02:24 +03:00
facc17c5a1 LibC: Implement {get,free}ifaddrs 2026-07-02 20:02:24 +03:00
26abd4e18e LibC: Add posix_fallocate stub 2026-07-02 20:02:24 +03:00
50fd526e6f LibC: Implement pthread_{get,set}name_np 2026-07-02 20:02:24 +03:00
c0e091b647 LibC: Implement pthread_{get,set}attr_default_np 2026-07-02 20:02:24 +03:00
372da006d0 LibC: Implement pthread_getattr_np 2026-07-02 20:02:24 +03:00
7219eac65f Kernel: Remove unnecessary page table validation
Processes always have a page table when they are initialized. This was
not true a long time ago when kernel threads could also be processes
2026-07-02 20:02:24 +03:00
0dc74beb0f Kernel/LibC: Allocate thread stacks in userspace
This adds support for pthread function for stack manipulation.

Also keep track of main threads stack in the uthread
2026-07-02 20:02:24 +03:00
7bdd9d19d0 LibC: Cleanup uthread initialization
This is now done in a constructor function in pthread.cpp
2026-07-02 20:02:24 +03:00
991f7024d5 Kernel: Allow fork to fail at any point 2026-07-02 20:02:24 +03:00
6d1696b77e Kernel: Don't allocate userspace stacks in Thread
Thread only cares about stack's vaddr and size. Stacks are now allocated
before creating the threads.
2026-07-02 20:02:24 +03:00
b19b7f064a LibC: Make pthread_t pointer to uthread instead of a thread id
This will allow getting info about other threads in userspace!
2026-07-02 20:02:24 +03:00
f449ca8161 Kenrel: Separate pthread API from kernel API
It didn't really make sense for the syscalls to be named as the pthread
equivalents. Now the kernel just uses thread ids
2026-07-02 20:02:24 +03:00
5540bc4147 Kernel: Fix USB SCSI device naming 2026-07-02 20:02:24 +03:00
d8f136a76f Kernel: Remove the weird StorageController base class
This wasn't really used for anything and broke nvme controller as it was
now doubly ref counted :P
2026-07-02 20:02:24 +03:00
8be90c49bc LibC: use auxv for getpagesize 2026-07-02 20:02:24 +03:00
59c59c3316 Kernel: Expose stack base/size and page size in auxv 2026-07-02 20:02:24 +03:00
c5cfa82ffb LibC: Check for malloc failure in setenv 2026-07-02 20:02:24 +03:00
c0d38862f2 LibC: Add sys/auxv.h with getauxval 2026-07-02 20:02:24 +03:00
74e94eedae LibC: Fix malloc bitmap allocator allocation
Use full pages for bitmap allocators and fix the capacity extension
condition
2026-07-02 15:22:52 +03:00
d241975ce1 Kernel: Remove SYS_SLEEP and cleanup SYS_NANOSLEEP
`sleep` is now implemented in terms of `nanosleep`. `nanosleep` is now
more precise and handles overflow when calculating wakeup time. I don't
think anything was depending on this, but I could see a program sleeping
for max time to block until signal.
2026-07-02 15:22:52 +03:00
20663b533b Kernel: Rework sleeping API
instead of sleep_{ns,ms} we now have sleep_{for,until}_{ns,ms}. This
makes code cleaner that just wants to sleep until some timestamp
2026-07-02 15:22:52 +03:00
6f002f0c07 LibC: Make pthread_{equal,self,testcancel} static inline
This allows using ::pthread_self or &pthread_self
2026-06-30 20:14:38 +03:00
f121e80bfd Kernel: Fix PROT_EXEC flags in sys_mprotect 2026-06-30 20:14:38 +03:00
4e28a35af9 Kernel: Support hardware checksum offload on RTL8169 receive 2026-06-30 20:14:38 +03:00
ddb7641b05 Kernel: Support hardware checksum offload on E1000 receive 2026-06-30 20:14:38 +03:00
a6ad9b9b2e Kernel: Add system for hardware checksum offload on received packets 2026-06-30 20:14:38 +03:00
c0bd07174d Kernel: Reduce the number of E1000 register reads while receiving
There is no need to read and write the receive tail pointer for every
packet. This change bumped my TCP speed from ~11MB/s to ~40MB/s which is
my network speed limit
2026-06-30 20:14:38 +03:00
8f4e15b78e Kernel: Use spinlocks and disable interrupts with loopback interface
This makes sure we don't get pre-empted after acquiring a descriptor but
before finishing marking it ready
2026-06-30 20:14:38 +03:00
17e6e53948 Kernel: Move Ethernet header prepending from NIC to helper 2026-06-30 20:14:38 +03:00
223835c37d Kernel: Fix TCP stack sending a lot of DUP-ACKs 2026-06-30 20:14:37 +03:00
aedd53b3e0 Kernel: Disable interrupts while appending packet in E1000
This avoids getting rescheduled and having other packets waiting to get
sent because of that
2026-06-30 20:14:37 +03:00
6339044e4c Kernel: Fix RTL8169 driver
This now works properly on real hardware. Main issue was a race
condition with now ISR was handled in the interrupt handler. We now loop
until we read back ISR as zero
2026-06-30 20:14:37 +03:00
924576cf0d WindowServer: Fix invalidation for fullscreen windows 2026-06-30 20:14:37 +03:00
ac333c9677 ports: Update llvm 20.1.8->22.1.8 2026-06-30 20:14:37 +03:00
6e47fa084b Kernel: Fix ext2 indirect block lookup math
This was broken for doubly and triply indirect blocks :D
2026-06-30 20:14:37 +03:00
32c10f7db2 Userspace: Add very simple top program
This is very bare bones but does show what programs use most cpu and
memory
2026-06-30 20:14:37 +03:00
9919cbf66e Kernel: Pass interpreter base address in auxiliary vector 2026-06-30 20:14:37 +03:00