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
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
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
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
f33e78882e
Kernel: Add argc and argv to process entry
2023-05-16 00:27:49 +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
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
bc35a561d3
Kernel: GDT tss selector is now 16 bit value
2023-05-06 17:34:22 +03:00
06bc807e34
Kernel: MMU can now provide info about virtual address space
2023-05-06 17:34:22 +03:00
6262e41de1
Kernel: ISRs now print pid and tid
2023-05-06 00:10:15 +03:00
0cb53efa01
Kernel: 64 bit MMU now properly identity maps kernel
2023-05-05 14:19:28 +03:00
f139fc2229
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
6ecc8cac0e
Kernel: TSS stack can be set after initialization
2023-04-25 14:48:12 +03:00
8c1f5bfe1e
Kernel: Remove obsolete userspace stuff from kernel
2023-04-22 15:38:45 +03:00
3ad0d2328d
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
be14a6c239
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
3aa0eeb4a3
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
b3eeb6412f
Kernel: Add some bareboness functionality to map virtual addresses
2023-04-19 23:51:36 +03:00
d38470c8e2
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
2de64b592d
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
9c0f3dd996
Kernel: Move kmalloc and MMU to Memory directory
2023-04-18 10:18:15 +03:00
fe87c08a02
LibC: add needed stubs to build executables with our compiler
2023-04-12 17:53:02 +03:00
8637959289
Kernel: We can create basic userspace processes
...
These are still allocated on the kernel memory
2023-04-12 17:52:36 +03:00
e704968f96
Kernel: Threads can now be terminated mid execution
2023-04-10 21:07:25 +03:00
641ed23380
Kernel: Fix framepointers on started threads
2023-04-10 21:07:25 +03:00
9f977488fa
BuildSystem: cmake can now build out libc
...
I can't seem to get libc++ build to work...
2023-04-10 21:07:25 +03:00
e322826347
Kernel: Optimize scheduler idling
...
Now after each interrupt we will ask the scheduler to reschedule
if the current thread is the idle thread. This allows semaphore
unblocking to be practically instant when there is only one thread
executing.
Now disk reading is back to ~3 MB/s for single threaded process
2023-04-03 01:51:05 +03:00
e49d3c7bfe
BuildSystem: We are now using cmake instead of plain make
...
I have been annoyed for a while since I had to build everything
when running the os since the buildsystem was really bad.
I wanted to rewrite the whole build system and changed to using cmake
:)
2023-04-02 04:07:27 +03:00
8b8e3cbbf0
Kernel/Userspace: Start initial work on userspace and syscalls
2023-03-13 15:32:46 +02:00
af854ec9e1
Kernel: Thread creation now takes void(*)() as entry and void* as data
...
This simplifies threading for the future and gets rid of (undefined?)
cast of member function pointer to address
2023-03-09 15:33:42 +02:00
ed18d86f08
Kernel: Fix spinlock unlocking in x86_64
...
Spinlock unlock used a 64 bit write on 32 bit integer, overwriting
some random memory. This caused some really hard to find bugs
2023-03-08 02:41:44 +02:00
df8811fc1a
Kernel: Remove "a" from .section .text
2023-03-07 01:57:09 +02:00
06db890d49
Kernel: Add ubsan
...
My brain has been melting since I'm getting very random bugs.
I hope I can debug them better with ubsan :)
2023-03-06 23:38:05 +02:00
1dd61e93b6
Kernel: Threads cannot take arguments anymore
2023-03-02 01:56:09 +02:00
7fcbb869e1
Kernel: Initialize GDT in kernel code
...
We dont use the boot GDT only while booting
2023-03-01 21:21:56 +02:00
7f8cad83b1
Kernel: x86_64 boot script now makes GDT with null, kernel code and data
2023-03-01 21:21:56 +02:00
9756de02ef
Kernel: MMU now takes flags when allocating pages
2023-03-01 21:21:56 +02:00
80f9428337
Kernel: Fix prefs font for 32 bit
2023-02-24 03:19:54 +02:00
c9ea22f5e2
Kernel: IDT now confirms that it allocated succesfully
2023-02-22 21:48:40 +02:00
d9c05b7378
Kernel: rewrite the whole kmalloc (again)
...
Performance of the old kmalloc implementation was terrible.
We now use fixed-width linked list allocations for sizes <= 60 bytes.
This is much faster than variable size allocation.
We don't use bitmap scanning anymore since it was probably the slow
part. Instead we use headers that tell allocations size and aligment.
I removed the kmalloc_eternal, even though it was very fast, there is
not really any need for it, since the only place it was used in was IDT.
These changes allowed my psf (font) parsing to go from ~500 ms to ~20 ms.
(coming soon :D)
2023-02-22 16:32:50 +02:00
1bd8b0fe5c
Kernel: Sleep now actually sleeps and allows idling
2023-02-19 18:52:25 +02:00
6fab26692b
Kernel: remove unnecessary function from x86_64 Thread.S
2023-02-02 23:48:18 +02:00
5b5e620d8a
Kernel: Improve multithreading support
...
We can now use arbitary BAN::function<void(...)> as the Thread.
I also implemented multithreading for i386 since it was not done
on the initial multithreading commit.
2023-02-02 23:24:12 +02:00
9b8de5025a
All: rename every function from UpperCamelCase to snake_case
...
This was a mess since I didn't know which to use but now I decided
to go with snake_case :)
2023-02-01 21:05:44 +02:00