23543b15ca
Kernel: Rework syscall calling
...
I removed the intermediate function when calling syscalls. Now syscall
handler calls the current process automatically. Only exception is
sys_fork, since it needs a assembly trampoline for the new thread.
2023-06-12 14:16:48 +03:00
caca6dc701
Kernel: Exceptions will now enable interrupts before calling exit()
...
this allows scheduler verification on reschedule() not panic
2023-06-11 03:29:22 +03:00
4cdeb98897
Kernel: We now store the processes exit code
2023-06-10 17:31:56 +03:00
841584ccbd
Kernel: get_free_contiguous_pages works with non-page aligned addresses
...
also fix bug in ordering
2023-06-06 02:03:23 +03:00
896b919c9d
Kernel/LibC: pass environ pointer to process
2023-06-05 21:12:08 +03:00
b403155ca9
Kernel: You can specify first vaddr for getting free pages
2023-06-04 01:15:48 +03:00
b168462b43
Kernel: PageTable now has debug_dump
...
This dumps all the mapped pages and their flags
2023-06-03 20:08:13 +03:00
68691faca1
Kernel: boot.S is back to 2 MiB pages
...
bochs doesn't seem to support 1 GiB pages
2023-06-03 18:53:36 +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
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
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
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
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
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
e0a72defa2
Kernel: Add argc and argv to process entry
2023-05-16 00:27:49 +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
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
512be884ed
Kernel: Add barebones GeneralAllocator for >4096B
2023-05-08 22:10:49 +03:00
ab8aac7dcf
Kernel: GDT tss selector is now 16 bit value
2023-05-06 17:34:22 +03:00
f36b94d039
Kernel: MMU can now provide info about virtual address space
2023-05-06 17:34:22 +03:00
92daa831d1
Kernel: ISRs now print pid and tid
2023-05-06 00:10:15 +03:00
e7a170c89f
Kernel: 64 bit MMU now properly identity maps kernel
2023-05-05 14:19:28 +03:00
55bb0084aa
Kernel: namespace and function renames
...
MMU moved to namespace kernel
Kernel::Memory::Heap moved to just Kernel
MMU::map_{page,range} renamed to identity_map_{page,range}
Add MMU::get_page_flags
2023-04-28 14:48:38 +03:00
acf5660090
Kernel: Add set_tss_stack() to 32 bit
2023-04-28 14:44:23 +03:00
f1a0625b61
Kernel: TSS stack can be set after initialization
2023-04-25 14:48:12 +03:00
fb6add2b4a
Kernel: Fix 32 bit MMU
2023-04-22 18:22:39 +03:00
e0ce2394fe
Kernel: Remove obsolete userspace stuff from kernel
2023-04-22 15:38:45 +03:00
fc71d2f7c4
Kernel: Don't call 'cli' on interrupt
...
This is automatically done because we are using interrupt gates
in the IDT
2023-04-21 11:18:08 +03:00
35e949ef5e
Kernel: Fix syscall return value in 32 bit
2023-04-21 11:08:02 +03:00
9c506ef85b
Kernel: Stack pointer is validated when updated
...
This allows us not to fail stack pointer when in syscall since
interrupts use their own stack
2023-04-21 10:40:24 +03:00
b1c7af38d0
Kernel: Add barebones per process virtual addresses
...
We now assign every (userspace) process its own MMU which we load
in scheduler. This allows every process to have separate virtual
address space.
This is very hackish implementations but it works for now
2023-04-20 00:45:41 +03:00
ea0c9b639f
Kernel: Add some bareboness functionality to map virtual addresses
2023-04-19 23:51:36 +03:00
0030f035be
Kernel: Rename MMU::{un,}allocate... to MMU::{un,}map
...
This is more appropriate name for the behaviour :D
2023-04-19 21:50:30 +03:00
6a3b3213cf
Kernel: Kmalloc now has its memory statically allocated
...
We don't use the memory map given by bootloader since this automatically
maps the memory to a available space.
2023-04-18 10:18:15 +03:00
fdb4eb6042
Kernel: Move kmalloc and MMU to Memory directory
2023-04-18 10:18:15 +03:00
3f9d6f0311
LibC: add needed stubs to build executables with our compiler
2023-04-12 17:53:02 +03:00
8ee63f8264
Kernel: We can create basic userspace processes
...
These are still allocated on the kernel memory
2023-04-12 17:52:36 +03:00