Commit Graph

440 Commits

Author SHA1 Message Date
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
c732297623 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
ca5a097ef5 Kernel: Add function to retrieve boot time as timespec 2023-08-04 16:06:47 +03:00
1fa7a1cac4 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
ea4a70c3b3 Kernel: Move sleep() implementation to TimerHandler 2023-08-04 15:15:00 +03:00
aa0929614a Kernel: Add more structures to ACPI 2023-08-04 15:13:47 +03:00
3c31fc9c4b 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