1d7795e22c
Kernel: Hardware exceptions now sends signals to userspace
2023-07-30 14:34:15 +03:00
abe8810d47
Kernel: raise() now force sends signal
2023-07-30 14:17:07 +03:00
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
9279bbbd19
Kernel: TTY now sends SIGINT on ^C to foreground process
2023-07-28 18:10:09 +03:00
9fd9a8b5b1
Kernel: Mark reading section from StorageDevice as terminate critical
2023-07-28 18:09:35 +03:00
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
104894c0c7
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
2f52001c6d
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
f609170a6a
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
9f75b04714
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
7b4a2fe3d1
Kernel: Process::exit() unblocks the whole lock before blocking
2023-07-24 22:29:59 +03:00
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
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
b9dd1895bb
Kernel: add Thread::queue_signal()
2023-07-24 22:26:10 +03:00
be47743dfa
Kernel: Scheduler can now block threads based on tid
2023-07-24 22:24:21 +03:00
57798e5d76
Kernel: remove Semaphore::is_blocked
...
this will not mean anything after semaphores can spuriously wake up
2023-07-24 22:23:13 +03:00
cd64c1cfec
Kernel: add is_tty() to inode
2023-07-24 22:19:59 +03:00
f76d921e25
Kernel: you can now ask process if it is userspace process
2023-07-23 18:54:10 +03:00
a2bf474013
Kernel: OpenFileDesctiptor can now return inode of fd
2023-07-23 18:52:33 +03:00
9729e5a05b
Kernel: Change signal kernel API
...
return rsp and rip are now stored per thread
2023-07-23 18:33:10 +03:00
2dce0a0415
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
d560137ae6
Kernel/LibC: add SYS_SIGNAL/signal()
2023-07-21 20:08:13 +03:00
c12f4fb40f
Kernel: Make signals more POSIX
2023-07-21 20:01:12 +03:00
10169d773d
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00
b78596dcf4
Kernel: Scheduler now sends queued signals
2023-07-21 19:27:10 +03:00
40f7c6b8fa
Kernel: Make signals thread specific
2023-07-21 19:00:59 +03:00
8063700d7b
Kernel: add default signal actions
2023-07-21 18:02:35 +03:00
70f89ed1fc
BuildSystem: Strip kernel. We will add the map once we use it
2023-07-21 15:47:31 +03:00
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
a1db032ba9
Kernel: kernel memory takes now full pml4e
...
This allows flags to work properly
2023-07-21 13:47:05 +03:00
5babd7b4f2
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
c0029a2fa2
Kernel: Don't map kernel executable memory as writable
2023-07-21 11:17:39 +03:00
4e35b8b49d
Kernel: Syscalls now get the interrupt stack
2023-07-21 11:04:16 +03:00
b02c486ad0
Kernel: add NullDevice to /dev/null
2023-07-20 00:06:22 +03:00
08cd285ca6
Kernel: move Device.h to its own directory
2023-07-19 23:55:38 +03:00
94af856db0
Kernel: cleanup sys_exec()
...
We now scope everyting so desctructors get called
2023-07-19 23:20:39 +03:00
bf5d74b8bc
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
fd9210ba9e
Kernel: FixedWidthAllocator creation can now fail
2023-07-19 18:07:24 +03:00
66d9260257
Kernel: VirtualRange creation can fail
2023-07-19 17:56:26 +03:00
5d2bfc858e
Kernel: SYS_FORK can now fail instead of panicing on error
2023-07-19 17:47:12 +03:00
8b34880064
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
98c698d9ec
Kernel: Enable global bit on kernel pages
2023-07-13 15:23:25 +03:00
9ea2c1d932
Kernel: Support execute disable bit
...
We will now map executable memory explicitly as executable.
2023-07-13 14:28:53 +03:00
297e65f19a
Kernel: CPUID can detect wether cpu supports nxe bit
2023-07-13 14:24:58 +03:00
65559a3e44
Kernel: Fix multiple bugs with terminal
2023-07-13 13:09:52 +03:00
c3a71e94a9
Kernel: Fix ATA disk and partition numbering
2023-07-13 12:12:47 +03:00
00409ffa60
Kernel: Ext2Inode::create_file actually sets the inode data
...
We used to just create inode without touching its memory.
2023-07-13 10:20:56 +03:00
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
ee4ef6638c
Kenrel: RamInode now implements truncate()
2023-07-10 16:07:09 +03:00
0910958c04
Kernel: OpenFileDescriptors can now store more than 8 bits of flags
2023-07-10 16:06:36 +03:00