Bananymous
547eabb403
Kernel: Reboot will now always succeed
...
If acpi reset fails, we forcefully trigger a triple fault to restart
the system.
2023-09-28 13:53:03 +03:00
Bananymous
79851394b3
Kernel/LibC/Userspace: Add SYS_POWEROFF + cli tool
...
You can now shutdown/reboot banan-os with the poweroff cli tool.
Reboot doesn't seem to work on qemu.
2023-09-28 12:36:47 +03:00
Bananymous
fcdc922343
Kernel: Enter ACPI mode with lai
2023-09-28 12:30:27 +03:00
Bananymous
0b11d76576
LibC: Add errno for unknown error
2023-09-28 12:06:17 +03:00
Bananymous
f7097398ca
Kernel: Make tty overload correct has_data() function
...
This allows snake game to work again :)
2023-09-28 11:54:12 +03:00
Bananymous
85b1252b9e
Userspace: Use printf length modifiers when printing
2023-09-28 11:49:31 +03:00
Bananymous
1cd12b5f16
LibC: Implement length modifiers to printf
2023-09-28 11:42:57 +03:00
Bananymous
c84b66d078
Shell: String leading and trailing whitespace from commands
...
This fixes a bug of inserting empty argument if command had trailing
whitespace
2023-09-28 10:28:49 +03:00
Bananymous
27adb9486b
BAN: Update Endiannes API
...
Add functions to swap endiannes or convert host to big/little endian
This code should be very compiler friendly and should be optimized to
single bswap instruction on x86.
2023-09-28 01:22:14 +03:00
Bananymous
8d5369fafe
Kernel: Add some functionality to disable TTY input/output
...
Userspace programs can call tty_ctrl() to disable/enable tty from
handling input and displaying output.
This API is probably going to change in the future to ioctl calls
but I'm not sure how ioctl is used and what functionality should it
have. I decided to create whole new function and syscall for now.
Next I will expose framebuffer in /dev/fb0 and then I can start work
on graphical environment! :D
2023-09-27 15:44:05 +03:00
Bananymous
feafc57b63
Kernel: Disable DiskCache sync messages
2023-09-27 14:12:21 +03:00
Bananymous
f9b347f9d9
BuildSystem: Rework calling qemu
...
I change always manually the serial/graphical. When running cmake
you can define variable QEMU_ACCEL that will be used as accelerator.
Also ninja has the following targets for running qemu
1. qemu: Run graphical qemu environment
2. qemu-nographic: Run qemu without graphical screen. You should
select 'serial only' from grub menu.
3. qemu-debug: Run qemu without accelerator and interrupt
debugger.
2023-09-27 13:49:01 +03:00
Bananymous
6e1825d6b4
Kernel: Add missing TRY() to font loading
2023-09-27 00:49:53 +03:00
Bananymous
ec2baeb276
Sync: Add some argument parsing to sync(1)
...
You can specify --block to make the program wait until sync is
complete.
2023-09-27 00:37:23 +03:00
Bananymous
6cb8bda6e1
LibC: add syncsync() to unistd.h
...
This is my own WELL NAMED (:D) function that takes a paramemeter
to make the sync operation synchronous.
2023-09-27 00:35:36 +03:00
Bananymous
05e57801e7
Kernel: SYS_SYNC now schedules sync to happen soon
...
You can pass non-zero argument to the syscall to block until the
sync has finished.
2023-09-27 00:34:00 +03:00
Bananymous
b924c85669
Kernel: DiskCache now requires sync to be called from kernel thread
...
This disables the scenario where user interrupts sync operation
possibly leaving the syncing in invalid state.
2023-09-27 00:32:13 +03:00
Bananymous
09c1aa44d8
Kernel: Allow creationg of empty processes and manual registration
...
You can now create kernel processes without any threads, add the
needed threads and only then register the process and its threads
to the scheduler.
2023-09-27 00:29:45 +03:00
Bananymous
1d470fb5ba
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
Bananymous
b4e4f7a6cc
Kernel: Print more detailed output on ISR
2023-09-25 20:33:07 +03:00
Bananymous
55d30a7cc3
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
Bananymous
b62186441b
BAN: Implement basic WeakPtr
...
This can be constructed from classes that inherit from Weakable
2023-09-25 19:43:10 +03:00
Bananymous
8caba1e774
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
Bananymous
7bdb428938
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
Bananymous
3ea707c0e7
BuildSystem: Optimize image creation
...
We now use truncate to create disk image, since it doesn't require
writing zeroes to full disk. I also removed creation of third
partition as this was not currently used.
2023-09-25 13:15:55 +03:00
Bananymous
18d582c6ce
Kernel: Hacky kmalloc quick fix
...
Remove GeneralAllocator from kmalloc as it is not CriticalScope safe.
This requires increasing kmalloc memory.
2023-09-25 13:13:57 +03:00
Bananymous
8b2bb95b81
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
Bananymous
2ef496a24a
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
Bananymous
c0a89e8951
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
Bananymous
fc953df281
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
Bananymous
fe2dca16f0
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
f662aa6da2
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
fee3677fb9
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
4818c6e3dd
BuildSystem: Add cmake target for debugging qemu
2023-09-22 17:20:35 +03:00
Bananymous
971eb737c1
BAN: Fix LinkedList::pop_back()
2023-09-22 17:20:35 +03:00
Bananymous
9a3286ad57
Kernel: Add constexpr conditional debug prints
2023-09-22 17:20:35 +03:00
Bananymous
c9e09b840e
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
8136248a67
Kernel: Fix timer includes
2023-09-22 17:20:35 +03:00
Bananymous
0d67e46041
Kernel: Add config read/write api to PCI
2023-09-22 17:20:35 +03:00
Bananymous
bc1087f5a7
Kernel: Add pointer validation API to page table
2023-09-22 17:20:35 +03:00
Bananymous
3a9c6fc51a
General: remove linecount.sh
2023-09-22 17:20:35 +03:00
Bananymous
7774f56ab6
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
14a608effd
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
5fae3cec2a
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
b0c22b61ec
Kernel: Writes to disk are not synchronous anymore
...
Implement "proper" DiskCache syncing
2023-09-11 01:25:16 +03:00
Bananymous
82b049204d
Kernel: Print stack trace on isr
2023-09-11 01:20:55 +03:00
Bananymous
aa59142bfa
Kernel: Fix ext2 file write
2023-09-11 01:20:39 +03:00
Bananymous
c55bb77ff5
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
9b4e2e1e21
Kernel: Add basic dd command
...
This only supports if, of, bs, count and status=progress
2023-09-10 01:19:47 +03:00
Bananymous
202c38a65a
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