22252cfcf0
Kernel: All syscalls now validate users pointers
...
We now validate pointers passed by the user, to forbid arbitary
memory read/write. Now the user is only allowed to pass in pointers
in their own mapped memory space (or null).
2023-09-25 22:07:12 +03:00
9d55cf1d80
Kernel: Ext2 inodes are now stored in cache
...
This allows faster inode access and ensures working inodes when
opened in multiple places.
2023-09-25 20:31:40 +03:00
669b2ace4e
Kernel: Ext2 filesystem now holds 10 preallocated block buffers
...
Inodes can query blocks from this buffer. This allows allocation of
blocks to not fail during normal operations. Also less stress on
kmalloc.
2023-09-25 14:32:25 +03:00
0e67c6318b
Kernel: Fix ext2 block allocation
...
Redo ext2 block allocation. This is now much "cleaner" although
I'm not too fond of the macros.
2023-09-25 13:17:44 +03:00
e7ca83ecb2
Kernel: VirtualRange doesn't store physical addresses of pages
...
This was unnecessarry allocation, since the page table allready
contains virtual address -> physical address mappings.
2023-09-24 01:29:34 +03:00
f6261e5dc9
Kernel: all mapped ranges are now stored in one container
...
We just now have a flag if a mapping is unmappable
2023-09-23 23:45:26 +03:00
d1bbbf48f6
Kernel: Fully remove sys_alloc and sys_free
...
I could delete the whole FixedWidthAllocator as it was now obsolete.
GeneralAllocator is still used by kmalloc. Kmalloc cannot actually
use it since, GeneralAllocator depends on SpinLock and kmalloc runs
without interrupts.
2023-09-23 03:53:30 +03:00
3ba15b41a3
Kernel/LibC: remove PATH resoltion from kernel
...
I have no idea why I had made PATH environment variable parsing
to be part of the kernel. Now the shell does the parsing and
environment syscall is no longer needed.
2023-09-23 03:08:14 +03:00
7a7c5e433e
Kernel/LibC: add flag to enable/disable sse support
...
SSE support is very experimental and causes GP. I decided to make
SSE not default until I get to fixing it :)
2023-09-23 02:28:25 +03:00
af4af1cae9
Kernel/LibC: add mmap for private anonymous mappings
...
This will be used by the userspace to get more memory. Currently
kernel handles all allocations, which is not preferable.
2023-09-22 23:01:14 +03:00
83b165ebb0
Kernel: Add constexpr conditional debug prints
2023-09-22 17:20:35 +03:00
c5f9f0c307
Kernel: Add LAI as a dependency
...
I did not feel like implementing AML interpreter now, and wanted
everything AML has to offer. I will be writing my own AML interperter
at some point.
2023-09-22 17:20:35 +03:00
9d827037ca
Kernel: Fix timer includes
2023-09-22 17:20:35 +03:00
58506c5bd1
Kernel: Add config read/write api to PCI
2023-09-22 17:20:35 +03:00
dd0b8c4140
Kernel: Add pointer validation API to page table
2023-09-22 17:20:35 +03:00
11717f90c1
Kernel: PCI devices can now create region for BAR
...
This creates either MEM or IO region for read/write access to PCI
device.
2023-09-22 17:20:35 +03:00
a740bf8df4
1000th COMMIT: Kernel: Add basic E1000 driver
...
This driver is only capable to read mac address and enable and read
link status
2023-09-22 17:20:28 +03:00
63dc2b6aa6
Kernel: Implement SYS_SYNC and add sync executable to userspace
...
You can (and have to) manually sync disk after writes to it.
2023-09-11 01:26:27 +03:00
eee0537053
Kernel: Writes to disk are not synchronous anymore
...
Implement "proper" DiskCache syncing
2023-09-11 01:25:16 +03:00
8fb5f97a18
Kernel: Improve open() POSIX compatability
...
Also rename Process::sys_creat -> create_file since it is not
actually a syscall and only used by open as a healper.
2023-09-10 00:31:42 +03:00
921d95d18f
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
1fcf122c50
Kernel: Add basic ZeroDevice to /dev/zero
2023-09-10 00:31:42 +03:00
dd9af56e21
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
39a5c52088
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
b30af0edca
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
ba7e1b9ca5
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
f0772e385c
Kernel: Implement basic RamSymlinkInode
2023-09-05 01:07:52 +03:00
3fd94b1acb
Kernel: You can now read serial output from the /dev/ttyS*
2023-09-05 01:07:52 +03:00
93c5755012
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
323de3c866
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
52b9fddfd7
Kernel: Make serial devices to their own class
2023-09-04 14:57:05 +03:00
04cfbca336
Kernel: Add ANSI support for hiding/showing cursor to TTY
2023-09-04 14:30:09 +03:00
9901f95d78
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00
b2139c0b1e
Kernel: Add basic support for O_NONBLOCK (only for tty)
2023-09-04 12:57:52 +03:00
6f002c926a
Kernel: add basic fcntl() with couple of commands and no validation
2023-09-04 12:57:09 +03:00
a711462ef4
Kernel: Split ext2 implementation to multiple files
2023-09-01 15:10:23 +03:00
f31c6b847f
Kernel: Start work on writable ext2 filesystem
2023-08-31 23:40:31 +03:00
195ccf4f53
Kernel: Add missing ififo() to Inode::Mode
2023-08-31 21:38:31 +03:00
d745fca86a
Kernel: Process keeps track if forked process has called exec*()
2023-08-22 14:53:46 +03:00
60a2185ee6
Kernel/LibC: implement proper getpgid and setpgid
2023-08-22 14:53:12 +03:00
d634fec8dc
Kernel: Add function to enumerate processes in session
2023-08-22 14:52:28 +03:00
c9243f0d1e
Kernel/LibC: Add {get,set}pgrp()
2023-08-22 11:36:33 +03:00
0f6c19a1b7
Kernel: Barebones implementation sessions and process groups
2023-08-22 11:35:40 +03:00
79f3aa5419
Kernel/LibC: add dup() syscall and function
2023-08-17 12:03:29 +03:00
e1400f9680
Kernel: Remove unused syscall
2023-08-11 11:43:48 +03:00
6e5bce3c57
Kernel: Zero initialize threads sse_storage
2023-08-11 00:26:43 +03:00
5d0a6e7b08
Kernel: HPET is now used in legacy mode when PIC is forced
2023-08-10 22:01:30 +03:00
96c0ad0d3d
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
6fcb191ca0
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
3df97c36e6
Kerne: SystemTimer can now output the current real time
2023-08-04 16:06:47 +03:00