720bc418a6
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
d77f455065
Kernel: Add basic ZeroDevice to /dev/zero
2023-09-10 00:31:42 +03:00
7e08f0fb66
Kernel: Start work on making inodes more thread safe
...
All inode operations are now locked and thread blocked
2023-09-10 00:31:42 +03:00
9e4a87021c
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
c1fd341698
Kernel: TTY now reads input byte by byte
...
This allows correct behaviour for character streams / keyboard
handling. Serial input can now send working ^C :D
2023-09-07 15:06:27 +03:00
ddd36af0f1
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
35fd30ee29
Kernel: Implement basic RamSymlinkInode
2023-09-05 01:07:52 +03:00
4a0652684c
Kernel: You can now read serial output from the /dev/ttyS*
2023-09-05 01:07:52 +03:00
33c81f00b7
Kernel: Receive interrupts for COM1 and COM2 input
...
The input has to still be attached to terminal
2023-09-04 22:07:40 +03:00
55714b90cd
Kernel: Rework whole Terminal structure
...
Serial monitors can now be used as a output. This requires editing
init code for the stdio opening. Serial input is not supported, so qemu
still needs graphical window for ps/2 keyboard.
2023-09-04 19:34:18 +03:00
9b47603a1d
Kernel: Make serial devices to their own class
2023-09-04 14:57:05 +03:00
42b85dc33b
Kernel: Add ANSI support for hiding/showing cursor to TTY
2023-09-04 14:30:09 +03:00
044378cfa3
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00
f1d4d5f995
Kernel: Add basic support for O_NONBLOCK (only for tty)
2023-09-04 12:57:52 +03:00
19d0fb6fcd
Kernel: add basic fcntl() with couple of commands and no validation
2023-09-04 12:57:09 +03:00
7933265095
Kernel: Split ext2 implementation to multiple files
2023-09-01 15:10:23 +03:00
d810644018
Kernel: Start work on writable ext2 filesystem
2023-08-31 23:40:31 +03:00
a7bfc1c2ec
Kernel: Add missing ififo() to Inode::Mode
2023-08-31 21:38:31 +03:00
f1ba5c7e0f
Kernel: Process keeps track if forked process has called exec*()
2023-08-22 14:53:46 +03:00
97ea4986af
Kernel/LibC: implement proper getpgid and setpgid
2023-08-22 14:53:12 +03:00
25c021c15b
Kernel: Add function to enumerate processes in session
2023-08-22 14:52:28 +03:00
42b90ae76c
Kernel/LibC: Add {get,set}pgrp()
2023-08-22 11:36:33 +03:00
ccc61cb10c
Kernel: Barebones implementation sessions and process groups
2023-08-22 11:35:40 +03:00
8e4216215e
Kernel/LibC: add dup() syscall and function
2023-08-17 12:03:29 +03:00
38c0bc7bae
Kernel: Remove unused syscall
2023-08-11 11:43:48 +03:00
a7f37236bf
Kernel: Zero initialize threads sse_storage
2023-08-11 00:26:43 +03:00
03d4b47f63
Kernel: HPET is now used in legacy mode when PIC is forced
2023-08-10 22:01:30 +03:00
e74fdbc55b
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
008c777a9f
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
d8a9d4a24e
Kerne: SystemTimer can now output the current real time
2023-08-04 16:06:47 +03:00
bc0e1fa898
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
17f1737c9a
Kernel: Add function to retrieve boot time as timespec
2023-08-04 16:06:47 +03:00
fdae253695
Kernel: Add basic HPET support to replace PIT if exists
...
This works same way as the PIT implementation; calls Scheduler every
milli second.
2023-08-04 15:22:51 +03:00
d4adcff958
Kernel: Move sleep() implementation to TimerHandler
2023-08-04 15:15:00 +03:00
2c59c9a3cc
Kernel: Add more structures to ACPI
2023-08-04 15:13:47 +03:00
3a59a64355
Kernel: Implement basic MMIO functions
...
This is equivalent to IO.h except for memory mapped io instead of
IO ports
2023-08-04 15:12:29 +03:00
9363c1cdaf
Kernel: Move RTC to Timer directory
...
PIT ms counter seems to be off by multiple seconds/minute. I will
be probably changing to HPET for system time
2023-08-04 11:12:16 +03:00
198e6d7cf6
Kernel: Start work on abstracting Timers
2023-08-04 10:29:42 +03:00
07ee898f4f
Kernel: Remove unnecessary timer check from Scheduler
2023-08-04 10:29:42 +03:00
91f04ce250
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
926df2b276
Kernel: PageTable now supports reserved pages
...
You can now map pages as reserved, so that they will not be given
from get_free_page() or get_free_contiguous_pages().
2023-08-01 16:35:54 +03:00
217dbca7b7
Kernel: Cleanup returns from any kind on interrupts
2023-08-01 14:23:50 +03:00
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
e86e755c51
Kernel: Generally improve signals
2023-07-31 22:28:18 +03:00
6f7d97cf94
Kernel: Remove is_in_syscall from Thread
2023-07-30 14:49:51 +03:00
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
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
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
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
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