Commit Graph

1648 Commits

Author SHA1 Message Date
Bananymous 1de9daa40f Kernel: Move interrupt status stuff to Processor.h
SpinLocks are now locked with processor id instead of thread id. This
allows having multiple processors running while scheduler is not yet
activated.
2024-03-03 01:47:22 +02:00
Bananymous efd8203232 BAN: Atomic memory order can be set per function call 2024-03-03 01:41:46 +02:00
Bananymous a667d88f93 Kernel: Remove now obsolete CriticalScope
All critical scopes in kernel are now replaced by SpinLocks. This
allows proper locking in actual multiprocessing with multiple cores.
2024-03-01 15:51:02 +02:00
Bananymous 8d7dd577ab Kernel: Replace last CriticalScopes in kernel with SpinLocks 2024-03-01 15:49:39 +02:00
Bananymous 054b41383f Kernel: Implement SpinLock unsafe that does not keep track of locker
This will be used in scheduler where thread ids are changing
2024-03-01 15:48:08 +02:00
Bananymous 02ad199138 Kernel: Move interrupt status functions to kernel/Interrupts.h 2024-03-01 02:13:28 +02:00
Bananymous 65c4f9db5b Kernel: Replace CriticalScopes with SpinLocks in Process/Thread 2024-03-01 02:13:28 +02:00
Bananymous 51e38b7614 Kernel: Replace CriticalScope with SpinLock in SerialTTY 2024-02-29 19:17:28 +02:00
Bananymous 90878a7c2b Kernel: Replace CriticalScopes with SpinLocks in networking code 2024-02-29 19:17:28 +02:00
Bananymous 7f028f70d5 Kernel: Replace CriticalScopes with SpinLock in PS/2 and input code 2024-02-29 19:17:28 +02:00
Bananymous ec0cb5fd54 Kernel: Remove CriticalScopes from memory handing code 2024-02-29 19:16:41 +02:00
Bananymous 682de62c57 Kernel: Replace HPET CriticalScope with SpinLock 2024-02-29 19:15:33 +02:00
Bananymous 18253b6966 Kernel: Replace InterruptController CriticalScopes with SpinLock 2024-02-29 19:15:33 +02:00
Bananymous 21f05eb118 Merge branch 'main' into locking 2024-02-28 23:00:02 +02:00
Bananymous d94f6388b7 Kernel: Fix all broken locks from new mutexes 2024-02-28 22:45:34 +02:00
Bananymous 1971813336 BAN: Add HashMap::remove(iterator) 2024-02-28 22:35:42 +02:00
Bananymous 3c88d2aad3 BAN: Implement find() for HashMap 2024-02-28 13:20:24 +02:00
Bananymous 5c39903323 Kernel: Simplify writing to threads stacks
This can be done more simply as all stacks are now page aligned
2024-02-28 13:20:17 +02:00
Bananymous 6d59a2b45d Kernel: Remove VirtualRanges created in kmalloc memory
These were only used as stacks of kernel threads, but they can just
as well be allocated as full pages from Heap
2024-02-28 13:19:18 +02:00
Bananymous 09c24088a2 Kernel: Cleanup kmalloc VirtualRange creation 2024-02-28 13:19:18 +02:00
Bananymous efdc4817bb Kernel: Print to debug log ICMP unreachable messages
These messages should be forwarded to underlying sockets
2024-02-28 13:19:18 +02:00
Bananymous 0c97abb053 BAN: Implement find() for HashMap 2024-02-27 15:40:30 +02:00
Bananymous 1759d247d9 Kernel: Simplify writing to threads stacks
This can be done more simply as all stacks are now page aligned
2024-02-25 21:57:33 +02:00
Bananymous 21dc64dc21 Kernel: Remove VirtualRanges created in kmalloc memory
These were only used as stacks of kernel threads, but they can just
as well be allocated as full pages from Heap
2024-02-25 21:56:37 +02:00
Bananymous 264eff3ad0 Kernel: Cleanup kmalloc VirtualRange creation 2024-02-25 21:33:30 +02:00
Bananymous 05c7b21b0a Kernel: Print to debug log ICMP unreachable messages
These messages should be forwarded to underlying sockets
2024-02-25 21:32:37 +02:00
Bananymous 40b626b0aa Kernel: Rewrite all kernel mutexes
Now SpinLock is actually just a spin lock and I added a Mutex that
does the same as the old "SpinLock". This is in preparation for
starting to support smp and making the kernel smp safe. This commit
also removes obsolete PageTableScope and CriticalScope which should
now be used by alternative APIs.
2024-02-25 21:29:43 +02:00
Bananymous 6ebfe05fce BAN: Add parenthesis in ASSERT macros 2024-02-25 21:22:47 +02:00
Bananymous 59abb5d344 Kernel: Make HPET read_main_counter() atomic with 32 bit main counter 2024-02-23 13:42:04 +02:00
Bananymous 9594ee8e47 Kernel: Start making device numbers unique for each device 2024-02-22 15:53:48 +02:00
Bananymous 7a4ec7f7a3 Kernel: Use static_cast instead of c-style cast in HPET 2024-02-22 14:44:39 +02:00
Bananymous 51db1706e9 Kernel: Fix checking of partition boundaries on write 2024-02-22 13:31:12 +02:00
Bananymous ac9e71d9c7 LibC: Fix parsing mode from string 2024-02-20 13:25:24 +02:00
Bananymous f3f5ca1bd8 Kernel: Seed RNG by real time if no RDRAND available 2024-02-20 13:00:26 +02:00
Bananymous b979023b9d Shell: Add test cases for stroul and strod in builtin `test-strtox` 2024-02-16 15:35:02 +02:00
Bananymous 915dea01c9 LibC: fix printf %e for inf/nan values 2024-02-16 15:34:24 +02:00
Bananymous 566bb73897 LibC: Implement ato* and strto* functions for floating point numbers 2024-02-16 15:28:52 +02:00
Bananymous fb0d8d746f BAN: Add {max,min}_exponent{2,10} to numeric_limits<T> 2024-02-16 15:27:40 +02:00
Bananymous 1b24c4f279 LibC: Implement strtou{l,ll} 2024-02-15 12:25:56 +02:00
Bananymous a5a041e637 LibC: Remove cast from S_* macros so they can be used in preprocessor 2024-02-15 12:20:09 +02:00
Bananymous c469d9b3ff Shell: Add builtin test for strtol `test-strtol` 2024-02-14 22:38:16 +02:00
Bananymous 373d166076 LibC: Implement ato{i,l,ll} and strto{l,ll} 2024-02-14 22:35:23 +02:00
Bananymous 3c54243ac7 BAN: Implement some numerical limits 2024-02-14 22:34:42 +02:00
Bananymous 1f467580ee Userspace: Add test for popen 2024-02-14 17:23:26 +02:00
Bananymous 1ba883719a LibC: Implement popen and pclose 2024-02-14 17:22:45 +02:00
Bananymous f73e954b28 Kernel: Remove SpinLock from Pipe
Pipe already is using lock on the inode. If you read from pipe when
there was no data, pipe blocked indefinately since writes were blocked
by Inode::m_lock.
2024-02-14 17:21:32 +02:00
Bananymous de629291b9 LibC: Implement freopen, rewind and fix bugs in code
Now everything will be properly locked once threads are implemented.
All functions "lock" the stream for the wanted operation
2024-02-14 16:36:48 +02:00
Bananymous 7eb5d220fd Userspace: Implement getopt for testing libc getopt() 2024-02-14 15:01:27 +02:00
Bananymous 4cd9abdd15 LibC: Implement getopt() 2024-02-14 15:00:58 +02:00
Bananymous 198dde8365 Kernel: Add klibc for kernel
Now building same source as libc is not needed and libc doesn't
have to do hacks to allow kernel compilation
2024-02-14 15:00:04 +02:00