Commit Graph

808 Commits

Author SHA1 Message Date
232fdcb82c Kernel: add basic support for symlinks 2023-06-01 00:24:45 +03:00
0ccc23d544 Kernel: Shell opens standard files 2023-05-31 23:14:15 +03:00
02f0239016 Kernel: Cleanup exec code 2023-05-31 22:36:05 +03:00
ab61b49aca Kernel: Add SYS_EXEC syscall 2023-05-31 20:57:33 +03:00
4da1d6fd27 Kernel: Implement Process::exec() 2023-05-31 20:56:29 +03:00
909e847369 Kernel: Move userspace entry functions to Process instead of Thread 2023-05-31 19:31:10 +03:00
eafa09fecf Kernel: boot.S maps GiB as single pdpte 2023-05-31 00:51:15 +03:00
8175348284 Kernel: Fix comment 2023-05-31 00:51:15 +03:00
b2832cb47a Kernel: PageTable destructor works now
we are successfully booting higher half kernel now :)
2023-05-31 00:44:14 +03:00
9f499991c8 Kernel: PageTable::create_userspace() now works 2023-05-31 00:44:14 +03:00
9a416e8ae8 Kernel: kmalloc free error prints the pointer 2023-05-31 00:34:56 +03:00
911922c6a3 Kernel: RSDP location is now done with virtual addresses 2023-05-31 00:34:21 +03:00
1f2fd59ad5 Kernel: Physical range now calculates RAM with physical addresses 2023-05-31 00:33:44 +03:00
708d401d2c Kernel: Heap gets multiboot pointer with P2V 2023-05-30 23:57:44 +03:00
ed0dcacab3 Kernel: Move V2P and P2V to Memory/Types.h 2023-05-30 23:57:03 +03:00
e86050f343 Kernel: PageTable::map_range_at maps correctly the last page 2023-05-30 23:56:07 +03:00
57f7da6ce1 Kernel: Booting with higher half kernel gets to Heap initialization 2023-05-30 22:21:12 +03:00
93e6455171 Kernel: start work on higher half kernel 2023-05-30 08:00:17 +03:00
265fe9c62e 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
3b9d60d7cb Kernel: Remove unused includes of CriticalScope 2023-05-29 21:15:55 +03:00
278b873e89 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
e640344d7a Kernel: Rename MMU to PageTable
This is more descriptive name for what it actually represents
2023-05-29 21:06:09 +03:00
7151bb86a8 Kernel/LibC: opening standard files is done in libc 2023-05-29 20:21:19 +03:00
3d95cf02f3 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
dd3f34cb2c Kernel: Make RecursiveSpinLock thread safe
also SpinLock is now implemented with gcc builtins
2023-05-29 19:38:09 +03:00
0c316ebfb2 Kernel: Add SYS_SLEEP 2023-05-28 22:34:48 +03:00
282bf24f65 Kernel: fork() now copies allocations through FixedWidthAllocator 2023-05-28 21:34:35 +03:00
f964f6be8d Kernel: Move page macros to Types.h 2023-05-28 21:03:08 +03:00
0202ccec5f Kernel: ISR will now crash userspace process instead of panicing kernel 2023-05-28 20:53:10 +03:00
636c308993 Kernel: fork() now copies allocation done through GeneralAllocator 2023-05-28 20:37:39 +03:00
6fdbe6f9c2 Kernel: Add bareboness fork() function 2023-05-28 18:08:49 +03:00
c19f4c019a Kernel: Add invalidate() to MMU 2023-05-28 18:05:49 +03:00
83eb3dc0cb Kernel: fix MMU::map_page_at()
We used to only reassign if flags changed
2023-05-28 17:57:05 +03:00
0129619d9a Kernel: Processes and Threads use VirtualRange memory allocations 2023-05-28 17:48:34 +03:00
e0479b291d Kernel: Move PhysicalRange to its own file and add VirtualRange 2023-05-28 17:48:34 +03:00
b847d7dfd5 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
fed690a7f2 Kernel: Directory listing is working again 2023-05-26 22:31:21 +03:00
54d981120d Kernel: kmalloc debug_dump is marked [[maybe_unused]] 2023-05-26 22:31:21 +03:00
f79250c4d4 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
0ab3332ad3 Userspace: Start work on shell 2023-05-26 22:31:21 +03:00
9e0abbc2f0 Kernel: Add bareboness possibility to set termios 2023-05-26 22:31:21 +03:00
4a4a3bf184 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
f33e78882e Kernel: Add argc and argv to process entry 2023-05-16 00:27:49 +03:00
0ff067bdb7 Kernel: Add MMUScope
This disables interrupts and loads specified mmu for the
scope it lives in
2023-05-16 00:26:39 +03:00
31ac3260ed Kernel: MMU keeps track of the current 2023-05-16 00:26:39 +03:00
85039020d3 Kernel: argc is passed as zero to userspace 2023-05-11 18:28:32 +03:00
7eb43990ad BuildSystem: userspace has cmake target 2023-05-11 16:19:53 +03:00
53f4b5a9da LibC: add function declarations to sys/stat.h 2023-05-11 15:11:33 +03:00
1cf7ef3de6 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
812e61ca70 Kernel: Add barebones GeneralAllocator for >4096B 2023-05-08 22:10:49 +03:00