Bananymous
d77f455065
Kernel: Add basic ZeroDevice to /dev/zero
2023-09-10 00:31:42 +03:00
Bananymous
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
Bananymous
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
Bananymous
5887f6bcaa
Kernel: Ext2 directories can allocate new blocks if needed
2023-09-08 10:29:26 +03:00
Bananymous
5d67559e33
Kernel: Fix bug in disk writing
...
I have used two weeks in locating a bug in my ext2 implementation
while the bug was actually in disk write. If you called write_sectors
on disk it would write the first sector_size bytes repeatedly to all
asked sectors and this corrupted the disk...
2023-09-08 02:43:08 +03:00
Bananymous
e631eb7a7a
Kernel: Fix possible out-of-bounds disk access in ext2
2023-09-08 02:42:53 +03:00
Bananymous
64ff4c232a
BuildSystem: Cleanup disk image creation
2023-09-08 02:41:39 +03:00
Bananymous
0ec4f970f7
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
Bananymous
afe95be42f
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
Bananymous
14ac1c9904
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
Bananymous
7c11ea3694
Kernel: Cleanup TTY::read()
2023-09-07 15:27:21 +03:00
Bananymous
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
Bananymous
0deab1be51
Kernel: Remove bitmap debug printing from ext2 inode allocation
2023-09-06 01:25:09 +03:00
Bananymous
5a623adaa6
Kernel: Correct inode links count
2023-09-05 14:46:56 +03:00
Bananymous
4363118d9d
Snake render grid lines without extra space after last '#'
2023-09-05 14:35:53 +03:00
Bananymous
d613da4b6c
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
Bananymous
f46f5b2050
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
Bananymous
d9c4114b5f
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
Bananymous
ddd36af0f1
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
Bananymous
35fd30ee29
Kernel: Implement basic RamSymlinkInode
2023-09-05 01:07:52 +03:00
Bananymous
4a0652684c
Kernel: You can now read serial output from the /dev/ttyS*
2023-09-05 01:07:52 +03:00
Bananymous
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
Bananymous
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
Bananymous
9b47603a1d
Kernel: Make serial devices to their own class
2023-09-04 14:57:05 +03:00
Bananymous
2e2a913412
Userspace: Implement basic snake game :)
2023-09-04 14:30:45 +03:00
Bananymous
42b85dc33b
Kernel: Add ANSI support for hiding/showing cursor to TTY
2023-09-04 14:30:09 +03:00
Bananymous
a15ffcb071
LibC: add time() implementation
2023-09-04 13:52:58 +03:00
Bananymous
692b77fb8e
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
Bananymous
044378cfa3
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00
Bananymous
f1d4d5f995
Kernel: Add basic support for O_NONBLOCK (only for tty)
2023-09-04 12:57:52 +03:00
Bananymous
19d0fb6fcd
Kernel: add basic fcntl() with couple of commands and no validation
2023-09-04 12:57:09 +03:00
Bananymous
7933265095
Kernel: Split ext2 implementation to multiple files
2023-09-01 15:10:23 +03:00
Bananymous
d810644018
Kernel: Start work on writable ext2 filesystem
2023-08-31 23:40:31 +03:00
Bananymous
a7bfc1c2ec
Kernel: Add missing ififo() to Inode::Mode
2023-08-31 21:38:31 +03:00
Bananymous
104b2740bc
BuildSystem: Add cmake target to validate main partition
2023-08-31 21:37:30 +03:00
Bananymous
65501837b7
Kernel: Stack trace dumping validates pointers before using them
2023-08-31 21:36:23 +03:00
Bananymous
3ed0a54847
Update README.md
2023-08-31 17:54:12 +03:00
Bananymous
cbd2519b9a
Kernel: better handle kernel errors
2023-08-29 00:13:21 +03:00
Bananymous
e8a73f9696
BuildSystem: use -a with rsync
...
This allows cmake to not rebuild whole project every time
2023-08-28 11:38:17 +03:00
Bananymous
1a0d114861
LibC: Don't undef needed values in inttypes.h
2023-08-24 15:48:14 +03:00
Bananymous
5c3497681e
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
Bananymous
b05cf9ef09
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
Bananymous
a74eb357a1
Shell: hostname is not parsed from /etc/hostname
2023-08-23 10:38:21 +03:00
Bananymous
8eb71084f0
Shell: use process groups more properly
2023-08-22 14:54:50 +03:00
Bananymous
ef1077fd7b
Kernel: kill() with negative pid actually matches pgid
2023-08-22 14:54:15 +03:00
Bananymous
f1ba5c7e0f
Kernel: Process keeps track if forked process has called exec*()
2023-08-22 14:53:46 +03:00
Bananymous
97ea4986af
Kernel/LibC: implement proper getpgid and setpgid
2023-08-22 14:53:12 +03:00
Bananymous
25c021c15b
Kernel: Add function to enumerate processes in session
2023-08-22 14:52:28 +03:00
Bananymous
2bf12a52d1
BAN: increase function size to 5 * sizeof(void*)
2023-08-22 14:52:03 +03:00
Bananymous
6ada36d3cb
Shell/init: We now use pgrp instead of pid and init open terminal
2023-08-22 11:37:04 +03:00