Commit Graph

759 Commits

Author SHA1 Message Date
ff548bd898 Kernel: Shell can now list symlinks 2023-06-01 00:25:53 +03:00
835d32814d Kernel: add basic support for symlinks 2023-06-01 00:24:45 +03:00
79d1f665f2 Kernel: Shell opens standard files 2023-05-31 23:14:15 +03:00
1daa1f5611 Kernel: Cleanup exec code 2023-05-31 22:36:05 +03:00
24a190d1f7 Kernel: Add SYS_EXEC syscall 2023-05-31 20:57:33 +03:00
b48b239882 Kernel: Implement Process::exec() 2023-05-31 20:56:29 +03:00
5fb69300ca Kernel: Move userspace entry functions to Process instead of Thread 2023-05-31 19:31:10 +03:00
dcb23f686f Kernel: boot.S maps GiB as single pdpte 2023-05-31 00:51:15 +03:00
650570e57d Kernel: Fix comment 2023-05-31 00:51:15 +03:00
1f5a36f074 Kernel: PageTable destructor works now
we are successfully booting higher half kernel now :)
2023-05-31 00:44:14 +03:00
aeaf2cd3f1 Kernel: PageTable::create_userspace() now works 2023-05-31 00:44:14 +03:00
959c0fc572 Kernel: kmalloc free error prints the pointer 2023-05-31 00:34:56 +03:00
e3d3788f28 Kernel: RSDP location is now done with virtual addresses 2023-05-31 00:34:21 +03:00
850b7f27a2 Kernel: Physical range now calculates RAM with physical addresses 2023-05-31 00:33:44 +03:00
0939f23b04 Kernel: Heap gets multiboot pointer with P2V 2023-05-30 23:57:44 +03:00
67886b0c5a Kernel: Move V2P and P2V to Memory/Types.h 2023-05-30 23:57:03 +03:00
56eb6fb4ce Kernel: PageTable::map_range_at maps correctly the last page 2023-05-30 23:56:07 +03:00
81cf389754 Kernel: Booting with higher half kernel gets to Heap initialization 2023-05-30 22:21:12 +03:00
0907965dc5 Kernel: start work on higher half kernel 2023-05-30 08:00:17 +03:00
210d90ec79 Kernel: We now identity map full GiB in boot.S
The paging structure is pre-built so no unnecessary calculations are done
2023-05-30 00:08:52 +03:00
8bea18a6f2 Kernel: Remove unused includes of CriticalScope 2023-05-29 21:15:55 +03:00
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
5bb1f2a48c Kernel: Rename MMU to PageTable
This is more descriptive name for what it actually represents
2023-05-29 21:06:09 +03:00
fb17af4844 Kernel/LibC: opening standard files is done in libc 2023-05-29 20:21:19 +03:00
b8ec8918b7 Kernel: We can't lock the MMU lock in load()
It needs to be callable always by scheduler
2023-05-29 19:39:35 +03:00
ff83f967d8 Kernel: Make RecursiveSpinLock thread safe
also SpinLock is now implemented with gcc builtins
2023-05-29 19:38:09 +03:00
998999a755 Kernel: Add SYS_SLEEP 2023-05-28 22:34:48 +03:00
09666adc53 Kernel: fork() now copies allocations through FixedWidthAllocator 2023-05-28 21:34:35 +03:00
ec73db0057 Kernel: Move page macros to Types.h 2023-05-28 21:03:08 +03:00
833642d405 Kernel: ISR will now crash userspace process instead of panicing kernel 2023-05-28 20:53:10 +03:00
f04399c3a0 Kernel: fork() now copies allocation done through GeneralAllocator 2023-05-28 20:37:39 +03:00
f2d767b799 Kernel: Add bareboness fork() function 2023-05-28 18:08:49 +03:00
3e93dae53c Kernel: Add invalidate() to MMU 2023-05-28 18:05:49 +03:00
187bb046aa Kernel: fix MMU::map_page_at()
We used to only reassign if flags changed
2023-05-28 17:57:05 +03:00
b021d3eebd Kernel: Processes and Threads use VirtualRange memory allocations 2023-05-28 17:48:34 +03:00
15842db83e Kernel: Move PhysicalRange to its own file and add VirtualRange 2023-05-28 17:48:34 +03:00
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
eb24d32383 Kernel: Directory listing is working again 2023-05-26 22:31:21 +03:00
565e3db22d Kernel: kmalloc debug_dump is marked [[maybe_unused]] 2023-05-26 22:31:21 +03:00
faf14b880e LibC: Rewrite all the headers.
We now have more or less posix issue 2018 conforming libc headers.

This was a really time consuming and boring operation but it had to
be done.

Now we get to actually start implementing libc :)
2023-05-26 22:31:21 +03:00
27147790fd Userspace: Start work on shell 2023-05-26 22:31:21 +03:00
1658e925f2 Kernel: Add bareboness possibility to set termios 2023-05-26 22:31:21 +03:00
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
e0a72defa2 Kernel: Add argc and argv to process entry 2023-05-16 00:27:49 +03:00
e0a7e242f8 Kernel: Add MMUScope
This disables interrupts and loads specified mmu for the
scope it lives in
2023-05-16 00:26:39 +03:00
6acb86c14b Kernel: MMU keeps track of the current 2023-05-16 00:26:39 +03:00
ec316391c5 Kernel: argc is passed as zero to userspace 2023-05-11 18:28:32 +03:00
177b205c48 BuildSystem: userspace has cmake target 2023-05-11 16:19:53 +03:00
729ff267d7 LibC: add function declarations to sys/stat.h 2023-05-11 15:11:33 +03:00
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