Bananymous
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
Bananymous
6bb2c80bdd
Kernel/LibC: userspace malloc now uses mmap to get memory
...
We could remove syscalls to allocate more memory. This was not
something the kernel should have done.
2023-09-23 02:26:23 +03:00
Bananymous
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
Bananymous
b9c779ff7e
BuildSystem: Add cmake target for debugging qemu
2023-09-22 17:20:35 +03:00
Bananymous
2a469241b2
BAN: Fix LinkedList::pop_back()
2023-09-22 17:20:35 +03:00
Bananymous
83b165ebb0
Kernel: Add constexpr conditional debug prints
2023-09-22 17:20:35 +03:00
Bananymous
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
Bananymous
9d827037ca
Kernel: Fix timer includes
2023-09-22 17:20:35 +03:00
Bananymous
58506c5bd1
Kernel: Add config read/write api to PCI
2023-09-22 17:20:35 +03:00
Bananymous
dd0b8c4140
Kernel: Add pointer validation API to page table
2023-09-22 17:20:35 +03:00
Bananymous
d1183f0bf6
General: remove linecount.sh
2023-09-22 17:20:35 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
eee0537053
Kernel: Writes to disk are not synchronous anymore
...
Implement "proper" DiskCache syncing
2023-09-11 01:25:16 +03:00
Bananymous
7ec860a3d4
Kernel: Print stack trace on isr
2023-09-11 01:20:55 +03:00
Bananymous
9b9a6b2cfc
Kernel: Fix ext2 file write
2023-09-11 01:20:39 +03:00
Bananymous
f178fa6d5b
BuildSystem: remove install-usb.sh since it is not used
...
This was dangerous script since it rewrote /dev/sda
2023-09-10 01:20:44 +03:00
Bananymous
9ebf29991d
Kernel: Add basic dd command
...
This only supports if, of, bs, count and status=progress
2023-09-10 01:19:47 +03:00
Bananymous
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
Bananymous
921d95d18f
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
Bananymous
1fcf122c50
Kernel: Add basic ZeroDevice to /dev/zero
2023-09-10 00:31:42 +03:00
Bananymous
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
Bananymous
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
Bananymous
660f7cbfeb
Kernel: Ext2 directories can allocate new blocks if needed
2023-09-08 10:29:26 +03:00
Bananymous
1abf54d652
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
3750d29b2b
Kernel: Fix possible out-of-bounds disk access in ext2
2023-09-08 02:42:53 +03:00
Bananymous
e75522a005
BuildSystem: Cleanup disk image creation
2023-09-08 02:41:39 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
4648f6718e
Kernel: Cleanup TTY::read()
2023-09-07 15:27:21 +03:00
Bananymous
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
Bananymous
5e1725abb2
Kernel: Remove bitmap debug printing from ext2 inode allocation
2023-09-06 01:25:09 +03:00
Bananymous
6ad2f23259
Kernel: Correct inode links count
2023-09-05 14:46:56 +03:00
Bananymous
0d725f68e3
Snake render grid lines without extra space after last '#'
2023-09-05 14:35:53 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
ba7e1b9ca5
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
Bananymous
f0772e385c
Kernel: Implement basic RamSymlinkInode
2023-09-05 01:07:52 +03:00
Bananymous
3fd94b1acb
Kernel: You can now read serial output from the /dev/ttyS*
2023-09-05 01:07:52 +03:00
Bananymous
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
Bananymous
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
Bananymous
52b9fddfd7
Kernel: Make serial devices to their own class
2023-09-04 14:57:05 +03:00
Bananymous
e4041ce5ec
Userspace: Implement basic snake game :)
2023-09-04 14:30:45 +03:00
Bananymous
04cfbca336
Kernel: Add ANSI support for hiding/showing cursor to TTY
2023-09-04 14:30:09 +03:00
Bananymous
7184514b5d
LibC: add time() implementation
2023-09-04 13:52:58 +03:00
Bananymous
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
Bananymous
9901f95d78
Kernel: Add basic nanosleep, only millisecond percision
2023-09-04 12:59:50 +03:00