Bananymous
24b71d1170
Kernel: Appreciate setuid and setgid bits executables
2023-12-06 18:14:27 +02:00
Bananymous
393ac33e3c
Kernel: Make sys_nanosleep interruptable by signals
2023-12-06 16:22:24 +02:00
Bananymous
deeb6d2756
Kernel: Cleanup sys_sleep() and TTY::read_impl
2023-12-06 16:21:22 +02:00
Bananymous
a12ffaa8a2
Kernel: Make sleep syscall interruptable
2023-12-06 13:13:37 +02:00
Bananymous
1c78671078
Kernel: Rework all signal code
...
Signal handling code was way too complex. Now everything is
simplified and there is no need for ThreadBlockers.
Only complication that this patch includes is that blocking syscalls
have to manually be made interruptable by signal. There might be some
clever solution to combat this is make this happen automatically.
2023-12-06 13:02:17 +02:00
Bananymous
cdcc36efde
Kernel: Remove unnecessary raise syscall
2023-12-06 13:00:45 +02:00
Bananymous
4a87d6052b
Kernel: Add API for implementing mmappable devices
2023-11-28 23:50:49 +02:00
Bananymous
09b7cb2f33
Kernel/LibC: Implement pread()
2023-11-28 23:47:30 +02:00
Bananymous
60e755210c
Kernel/LibC: Implement very basic msync
2023-11-22 22:44:06 +02:00
Bananymous
c084ce8b01
Kernel/LibC: Implement readlink and readlinkat
2023-11-11 23:16:52 +02:00
Bananymous
87ff38664a
Kernel/LibC: Add syscall and wrapper for unlink
2023-10-25 21:45:04 +03:00
Bananymous
6ee4d10651
Kernel/LibC/Userspace: Implement mkdir and creat
...
Touch now uses creat insteadd of open with O_CREAT flag
2023-10-25 21:07:26 +03:00
Bananymous
18e90d305d
Kernel: Add Inode API for creating directories
2023-10-25 19:36:04 +03:00
Bananymous
627b8cc140
Kernel/LibC: implement chmod syscall + libc wrapper
2023-10-25 02:35:37 +03:00
Bananymous
f3d9da9549
Kernel: Rewrite all read/write functions to use BAN::ByteSpan
...
This allows us to not work with raw pointers and use sized containers
for reading and writing.
2023-10-24 11:56:00 +03:00
Bananymous
9a6cc0dc2d
Kernel: Check whether ELF address space can be loaded
...
Before reserving address space in SYS_EXEC verify that ELF address
space is actually loadable. For example when trying to execute the
kernel binary in userspace, binarys address space would overlap with
current kernel address space. Now kernel won't crash anymore and
will just send SIGKILL to the process calling exec*().
2023-10-12 22:59:36 +03:00
Bananymous
39bc6c43dc
Kernel: Expose command line and environment to /proc
2023-09-30 23:01:33 +03:00
Bananymous
5ee3506474
Kernel: Add physical memory info to /proc/{pid}/meminfo
2023-09-30 22:11:45 +03:00
Bananymous
785de5f9b9
Kernel: /proc/{pid}/meminfo now reports per process memory usage
2023-09-30 21:20:18 +03:00
Bananymous
8f630a97df
Kernel: Add procfs that contains only pids
2023-09-30 21:19:36 +03:00
Bananymous
43c23db4a6
Kernel: Implement MAP_SHARED for regular files
...
Every inode holds a weak pointer to shared file data. This contains
physical addresses of pages for inode file data. Physical addresses
are allocated and read on demand.
When last shared mapping is unmapped. The inodes shared data is freed
and written to the inode.
2023-09-29 18:59:20 +03:00
Bananymous
8ff4e1f8c8
Kernel: Don't write to stat_loc on SYS_WAIT if it is null
2023-09-29 18:31:44 +03:00
Bananymous
7b1c573ad0
Kernel: Implement MAP_PRIVATE file mappings
...
mmap() now supports mapping files with MAP_PRIVATE.
2023-09-29 17:23:42 +03:00
Bananymous
4ee759aa3b
Kernel: Implement new abstract MemoryRegion
...
MemoryBackedRegion now inherits from this and is used for private
anonymous mappigs. This will make shared mappings and file backed
mappings much easier to implement.
2023-09-29 16:18:23 +03:00
Bananymous
a34f2e6e0d
Kernel: Use the new on demand ELF structure
...
All executable files are now read from disk and paged on demand.
This was a big rewrite of the old ELF library but in the end
everything seems much cleaner, since all the old functionality was
not actually needed for execution.
I have to do some measurements, but I feel like memory usage dropped
quite a bit after this change.
2023-09-29 02:00:10 +03:00
Bananymous
245f58cc3a
Kernel: mmap regions are now demand paged
...
mmap will not actually take any memory unless you use the given
memory.
2023-09-28 21:07:14 +03:00
Bananymous
d7ecf94347
Kernel: Reboot will now always succeed
...
If acpi reset fails, we forcefully trigger a triple fault to restart
the system.
2023-09-28 13:53:03 +03:00
Bananymous
6eda65eea6
Kernel/LibC/Userspace: Add SYS_POWEROFF + cli tool
...
You can now shutdown/reboot banan-os with the poweroff cli tool.
Reboot doesn't seem to work on qemu.
2023-09-28 12:36:47 +03:00
Bananymous
cb76f1ea75
Kernel: Add some functionality to disable TTY input/output
...
Userspace programs can call tty_ctrl() to disable/enable tty from
handling input and displaying output.
This API is probably going to change in the future to ioctl calls
but I'm not sure how ioctl is used and what functionality should it
have. I decided to create whole new function and syscall for now.
Next I will expose framebuffer in /dev/fb0 and then I can start work
on graphical environment! :D
2023-09-27 15:44:05 +03:00
Bananymous
1e6930a3bc
Kernel: SYS_SYNC now schedules sync to happen soon
...
You can pass non-zero argument to the syscall to block until the
sync has finished.
2023-09-27 00:34:00 +03:00
Bananymous
c33e658f98
Kernel: Allow creationg of empty processes and manual registration
...
You can now create kernel processes without any threads, add the
needed threads and only then register the process and its threads
to the scheduler.
2023-09-27 00:29:45 +03:00
Bananymous
22252cfcf0
Kernel: All syscalls now validate users pointers
...
We now validate pointers passed by the user, to forbid arbitary
memory read/write. Now the user is only allowed to pass in pointers
in their own mapped memory space (or null).
2023-09-25 22:07:12 +03:00
Bananymous
f6261e5dc9
Kernel: all mapped ranges are now stored in one container
...
We just now have a flag if a mapping is unmappable
2023-09-23 23:45:26 +03:00
Bananymous
d1bbbf48f6
Kernel: Fully remove sys_alloc and sys_free
...
I could delete the whole FixedWidthAllocator as it was now obsolete.
GeneralAllocator is still used by kmalloc. Kmalloc cannot actually
use it since, GeneralAllocator depends on SpinLock and kmalloc runs
without interrupts.
2023-09-23 03:53:30 +03:00
Bananymous
3ba15b41a3
Kernel/LibC: remove PATH resoltion from kernel
...
I have no idea why I had made PATH environment variable parsing
to be part of the kernel. Now the shell does the parsing and
environment syscall is no longer needed.
2023-09-23 03:08:14 +03:00
Bananymous
af4af1cae9
Kernel/LibC: add mmap for private anonymous mappings
...
This will be used by the userspace to get more memory. Currently
kernel handles all allocations, which is not preferable.
2023-09-22 23:01:14 +03:00
Bananymous
63dc2b6aa6
Kernel: Implement SYS_SYNC and add sync executable to userspace
...
You can (and have to) manually sync disk after writes to it.
2023-09-11 01:26:27 +03:00
Bananymous
8fb5f97a18
Kernel: Improve open() POSIX compatability
...
Also rename Process::sys_creat -> create_file since it is not
actually a syscall and only used by open as a healper.
2023-09-10 00:31:42 +03:00
Bananymous
921d95d18f
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
Bananymous
39a5c52088
Kernel: Fix directory permissions
...
We did not care about X bit in directories and instead used only the
R bit for search/read.
2023-09-08 11:46:53 +03:00
Bananymous
9901f95d78
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00
Bananymous
6f002c926a
Kernel: add basic fcntl() with couple of commands and no validation
2023-09-04 12:57:09 +03:00
Bananymous
38e72019c7
Kernel: kill() with negative pid actually matches pgid
2023-08-22 14:54:15 +03:00
Bananymous
d745fca86a
Kernel: Process keeps track if forked process has called exec*()
2023-08-22 14:53:46 +03:00
Bananymous
60a2185ee6
Kernel/LibC: implement proper getpgid and setpgid
2023-08-22 14:53:12 +03:00
Bananymous
d634fec8dc
Kernel: Add function to enumerate processes in session
2023-08-22 14:52:28 +03:00
Bananymous
c9243f0d1e
Kernel/LibC: Add {get,set}pgrp()
2023-08-22 11:36:33 +03:00
Bananymous
0f6c19a1b7
Kernel: Barebones implementation sessions and process groups
2023-08-22 11:35:40 +03:00
Bananymous
79f3aa5419
Kernel/LibC: add dup() syscall and function
2023-08-17 12:03:29 +03:00
Bananymous
e1400f9680
Kernel: Remove unused syscall
2023-08-11 11:43:48 +03:00
Bananymous
96c0ad0d3d
Kernel: Remove get_unix_timestamp from SystemTimer
...
Kernel now uses the percise real_time() and time_since_boot()
2023-08-09 08:57:50 +03:00
Bananymous
6fcb191ca0
Kernel: Add PageTable::Flags::CacheDisable
...
Also fix multiple places where we were using uint8_t as page table
flags instead of PageTable::flags_t which we promoted to uint16_t
while back.
2023-08-06 23:59:30 +03:00
Bananymous
c732297623
Kernel: Rename TimerHandler to SystemTimer
...
I changed SystemTimer to only handle the "best" supported timer
it can initialize.
2023-08-04 16:06:47 +03:00
Bananymous
659adb89a6
Kernel: Start work on abstracting Timers
2023-08-04 10:29:42 +03:00
Bananymous
3139391e06
Kernel: Change PageTable API
...
Getting free pages not reserves them, so you don't have to hold
the page table lock :)
2023-08-02 22:09:14 +03:00
Bananymous
a78a7ed156
Kernel: Cleanup returns from any kind on interrupts
2023-08-01 14:23:50 +03:00
Bananymous
c4f6c859c1
Kernel: Generally improve signals
2023-07-31 22:28:18 +03:00
Bananymous
abe8810d47
Kernel: raise() now force sends signal
2023-07-30 14:17:07 +03:00
Bananymous
acf125c853
Kernel: Signals are not queued anymore
...
Posix doesn't require signal queing if you don't use sigqueue() which
we don't support. Process also has its own pending signal mask.
2023-07-29 16:54:31 +03:00
Bananymous
3c6be319b1
Kernel: Restructure process and thread termination
...
When we want to kill a process, we mark its threads as Terminating
or Terminated. If the thread is in critical section that has to be
finished, it will be in Terminating state until done. Once Scheduler
is trying to execute Terminated thread it will instead delete it.
Once processes last thread is marked Terminated, the processes will
turn it into a cleanup thread, that will allow blocks and memory
cleanup to be done.
2023-07-28 18:06:20 +03:00
Bananymous
7b4a2fe3d1
Kernel: Process::exit() unblocks the whole lock before blocking
2023-07-24 22:29:59 +03:00
Bananymous
f6ee4b3496
Kernel: Implement SYS_GET_PID and SYS_TCSETPGID
...
we don't have consept of process groups yet
2023-07-24 22:29:59 +03:00
Bananymous
1ef0534b69
Kernel: TTY now stores foreground process pid
...
this will be process pgid when we have process groups
2023-07-24 22:29:59 +03:00
Bananymous
b9dd1895bb
Kernel: add Thread::queue_signal()
2023-07-24 22:26:10 +03:00
Bananymous
f76d921e25
Kernel: you can now ask process if it is userspace process
2023-07-23 18:54:10 +03:00
Bananymous
9729e5a05b
Kernel: Change signal kernel API
...
return rsp and rip are now stored per thread
2023-07-23 18:33:10 +03:00
Bananymous
c12f4fb40f
Kernel: Make signals more POSIX
2023-07-21 20:01:12 +03:00
Bananymous
10169d773d
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00
Bananymous
b78596dcf4
Kernel: Scheduler now sends queued signals
2023-07-21 19:27:10 +03:00
Bananymous
40f7c6b8fa
Kernel: Make signals thread specific
2023-07-21 19:00:59 +03:00
Bananymous
8063700d7b
Kernel: add default signal actions
2023-07-21 18:02:35 +03:00
Bananymous
c2cf98e32f
Kernel/LibC: Add bareboness signals
...
You can now call raise() to raise a signal. Signal handlers are
not yet supported, but the handling works :)
2023-07-21 15:45:02 +03:00
Bananymous
94af856db0
Kernel: cleanup sys_exec()
...
We now scope everyting so desctructors get called
2023-07-19 23:20:39 +03:00
Bananymous
5d2bfc858e
Kernel: SYS_FORK can now fail instead of panicing on error
2023-07-19 17:47:12 +03:00
Bananymous
9ea2c1d932
Kernel: Support execute disable bit
...
We will now map executable memory explicitly as executable.
2023-07-13 14:28:53 +03:00
Bananymous
65559a3e44
Kernel: Fix multiple bugs with terminal
2023-07-13 13:09:52 +03:00
Bananymous
9bcfb34524
Kernel: Rewrite whole device structure
...
We now have DevFileSystem which is derived from RamFileSystem. All
devices are RamInodes. We don't have separate DeviceManager anymore.
To iterate over devices, you can loop througn every inode in devfs.
2023-07-10 23:17:14 +03:00
Bananymous
178fc00905
Kernel: creat() mode now has to be access mode
...
We provide the S_IFREG in creat
2023-07-10 15:34:41 +03:00
Bananymous
f7c4bc908e
Kernel: open() and openat() now take mode as parameter
...
O_CREAT now tries to create file if O_CREAT is specified
2023-07-10 15:08:54 +03:00
Bananymous
74fc0aa308
Kernel: Inode::create_file() now takes uid and gid as parameters
2023-07-10 13:32:10 +03:00
Bananymous
b6c4a2dbf1
Kernel: Edit lock scopes and make string copy able to fail
2023-07-07 23:12:19 +03:00
Bananymous
a2f5ad7bed
Kernel: Move open file descriptors to their own class
...
This simplifies code a lot :)
2023-07-07 23:11:37 +03:00
Bananymous
07fec6e211
Kernel/LibC: add basic dup2
2023-07-06 23:17:54 +03:00
Bananymous
4cd72992c8
Kernel/LibC: Add basic pipe() syscall and command
...
You can now create pipes :)
2023-07-06 22:16:26 +03:00
Bananymous
a74422281f
Kernel: Add O_CLOEXEC
2023-07-06 20:00:33 +03:00
Bananymous
a45f9ee76b
Kernel: Remove spammy process/thread exit printing
2023-07-06 10:34:46 +03:00
Bananymous
1fb305fa45
Kernel/LibC: add clock_gettime() for CLOCK_MONOTONIC
...
This gets the number of milliseconds since boot
2023-07-06 00:38:29 +03:00
Bananymous
44fb3945df
Kernel: General allocator takes first valid vaddr as parameter
2023-06-17 22:23:34 +03:00
Bananymous
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
Bananymous
f09b82c4b5
Kernel/LibC: add SYS_{SET,GET}_PWD and chdir, getpwd
2023-06-12 02:02:52 +03:00
Bananymous
58ec4d6a31
Kernel: Fix bug in elf loading
...
We were allocating one extra page
2023-06-12 00:59:19 +03:00
Bananymous
3fe67e4882
Kernel: Add syscalls for set{,e,re}{uid,gid}
2023-06-11 22:37:00 +03:00
Bananymous
78536f9678
Kernel/Userspace: Add basic init process
...
This process parses /etc/passwd and promps login screen.
When an username is entered, it will launch that users shell
2023-06-11 22:37:00 +03:00
Bananymous
c7ec19c25c
Kernel: Add basic Credentials for the system
...
Now filesystem access/open, etc confirm that you have access for rwxs
2023-06-11 20:06:06 +03:00
Bananymous
64890bb640
Kernel: Add SYS_OPENAT
2023-06-11 03:29:22 +03:00
Bananymous
691b17e0cc
Kernel: allow open() call with O_SEARCH
2023-06-11 00:18:34 +03:00
Bananymous
01311b470f
Kernel: Rewrite directory listing so it can be integrated to libc
2023-06-11 00:17:18 +03:00
Bananymous
4cdeb98897
Kernel: We now store the processes exit code
2023-06-10 17:31:56 +03:00
Bananymous
5032e79be3
Kernel: Process::exit() now uses the new Scheduler::reschedule()
...
We use this new function while waiting for all blocking threads to
resume execution
2023-06-09 00:49:19 +03:00
Bananymous
801025ad7b
Kernel: Big commit. Rewrite ELF loading code
...
We now load ELF files to VirtualRanges instead of using kmalloc.
We have only a fixed 1 MiB kmalloc for big allocations and this
allows loading files even when they don't fit in there.
This caused me to rewrite the whole ELF loading process since the
loaded ELF is not in memory mapped by every process.
Virtual ranges allow you to zero out the memory and to copy into
them from arbitary byte buffers.
2023-06-09 00:37:43 +03:00
Bananymous
24993f6020
LibC: implement setenv, unsetenv, putenv
2023-06-05 22:51:02 +03:00
Bananymous
55ea5c5488
Kernel: add basic support for environment variables
...
exec functions will search files from PATH
2023-06-05 22:51:02 +03:00
Bananymous
c6b5cc1e07
Kernel: exec now has better posix errors
2023-06-05 21:12:08 +03:00
Bananymous
896b919c9d
Kernel/LibC: pass environ pointer to process
2023-06-05 21:12:08 +03:00
Bananymous
08a806e75d
Kernel: verify that loaded elfs are executable
2023-06-05 19:29:32 +03:00
Bananymous
d1ad38c8d4
Kernel/LibC: add SYS_STAT and stat(), lstat()
2023-06-05 14:37:14 +03:00
Bananymous
9fbb2b9369
Kernel: Add SYS_WAIT
...
This syscall waits for a given pid.
2023-06-04 18:00:52 +03:00
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
7bbdee6cc4
Kernel: Symlinks are now working
...
We still have to implement loop or depth detection
2023-06-02 11:43:46 +03:00
Bananymous
835d32814d
Kernel: add basic support for symlinks
2023-06-01 00:24:45 +03:00
Bananymous
1daa1f5611
Kernel: Cleanup exec code
2023-05-31 22:36:05 +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
8bea18a6f2
Kernel: Remove unused includes of CriticalScope
2023-05-29 21:15:55 +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
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
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
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
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
Bananymous
12e42f40c5
Kernel/LibC: add free function for FixedWidthAllocator
...
I have to rework the syscall API and allocators in process. For
now this works well enough :)
2023-05-07 01:21:50 +03:00
Bananymous
bcfd838131
Kernel: Add basic fixed width allocator for userspace
...
We have to move process stacks to the general heap and maybe map
kernel to higher half.
2023-05-06 19:58:08 +03:00
Bananymous
9c07add00f
Kernel: Invalid physical addresses from heap are specified now by 0
2023-05-06 17:34:22 +03:00
Bananymous
f36b94d039
Kernel: MMU can now provide info about virtual address space
2023-05-06 17:34:22 +03:00
Bananymous
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
Bananymous
6e01e04922
Kernel: Fix bug in Process::create_userspace()
...
We used to write more than we needed to. This could lead to unwanted
page faults
2023-04-25 13:21:28 +03:00
Bananymous
b7c2ea8d46
Kernel: Fix possible dead lock in Process::read()
2023-04-23 14:46:18 +03:00
Bananymous
cd74b2167d
LibC: Write mostly functioning stdio
2023-04-23 14:32:37 +03:00
Bananymous
9b2a577fc3
Kernel: Add ASSERTion to Process::exit()
...
This is just so I don't forget that exit can currently only
be called on the executing thread itself
2023-04-22 19:05:27 +03:00
Bananymous
2dd09163e6
Kernel: Process can now load 32 bit elf files on i386
...
We are page faulting on process exit but I'm investigating
the reason.
2023-04-22 19:03:30 +03:00
Bananymous
48445f12ac
Kernel: More proper paging in Elf loading
2023-04-22 18:17:44 +03:00
Bananymous
cc04990ce3
Kernel: Process now frees up its pages on destruction
2023-04-22 16:54:46 +03:00
Bananymous
7530482cc2
Kernel: Cleanup process creation for userspace
2023-04-22 16:51:50 +03:00
Bananymous
33d8c518e9
Kernel: Fix some deadlocks in the Process
2023-04-22 16:19:57 +03:00
Bananymous
fadce063a7
Kernel: Usespace programs are now ran through ELF files
...
only 64 bit elf files are supported for now.
2023-04-22 15:35:32 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
fd81e31050
Kernel: Fix Process::exit() and where it is called from
...
cksum doesn't seem to work anymore on big files. I have to look
into this. It locks up after couple of seconds...
2023-04-19 12:52:21 +03:00