b920ffee42
kernel: Don't use an active directory for the idle thread
...
Just take the currently used directory.
2023-07-10 13:04:18 +02:00
503dc72686
kernel: Set kernel threads' initial active directories to avoid taking the first directory they use
...
This ends up being init's directory, which is fine when init's directory doesn't change...
but a little less fine when the init process calls exec()...
which is what it does in the new configuration I'm testing...
2023-07-10 13:04:00 +02:00
5e564e9ae3
kernel: Move Thread::self_directory to UserVM
...
Since this is only used by user threads, UserVM is a convenient/related place to store the PageDirectory in a RAII manner.
2023-07-09 20:32:42 +02:00
e9e7b22323
kernel: Separate a thread's page directory into two
...
continuous-integration/drone/pr Build is passing
The self directory, and the active directory. The active directory is the one the thread is currently using,
and the self directory is the one the thread owns.
This lets us keep track of both, which fixes ext2 executables crashing the system.
2023-06-25 20:35:40 +02:00
5f4103251a
kernel: Preserve the new page directory while exec() is running
2023-06-25 20:35:40 +02:00
b7bdec9ece
kernel: Add a bunch more config definitions and hide debug messages behind them
2023-06-18 20:18:00 +02:00
7cace9a0d7
kernel: Provide more meaningful panic messages for critical failures
2023-06-17 19:43:25 +02:00
7a78609a85
kernel: Preserve kernel threads' page directories when they differ from the regular kernel page directory
continuous-integration/drone/push Build is passing
2023-06-17 00:49:31 +02:00
d0b65674e6
kernel: Fix 0-delay sleeps blocking the thread forever
2023-06-08 19:57:38 +02:00
01111442d3
kernel: Add the getrusage() system call
2023-05-20 12:48:07 +02:00
8f6bd29da3
kernel: Make file system reference counting work for current directories
...
continuous-integration/drone/push Build is passing
Also, make pipes usable again.
2023-05-17 20:37:01 +02:00
1f4c4928cc
kernel+libc+apps: Add mount and umount syscalls, libc wrappers, and utilities
continuous-integration/drone/push Build is passing
2023-05-17 20:30:15 +02:00
293a992133
kernel: Add a kernel_wait_for_event() function to avoid weird calls to kernel_wait in kthreads
continuous-integration/drone/push Build is passing
2023-05-04 23:43:00 +02:00
4a7f68b989
kernel: Add a convenience wake_up() function
2023-05-04 23:35:54 +02:00
3a1c22bb93
kernel: Add keyboard combinations for debug information dumps
...
Ctrl+Alt+E: Dump threads
Ctrl+Alt+M: Dump memory usage
Ctrl+Alt+H: Dump heap state
2023-05-04 23:32:48 +02:00
96f3d29d37
kernel: Tell the reap thread to run when it's needed, instead of checking every 200 ms
2023-05-04 23:06:00 +02:00
42eb0a1d74
kernel: Freeze waitpid()'s calling thread until a child tells us it's done, instead of polling it every 10 ms
2023-05-04 23:03:31 +02:00
4616997f5b
kernel: Store a thread's parent directly instead of its parent's PID
2023-05-04 22:58:04 +02:00
7b4cfd52cd
Scheduler: Don't search threads spawned before the current thread to find children
...
continuous-integration/drone/push Build is passing
Children will always be spawned later (and thus have a higher PID) than their parent.
2023-04-28 15:19:01 +02:00
bcdec62f51
kernel: Allow returning early from Scheduler::for_each_child
2023-04-28 15:13:53 +02:00
77dcfab5ef
kernel: Run the initialization process in a thread
...
continuous-integration/drone/push Build is passing
This way we can give it more stack and also reclaim it later!
2023-04-28 13:23:07 +02:00
df95126ccd
kernel: Remove unneeded debug logs & random cleanups
continuous-integration/drone/push Build is passing
2023-04-14 21:10:38 +02:00
f6f9254eb4
kernel: Add process and filesystem UIDs and GIDs
2023-04-08 13:12:49 +02:00
3a28771520
kernel+libc+apps: Add support for environment variables
2023-04-07 15:03:38 +02:00
d48d0efb07
kernel: Add names to threads
continuous-integration/drone/push Build is passing
2023-03-24 21:05:38 +01:00
7efcc06090
kernel+init+sh: Implement parent processes and waitpid(-1, ...)
continuous-integration/drone/push Build is passing
2023-03-24 17:37:04 +01:00
b6fb5f3dfe
kernel+libc: Implement waitpid()
continuous-integration/drone/push Build is passing
2023-03-23 22:42:24 +01:00
54f2d35416
kernel: Add the fork() system call
2023-03-18 23:45:48 +01:00
8c72e9a49a
kernel: Add an exec() system call
...
continuous-integration/drone/push Build is passing
Doesn't support arguments or environment for now.
2023-03-16 22:44:58 +01:00
bd572473ad
kernel: Remove FileDescriptorTable and add a helper to resolve fds to FileDescriptors
2023-03-12 13:57:38 +01:00
810c4bc257
kernel+libc: Start interfacing with the VFS from userspace (open & close)
...
This commit adds open and close syscalls to the kernel, and adds matching wrappers to libc.
No read/write support, so file descriptors are kind of useless for now.
2023-03-11 17:45:20 +01:00
ff468db675
kernel/ELF+Scheduler: Use VFS instead of TarStream
continuous-integration/drone/push Build is passing
2023-03-11 10:34:08 +01:00
ca85a69442
kernel: Save floating-point environment when switching in and out of userspace threads
2023-03-07 20:59:11 +01:00
35501407c1
kernel: Stop shouting when creating threads
continuous-integration/drone/push Build is passing
2023-01-25 21:25:34 +01:00
139c0b5eb1
Kernel: Make a UserVM wrapper around Bitmap and use that to allocate user VM
...
This lets us allocate more than one page of memory from the user side.
2023-01-13 19:05:20 +01:00
586ca19b62
Add a VERY BASIC and hacky way of allocating memory from userspace
...
continuous-integration/drone/push Build is passing
Only supports one-page allocations and doesn't have libc wrappers, which means it has to be invoked using syscall().
2023-01-11 23:02:42 +01:00
84c82a4e75
luna, kernel: More constness
continuous-integration/drone/push Build is passing
2023-01-10 19:31:41 +01:00
8ee634d19b
Kernel/Scheduler: Display addresses starting with 0x when creating threads
continuous-integration/drone/push Build is passing
2023-01-07 12:02:14 +01:00
a33a72915e
Scheduler: Creation, destruction and switching of userspace tasks :))
...
From a TarStream. Not optimal, but OK for the moment.
2023-01-05 21:52:26 +01:00
5854e5e530
Add newlines at end-of-file
2023-01-02 13:07:29 +01:00
a3595e71a9
Update .clang-format
continuous-integration/drone/push Build is passing
2022-12-21 20:22:44 +01:00
a11a5dec1f
DoublyLinkedList -> LinkedList
continuous-integration/drone/push Build is passing
2022-12-19 12:43:23 +01:00
1269a045bd
LinkedList: Add a convenience delayed_for_each() method.
...
This is a special way of iterating over the list which permits removing items while iterating.
2022-12-19 12:41:25 +01:00
92a7004c2f
Move the reaping logic to Scheduler
2022-12-19 12:24:15 +01:00
751377de0a
Scheduler: Make it possible for a thread to stop existing
continuous-integration/drone/push Build is passing
2022-12-18 18:43:34 +01:00
1b92fe36b4
Store the stack inside a thread
2022-12-18 18:43:17 +01:00
a89ae9bed7
Run include-what-you-use
continuous-integration/drone/push Build is passing
2022-12-17 15:51:19 +01:00
a32590ff8a
Call expect_value more
2022-12-16 19:44:33 +01:00
cedcfa9c63
Improve cleanup on MemoryManager failure + add methods that use KernelVM
continuous-integration/drone/push Build is passing
2022-12-16 19:36:38 +01:00
b6173e2b67
LinkedList: Return Option instead of ENONE if no value
2022-12-08 16:09:04 +01:00