Commit Graph

3586 Commits

Author SHA1 Message Date
3750d29b2b Kernel: Fix possible out-of-bounds disk access in ext2 2023-09-08 02:42:53 +03:00
e75522a005 BuildSystem: Cleanup disk image creation 2023-09-08 02:41:39 +03:00
5972c73950 LibC: fix fread implementation
fread() should read until either size*nitems bytes are read or eof
is reached.
2023-09-07 16:00:47 +03:00
41757b5f6c Shell: Clean exit on ^D and use getchar()
Use getchar() instead of fread(&ch, 1, sizeof(char), stdin). This
is much cleaner.
2023-09-07 15:51:05 +03:00
c33c7f8b3b Init: use read instead of fread()
This allows actually correct behaviour. My fread implementation is
flawed. It should not return on '\n'
2023-09-07 15:47:59 +03:00
4648f6718e Kernel: Cleanup TTY::read() 2023-09-07 15:27:21 +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
5e1725abb2 Kernel: Remove bitmap debug printing from ext2 inode allocation 2023-09-06 01:25:09 +03:00
6ad2f23259 Kernel: Correct inode links count 2023-09-05 14:46:56 +03:00
0d725f68e3 Snake render grid lines without extra space after last '#' 2023-09-05 14:35:53 +03:00
0770ba0936 BuildSystem: Don't set permissions on image creation
This is already handled by *new* tar ball sysroot
2023-09-05 14:35:53 +03:00
c13b5aecfe Snake: Reorder apple generation/snake body update
If new apple was generated to heads previous position after update,
it would not render.
2023-09-05 14:30:30 +03:00
3892579049 Base: Add grub entries for serial-only boot
We can now fully boot with serial input and output :)
Qemu can be run with -nographic flag
2023-09-05 01:07:52 +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
e4041ce5ec Userspace: Implement basic snake game :) 2023-09-04 14:30:45 +03:00
04cfbca336 Kernel: Add ANSI support for hiding/showing cursor to TTY 2023-09-04 14:30:09 +03:00
7184514b5d LibC: add time() implementation 2023-09-04 13:52:58 +03:00
dfb18d38f7 LibC: Add rand() and srand() implementation
This code is from the wikipedia page for Permuted congruential generator
2023-09-04 13:52:13 +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
5786ffe7d2 BuildSystem: Add cmake target to validate main partition 2023-08-31 21:37:30 +03:00
073edd0b8e Kernel: Stack trace dumping validates pointers before using them 2023-08-31 21:36:23 +03:00
2c136dae2d Update README.md 2023-08-31 17:54:12 +03:00
250789aa20 Kernel: better handle kernel errors 2023-08-29 00:13:21 +03:00
8032824054 BuildSystem: use -a with rsync
This allows cmake to not rebuild whole project every time
2023-08-28 11:38:17 +03:00
7aaea786c2 LibC: Don't undef needed values in inttypes.h 2023-08-24 15:48:14 +03:00
ce8e8e68f4 BuildSystem: Add USES_TERMINAL when preparing sysroot
You were not able to enter sudo password on sysroot unpacking,
which caused ninja to hang
2023-08-23 20:48:40 +03:00
80e7a89f67 BuildSystem: Base sysroot is now distributed as a tar ball
This allows file and directory permissions work as intended.

cmake is now filled with 'sudo' but with sudo timeout this should be
fine.
2023-08-23 10:38:21 +03:00
b780df8be0 Shell: hostname is not parsed from /etc/hostname 2023-08-23 10:38:21 +03:00
c4210b5810 Shell: use process groups more properly 2023-08-22 14:54:50 +03:00
38e72019c7 Kernel: kill() with negative pid actually matches pgid 2023-08-22 14:54:15 +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
e33bf62bba BAN: increase function size to 5 * sizeof(void*) 2023-08-22 14:52:03 +03:00
2dcd4ed131 Shell/init: We now use pgrp instead of pid and init open terminal 2023-08-22 11:37:04 +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
642929f071 BAN: Add enum class Iteration for for_each loops 2023-08-22 11:30:53 +03:00
2746419c8c BAN: Function call is now const 2023-08-22 11:30:40 +03:00
b5a7246ba7 LibC: make printf buffer only 128 bytes
Only reason for it to be big is if you want super large zero padding
for your number. This will eventually be handled without the buffer.
2023-08-18 16:49:27 +03:00