Commit Graph

333 Commits

Author SHA1 Message Date
Bananymous
a3aca67eef Kernel: fork() now clones current thread
This is how posix specifies thread cloning during fork
2023-06-04 17:40:37 +03:00
Bananymous
977652ad57 Kernel: Process FixedWidthAllocators come now in 4 sizes 2023-06-04 01:26:43 +03:00
Bananymous
5bf7ca1c80 Kernel: Allocators are now stored in UniqPtr
This allows proper memory management, we had some memory leak
2023-06-04 01:25:57 +03:00
Bananymous
1b1f22c35e Kernel: make load_elf() its own function 2023-06-04 01:24:11 +03:00
Bananymous
479817231a Kernel: PhysicalRange maps its nodes to kernel vaddr space
This keeps the lower half of address space cleaner
2023-06-04 01:20:47 +03:00
Bananymous
e3c5477df4 Kernel: reorder process exit steps 2023-06-04 01:19:04 +03:00
Bananymous
9228df0f23 Kernel: Inode/Device detection is done with overridden bool functions 2023-06-03 13:28:15 +03:00
Bananymous
402ad85583 Kernel: Heap will return 0 if no free page is available 2023-06-03 02:55:31 +03:00
Bananymous
53e91ba98a Kernel: DiskCache will try to shrink_to_fit after cache cleanup 2023-06-03 02:55:22 +03:00
Bananymous
fd153f3762 Kernel: DiskCache won't crash when running out of kmalloc memory 2023-06-03 02:36:20 +03:00
Bananymous
813d0f1b5f Kernel: add basic disk cache
ATADevices now add disk cache to themselves
2023-06-03 02:23:14 +03:00
Bananymous
2b901abfb1 Kernel: Shell 'memory' now prints heap memory usage 2023-06-03 02:22:18 +03:00
Bananymous
8645c4c653 Kernel: Shell ls and stat now properly show symlinks 2023-06-02 18:22:56 +03:00
Bananymous
7aea8c45f7 Kernel: VFS now has max link depth of 100 2023-06-02 12:50:40 +03:00
Bananymous
7bbdee6cc4 Kernel: Symlinks are now working
We still have to implement loop or depth detection
2023-06-02 11:43:46 +03:00
Bananymous
ff548bd898 Kernel: Shell can now list symlinks 2023-06-01 00:25:53 +03:00
Bananymous
835d32814d Kernel: add basic support for symlinks 2023-06-01 00:24:45 +03:00
Bananymous
79d1f665f2 Kernel: Shell opens standard files 2023-05-31 23:14:15 +03:00
Bananymous
1daa1f5611 Kernel: Cleanup exec code 2023-05-31 22:36:05 +03:00
Bananymous
24a190d1f7 Kernel: Add SYS_EXEC syscall 2023-05-31 20:57:33 +03:00
Bananymous
b48b239882 Kernel: Implement Process::exec() 2023-05-31 20:56:29 +03:00
Bananymous
5fb69300ca Kernel: Move userspace entry functions to Process instead of Thread 2023-05-31 19:31:10 +03:00
Bananymous
959c0fc572 Kernel: kmalloc free error prints the pointer 2023-05-31 00:34:56 +03:00
Bananymous
e3d3788f28 Kernel: RSDP location is now done with virtual addresses 2023-05-31 00:34:21 +03:00
Bananymous
850b7f27a2 Kernel: Physical range now calculates RAM with physical addresses 2023-05-31 00:33:44 +03:00
Bananymous
0939f23b04 Kernel: Heap gets multiboot pointer with P2V 2023-05-30 23:57:44 +03:00
Bananymous
8bea18a6f2 Kernel: Remove unused includes of CriticalScope 2023-05-29 21:15:55 +03:00
Bananymous
861966eed6 Kernel: Remove unnecessary usages of PageTableScope
This should be used as few times as possible since it calls 'cli'
2023-05-29 21:11:29 +03:00
Bananymous
5bb1f2a48c Kernel: Rename MMU to PageTable
This is more descriptive name for what it actually represents
2023-05-29 21:06:09 +03:00
Bananymous
fb17af4844 Kernel/LibC: opening standard files is done in libc 2023-05-29 20:21:19 +03:00
Bananymous
ff83f967d8 Kernel: Make RecursiveSpinLock thread safe
also SpinLock is now implemented with gcc builtins
2023-05-29 19:38:09 +03:00
Bananymous
998999a755 Kernel: Add SYS_SLEEP 2023-05-28 22:34:48 +03:00
Bananymous
09666adc53 Kernel: fork() now copies allocations through FixedWidthAllocator 2023-05-28 21:34:35 +03:00
Bananymous
f04399c3a0 Kernel: fork() now copies allocation done through GeneralAllocator 2023-05-28 20:37:39 +03:00
Bananymous
f2d767b799 Kernel: Add bareboness fork() function 2023-05-28 18:08:49 +03:00
Bananymous
b021d3eebd Kernel: Processes and Threads use VirtualRange memory allocations 2023-05-28 17:48:34 +03:00
Bananymous
15842db83e Kernel: Move PhysicalRange to its own file and add VirtualRange 2023-05-28 17:48:34 +03:00
Bananymous
869de7283f Kernel: MMU::get() is now MMU::kernel
MMU is can now be locked with RecursiveSpinLock.

Scheduler now has get_current_tid() that works before the Scheduler
is initialized. This allows RecursiveSpinLock usage early on.
2023-05-28 16:18:18 +03:00
Bananymous
eb24d32383 Kernel: Directory listing is working again 2023-05-26 22:31:21 +03:00
Bananymous
565e3db22d Kernel: kmalloc debug_dump is marked [[maybe_unused]] 2023-05-26 22:31:21 +03:00
Bananymous
27147790fd Userspace: Start work on shell 2023-05-26 22:31:21 +03:00
Bananymous
1658e925f2 Kernel: Add bareboness possibility to set termios 2023-05-26 22:31:21 +03:00
Bananymous
80d9f6131b Kernel/LibC: move file offset back to kernel
This makes keeping track of offsets easier and more proper
2023-05-26 22:31:21 +03:00
Bananymous
e0a72defa2 Kernel: Add argc and argv to process entry 2023-05-16 00:27:49 +03:00
Bananymous
177b205c48 BuildSystem: userspace has cmake target 2023-05-11 16:19:53 +03:00
Bananymous
729ff267d7 LibC: add function declarations to sys/stat.h 2023-05-11 15:11:33 +03:00
Bananymous
ff2e2937a5 Kernel: Remove offset from OpenFileDescriptor
This is now handled on the libc side. There might be reasons to
have it in kernel side, but for simplicity's sake I'm moving it
to libc for now :)
2023-05-09 20:31:22 +03:00
Bananymous
512be884ed Kernel: Add barebones GeneralAllocator for >4096B 2023-05-08 22:10:49 +03:00
Bananymous
f1667b398a Kernel: FixedWidthAllocator operates on MMU
Instead of Process* we use MMU& in FixedWidthAllocator since it is
everything it actually needs :)
2023-05-08 00:06:56 +03:00
Bananymous
b0ec0f1a1a Kernel: We add FixedWidthAllocators on demand
On SYS_ALLOC we will add a new FixedWidthAllocator if the old ones
are already full or we don't have one with proper size. This allows
arbitary number of allocations as long as you have enough memory
available :)

Next I will be writing a general allocator for allocations larger
than 4096 bytes which should make SYS_ALLOC syscall complete :)
2023-05-07 23:57:01 +03:00