Bananymous
29fd682672
Kernel: Store current processor pointer in IA32_GS_BASE
...
This allows easier access to processors fields
2024-03-07 16:05:29 +02:00
Bananymous
efed67cbd0
BAN: Remove unnecessary default constructor from Array
2024-03-06 16:01:52 +02:00
Bananymous
6234a5bc0b
Kernel: Move multiprocessor initialize after framebuffer is created
...
This allows getting output before multiprocessor is started.
2024-03-06 16:00:19 +02:00
Bananymous
54f64e7618
Kernel: Move current page table to Processor
...
APs can now map kernel page table and print current time!
2024-03-06 02:19:59 +02:00
Bananymous
f0105cb7fb
Kernel: Move Interruptable from InterruptController.h to its own file
2024-03-06 00:47:02 +02:00
Bananymous
76b0f80169
Kernel: Move IDT to Processor
2024-03-06 00:45:54 +02:00
Bananymous
f84df175ce
Kernel: Save BSB id
2024-03-06 00:36:09 +02:00
Bananymous
58aca68726
Kernel: Move GDT to Processor
2024-03-06 00:35:45 +02:00
Bananymous
8670364f44
BAN: Remove unnecessary include from Array.h
2024-03-06 00:01:06 +02:00
Bananymous
418bc54f2b
Kernel: Move SpinLock definition to header and fix Scheduler locking
...
This patch allows inlining of spinlocks :)
2024-03-04 22:36:41 +02:00
Bananymous
9c36d7c338
BAN/Kernel: Rework assertion/panic system
...
BAN/Assert.h does not need any includes meaning it can be included
anywhere without problems.
2024-03-04 11:41:54 +02:00
Bananymous
8141b9977d
Kernel: Per processor information is now stored in class Processor
...
This allows us to allocate processor stacks, and other per processor
structures dynamically in runtime. Giving processor stack to
ap_trampoline feels super hacky, but it works for now.
2024-03-03 22:30:06 +02:00
Bananymous
c035d3c82c
Kernel: Start all processors on kernel boot
...
Processors don't do anything, except print hello message and halt.
2024-03-03 02:19:43 +02:00
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
Bananymous
b165340662
Kernel: Don't use strcat in kernel code
2024-02-14 14:59:13 +02:00
Bananymous
5ad4340679
BAN: Use strerrordesc_np instead of strerror
2024-02-14 14:58:27 +02:00
Bananymous
b56fa4a29d
LibC: Implement fscanf
...
I had missed this when I was implementing *scanf functions
2024-02-14 14:39:22 +02:00
Bananymous
e946b392c9
LibC: Add definition for S_IFMT
...
I was using S_IFMASK, but linux seems to use this
2024-02-14 14:39:22 +02:00
Bananymous
81689b5f02
LibC: Implement most of missing functions from string.h
...
only strcoll*, strxfrm* and strerror_l are left unimplemented
2024-02-14 14:39:22 +02:00
Bananymous
c18d926174
LibC: Fix timeval field name
2024-02-14 03:36:18 +02:00
Bananymous
00662bad46
Kernel: Rewrite HPET code
...
Now the set timer frequency actually works... :D
2024-02-13 17:59:48 +02:00
Bananymous
420a7b60ca
resolver: use select for client communication
2024-02-12 23:47:39 +02:00
Bananymous
2ab3eb4109
Kernel: Fix bugs in select
...
Unix domain socket is now select readable when it has pending
connection
2024-02-12 23:46:27 +02:00
Bananymous
9314528b9b
Kernel: Improve syscall handling
...
Syscalls are now called from a list of function pointers
2024-02-12 21:51:11 +02:00
Bananymous
78ef7e804f
BAN: Implement bit_cast
2024-02-12 21:46:33 +02:00
Bananymous
3fc1edede0
Kernel/LibC: Implement super basic select
...
This does not really even block but it works... :D
2024-02-12 17:26:33 +02:00
Bananymous
f50b4be162
Kernel: Cleanup TCP code
2024-02-12 15:44:40 +02:00
Bananymous
ccde8148a7
Userspace: Implement basic udp test program
2024-02-12 04:45:42 +02:00
Bananymous
b9bbf42538
Userspace: Implement basic test program for tcp connection
2024-02-12 04:45:42 +02:00
Bananymous
435636a655
Kernel: Implement super simple TCP stack
...
No SACK support and windows are fixed size
2024-02-12 04:45:42 +02:00
Bananymous
ba06269b14
Kernel: Move on_close_impl from network socket to udp socket
2024-02-12 04:45:42 +02:00
Bananymous
be01ccdb08
Kernel: Fix E1000 mtu
2024-02-12 04:25:39 +02:00
Bananymous
b45d27593f
Kernel: Implement super simple PRNG
2024-02-12 04:25:06 +02:00
Bananymous
ff49d8b84f
Kernel: Cleanup OSI layer overlapping
2024-02-09 17:05:07 +02:00
Bananymous
5d78cd3016
Kernel: Add spin lock assert back. I had accidentally deleted it
2024-02-09 16:58:55 +02:00
Bananymous
ed0b1a86aa
Kernel: Semaphores and Threads can now be blocked with timeout
2024-02-09 15:28:15 +02:00
Bananymous
534b3e6a9a
Kernel: Add LockFreeGuard to LockGuard.h
2024-02-09 15:13:54 +02:00
Bananymous
d452cf4170
Kernel: Fix checksum for packets with odd number of bytes
2024-02-09 01:20:40 +02:00
Bananymous
f117027175
resolver: dump errors to debug output
2024-02-08 18:34:15 +02:00
Bananymous
acf79570ef
Kernel: Cleanup network APIs and error messages
2024-02-08 18:33:49 +02:00
Bananymous
5a939cf252
Userspace: Add simple test for unix domain sockets
2024-02-08 13:18:54 +02:00
Bananymous
9bc7a72a25
Kernel: Implement unix domain sockets with SOCK_DGRAM
...
Also unbind sockets on close
2024-02-08 13:18:54 +02:00
Bananymous
065ee9004c
Userspace: Add DNS cache to resolver
...
Also the format of resolver reply is now just sockaddr_storage with
family set and address in the storage field.
2024-02-08 12:06:30 +02:00
Bananymous
6fb69a1dc2
LibC: Implement inet_ntop for IPv4 addresses
2024-02-08 11:59:11 +02:00
Bananymous
49889858fa
Kernel: Allow chmod on TmpSocketInode
2024-02-08 03:16:01 +02:00
Bananymous
2424f38a62
Userspace: Implement super simple DNS resolver in userspace
...
You connect to this service using unix domain sockets and send the
asked domain name. It will respond with ip address or 'unavailable'
There is no DNS cache implemented so all calls ask the nameserver.
2024-02-08 03:14:00 +02:00
Bananymous
218456d127
BAN: Fix some includes
2024-02-08 03:13:21 +02:00
Bananymous
e7dd03e551
Kernel: Implement basic connection-mode unix domain sockets
2024-02-08 02:28:19 +02:00
Bananymous
0c8e9fe095
Kernel: Add operator bool() for WeakPtr
2024-02-08 02:26:46 +02:00
Bananymous
5b4acec4ca
BAN: Add capacity() getter for Queue
2024-02-07 22:53:56 +02:00
Bananymous
e26f360d93
Kernel: allow kmalloc of size 0
2024-02-07 22:36:24 +02:00