Bananymous
8b1bccb79b
Kernel: store/load sse/mmx/fpu state on isr/irq/syscall
...
I haven't tested this yet but should be fine. This will be optimized
to only save state from threads that are using it
2023-07-31 22:28:57 +03:00
Bananymous
e86e755c51
Kernel: Generally improve signals
2023-07-31 22:28:18 +03:00
Bananymous
8ec6d4c9fc
LibC: we don't parse syscall arguments in unistd
...
We just call Kernel::syscall() with 5 arguments from the variadic function.
This was a necessary addition since the syscall() function
used over 2 KiB of stack space.
2023-07-31 22:24:11 +03:00
Bananymous
08cdf88586
Kernel: Cleanup signal trampoline
2023-07-30 15:58:35 +03:00
Bananymous
6f7d97cf94
Kernel: Remove is_in_syscall from Thread
2023-07-30 14:49:51 +03:00
Bananymous
5e434f5131
Kernel: Hardware exceptions now sends signals to userspace
2023-07-30 14:34:15 +03:00
Bananymous
a152d0aac5
Kernel: raise() now force sends signal
2023-07-30 14:17:07 +03:00
Bananymous
879706e6e9
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
00f1f30a08
Kernel: Userspace sets the foreground process and Shell handles ^C
2023-07-28 18:10:36 +03:00
Bananymous
a5813f9ba5
Kernel: TTY now sends SIGINT on ^C to foreground process
2023-07-28 18:10:09 +03:00
Bananymous
5652af3384
Kernel: Mark reading section from StorageDevice as terminate critical
2023-07-28 18:09:35 +03:00
Bananymous
22cd9af8cc
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
a9cf9bceef
Kernel: Rewrite DiskCache
...
We now cache only clean pages since I don't want to think about
syncing the disk later.
2023-07-27 22:22:39 +03:00
Bananymous
6c0f864a6e
Kernel: Locks allow locking after locker is invalid
...
SpinLock and RecursiveSpinLock will now allow locking after the initial
locker is invalid. This allows us to kill threads even if they are holding
internal locks
2023-07-27 18:52:51 +03:00
Bananymous
e4509d9482
Kernel: DiskCache uses are now done without interrupts
...
This allows disk cache to not be invalid state after partial read/write
2023-07-27 18:52:51 +03:00
Bananymous
0f23e1f0f4
Kernel: Scheduler can now check if tid is valid
...
Tid can become invalid if the thread is already terminated
2023-07-27 18:34:06 +03:00
Bananymous
642a6aa4ad
Kernel: Process::exit() unblocks the whole lock before blocking
2023-07-24 22:29:59 +03:00
Bananymous
432c296b7b
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
b576d373c4
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
522aa8e762
Kernel: add Thread::queue_signal()
2023-07-24 22:26:10 +03:00
Bananymous
146802fa4c
Kernel: Scheduler can now block threads based on tid
2023-07-24 22:24:21 +03:00
Bananymous
cc8af25d73
Kernel: remove Semaphore::is_blocked
...
this will not mean anything after semaphores can spuriously wake up
2023-07-24 22:23:13 +03:00
Bananymous
f5f4bf58ad
Kernel: add is_tty() to inode
2023-07-24 22:19:59 +03:00
Bananymous
3784da0d18
Kernel: you can now ask process if it is userspace process
2023-07-23 18:54:10 +03:00
Bananymous
9eb72f4392
Kernel: OpenFileDesctiptor can now return inode of fd
2023-07-23 18:52:33 +03:00
Bananymous
f7bf6d5e62
Kernel: Change signal kernel API
...
return rsp and rip are now stored per thread
2023-07-23 18:33:10 +03:00
Bananymous
adb14ba373
Kernel: Userspace signal handlers are now called one at a time
...
I added a syscall for telling the kernel when signal execution has
finished. We should send a random hash or id to the signal trampoline
that we would include in the syscall, so validity of signal exit can
be confirmed.
2023-07-23 13:34:53 +03:00
Bananymous
7391d91317
Kernel/LibC: add SYS_SIGNAL/signal()
2023-07-21 20:08:13 +03:00
Bananymous
2149cec29f
Kernel: Make signals more POSIX
2023-07-21 20:01:12 +03:00
Bananymous
ad756c36fc
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00
Bananymous
b56316e9da
Kernel: Scheduler now sends queued signals
2023-07-21 19:27:10 +03:00
Bananymous
a989c44211
Kernel: Make signals thread specific
2023-07-21 19:00:59 +03:00
Bananymous
217e5f81cc
Kernel: add default signal actions
2023-07-21 18:02:35 +03:00
Bananymous
5f2549b198
BuildSystem: Strip kernel. We will add the map once we use it
2023-07-21 15:47:31 +03:00
Bananymous
dcd4d0daeb
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
faf4220b38
Kernel: kernel memory takes now full pml4e
...
This allows flags to work properly
2023-07-21 13:47:05 +03:00
Bananymous
193ddaa2f6
Kernel: remove PAGE_FLAGS_MASK as that was not correct anymore
...
After I added NXE bit, the flags mask is no longer valid
2023-07-21 12:01:50 +03:00
Bananymous
46eb27883a
Kernel: Don't map kernel executable memory as writable
2023-07-21 11:17:39 +03:00
Bananymous
2db7cdb71e
Kernel: Syscalls now get the interrupt stack
2023-07-21 11:04:16 +03:00
Bananymous
5411c5aa4a
BAN: Fix function call in Optional
2023-07-21 10:57:46 +03:00
Bananymous
f8a1a10897
Kernel: add NullDevice to /dev/null
2023-07-20 00:06:22 +03:00
Bananymous
adbe13938e
Kernel: move Device.h to its own directory
2023-07-19 23:55:38 +03:00
Bananymous
4d5b14753d
Kernel: cleanup sys_exec()
...
We now scope everyting so desctructors get called
2023-07-19 23:20:39 +03:00
Bananymous
ba9fa00947
Kernel: fix memory leak in PageTable
...
PageTable used to leak 2 pages on creation and other two on deletion
2023-07-19 23:17:39 +03:00
Bananymous
98cedf155c
Kernel: FixedWidthAllocator creation can now fail
2023-07-19 18:07:24 +03:00
Bananymous
88e3998664
Kernel: VirtualRange creation can fail
2023-07-19 17:56:26 +03:00
Bananymous
c0c0bbc1bf
Kernel: SYS_FORK can now fail instead of panicing on error
2023-07-19 17:47:12 +03:00
Bananymous
650e1b4fc5
Kernel: Fix bug which made bochs unbootable
...
We could not boot if ATABus did not have valid primary device.
2023-07-13 15:53:09 +03:00
Bananymous
6c1ada8d0a
Kernel: Enable global bit on kernel pages
2023-07-13 15:23:25 +03:00
Bananymous
7d00c2670f
Kernel: Support execute disable bit
...
We will now map executable memory explicitly as executable.
2023-07-13 14:28:53 +03:00