d8e4489079
kernel: Make Thread::ip() and sp() const-friendly
2024-12-11 19:17:04 +01:00
d05d6fad0b
kernel: Interrupt waitpid (even when SIGCHLD is pending) when other signals are also pending
...
Build and test / build (push) Successful in 1m36s
This fixes init not receiving the kill signal when running tests.
2024-12-07 13:15:58 +01:00
42afef5ccb
kernel: Leave reaping to the reap thread
...
Build and test / build (push) Has been cancelled
This seems to fix previous problems. Apparently reaping a thread somewhat corrupts/replaces the calling thread's address space.
I should've known there's a reason we do it in a separate kernel thread...
2024-12-07 13:05:38 +01:00
dc766e1da7
kernel: Rework VFS access checking + add processes
...
Build and test / build (push) Has been cancelled
VFS functions now accept a single Process* pointer instead of credentials and groups.
There is now a distinction between processes and threads
Now to fix all the bugs... waitpid crashes the process with an NX error...
2024-12-06 21:35:59 +01:00
7b2977a036
kernel: Use a mutex to allocate new posix timers for a thread
2024-11-23 20:02:34 +01:00
ab70a72434
kernel: Fix extra qualification in Thread.h
...
Build and test / build (push) Failing after 12m15s
Forgot to build after writing the previous commit, but CI caught it anyway.
2024-05-01 10:54:59 +02:00
1d0f18cab9
kernel: Move stack checking and expansion into an architecture-independent file
Build and test / build (push) Failing after 1m45s
2024-05-01 10:52:08 +02:00
41c90aa436
kernel: Add POSIX timer support
2024-01-05 22:12:58 +01:00
3ad23eab21
kernel: Add support for supplementary groups (1/2)
...
Adds support for supplementary groups internally in the kernel.
No userspace support.
2023-11-22 18:49:40 +01:00
678121c3ed
kernel+libc: Add setitimer()
continuous-integration/drone/push Build is passing
2023-11-16 21:48:18 +01:00
c4d2847da1
kernel: Rework the entire time system to use modular clocks
continuous-integration/drone/push Build is passing
2023-11-15 23:50:04 +01:00
dfebdce689
kernel: Add a timer queue with more versatility than simple alarm()
continuous-integration/drone/push Build is passing
2023-11-03 19:53:34 +01:00
e1d5b7e7b4
kernel: Implement thread stopping and continuing
continuous-integration/drone/push Build is failing
2023-10-28 15:15:32 +02:00
b3cbbea9d6
kernel: Move file descriptors into their own separate file
2023-10-23 20:13:11 +02:00
c323a812a5
kernel+libc+terminal+wind: Add support for POSIX sessions
...
continuous-integration/drone/push Build is passing
Fixes #42 .
2023-10-14 20:41:34 +02:00
5f0830cd41
kernel: Add /dev/tty
continuous-integration/drone/push Build is passing
2023-10-14 19:00:10 +02:00
1528c772fd
kernel: Store the full command line of a process
2023-09-04 11:43:11 +02:00
a35ca0b367
libluna+kernel: Add Bitset and use it for signals
continuous-integration/drone/push Build is passing
2023-08-23 10:51:02 +02:00
4a654bf093
kernel: Handle OOMs better and without deadlocking
...
Use a separate task to do it.
Also fix a bug where the init thread would get no kernel stack ever since 5f698b477.
2023-08-17 20:14:33 +02:00
e2a77bb3da
kernel+libc: Add pledge support
continuous-integration/drone/push Build is failing
2023-08-12 21:38:25 +02:00
52064e0317
libc+kernel: Add alarm() and getpagesize()
2023-08-11 18:09:12 +02:00
826be882a9
kernel: Interrupt syscalls before exiting because of a signal
...
Closes #40 .
2023-08-08 10:41:46 +02:00
bc20e1a31b
kernel: Store FD_CLOEXEC in the file descriptor itself
...
continuous-integration/drone/push Build is passing
Closes #39 .
2023-08-03 17:47:18 +02:00
0c873923e8
kernel: Make OpenFileDescription shareable
continuous-integration/drone/pr Build is passing
2023-07-30 11:33:46 +02:00
fb08594a18
kernel: Separate FileDescriptors and OpenFileDescription
...
Also, add a did_close() callback for OpenFileDescriptions losing all their references.
2023-07-30 11:33:06 +02:00
11df5a2ec3
kernel: Use pid_t internally for process IDs
...
continuous-integration/drone/push Build is passing
This removes a bunch of casts between pid_t and u64, and makes more sense since pid_t is literally the data type for process IDs.
2023-07-26 21:32:00 +02:00
546d900454
libc+apps: Start implementing POSIX-compliant termios.h wrappers around tty ioctls
continuous-integration/drone/push Build is passing
2023-07-12 19:23:06 +02:00
9f45026cc2
kernel+sh: Implement interruptible syscalls
2023-07-12 13:48:43 +02:00
7328cfe734
kernel: Add basic process groups
continuous-integration/drone/push Build is passing
2023-07-11 11:51:07 +02:00
cde467ee46
kernel: Support returning termination signals from waitpid
continuous-integration/drone/pr Build is passing
2023-07-10 20:16:06 +02:00
15d6aae701
kernel+libc: Implement basic signals
2023-07-10 19:46:57 +02:00
c599251d2a
kernel: Rename UserVM to AddressSpace
...
continuous-integration/drone/push Build is passing
This is a more appropriate name now that it does more stuff than allocate virtual memory.
To be fair, the name was a bit awkward anyway. Should have been UserVMAllocator I guess.
2023-07-09 20:38:04 +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
e60b2a3d2f
kernel: Move thread exit code into a separate common function
continuous-integration/drone/push Build is passing
2023-06-19 12:33:25 +02:00
b0506bf88f
kernel: Add umask
continuous-integration/drone/push Build is passing
2023-05-26 22:27:49 +02:00
67a9d130e2
kernel: Add initial support for symbolic links :D
2023-05-20 21:49:24 +02:00
01111442d3
kernel: Add the getrusage() system call
2023-05-20 12:48:07 +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
29174ca228
kernel/VFS: Add a way to unmount file systems
2023-05-17 19:52:26 +02:00
4a7f68b989
kernel: Add a convenience wake_up() function
2023-05-04 23:35:54 +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
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
82e7b0e860
kernel: Introduce *at() syscall framework, add openat() and fstatat()
continuous-integration/drone/push Build is passing
2023-04-15 20:26:15 +02:00
2d30935fdb
kernel: Give each thread a working directory
2023-04-11 22:14:57 +02:00
f6f9254eb4
kernel: Add process and filesystem UIDs and GIDs
2023-04-08 13:12:49 +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
41c7e3780d
kernel: Add support for exit codes and start preparing for waitpid()
2023-03-23 22:25:56 +01:00