Bananymous
2d34b2b8a3
BuildSystem: Add bos short hand for building with zsh completions :)
2023-10-28 22:23:29 +03:00
Bananymous
76f48f095c
Kernel: Rewrite a lot of ext2 code
...
This commit consists of multiple big changes
1. blocks for inodes are now allocated on demand
- reading from non allocated block will just return zeroes
- writing to non allocated block allocates it
2. code doesn't really use raw pointers anymore
- all casts to uint32_t or structures are now replaced with
spans. either as<T> or as_span<T> which both are bounds
checked
3. code doesn't depend on random macros for accessing indirect blocks
- i added some recursive functions which take care of this :)
2023-10-28 22:13:28 +03:00
Bananymous
d98f84f9d3
BAN: Update ByteSpan API
...
Add ByteSpan::as_span<T> and const versions of as() and as_span()
require T to be const.
2023-10-28 22:10:47 +03:00
Bananymous
240a687d8f
Kernel: Fix ext2 inode block allocation with triply indirect blocks
2023-10-28 16:53:00 +03:00
Bananymous
35b46e37bb
Kernel: Fix ext2 inode deletion cleanup
...
I now cleanup all blocks (including direct) in i_block array
2023-10-28 16:52:56 +03:00
Bananymous
14d24bce98
All: Remove read only from ext2 filesystem :)
2023-10-26 13:26:10 +03:00
Bananymous
ea0d7156a4
rm: add option to remove recursively
2023-10-26 02:32:49 +03:00
Bananymous
38c267b4c8
Kernel: Fix ext2 inode deletion
...
fsck now reports clean filesystem even after deleting files
2023-10-26 02:05:05 +03:00
Bananymous
81228d3401
Userspace: implement basic rm command
2023-10-25 21:45:27 +03:00
Bananymous
87ff38664a
Kernel/LibC: Add syscall and wrapper for unlink
2023-10-25 21:45:04 +03:00
Bananymous
b7007016c0
BAN: Implement Ext2 file unlinking
...
Ext2 inodes can now be unlinked from directories and after last
inode closes (destructor gets called) we check if link count is 0
and cleanup the inode from filesystem
2023-10-25 21:43:36 +03:00
Bananymous
3566ddab00
BAN: ByteSpan can be sliced without specified size
...
This will give span with all remaining size after offset
2023-10-25 21:41:11 +03:00
Bananymous
6ee4d10651
Kernel/LibC/Userspace: Implement mkdir and creat
...
Touch now uses creat insteadd of open with O_CREAT flag
2023-10-25 21:07:26 +03:00
Bananymous
e9b7cf332d
Kernel: Implement directory creation for RamFS
2023-10-25 19:41:34 +03:00
Bananymous
4ee2f0f789
Kernel: Implement Ext2 directory creation
2023-10-25 19:37:04 +03:00
Bananymous
18e90d305d
Kernel: Add Inode API for creating directories
2023-10-25 19:36:04 +03:00
Bananymous
fd1b331b86
Kernel: Ext2FS now uses Ext2Inodes as cached values
2023-10-25 19:34:00 +03:00
Bananymous
5c51d09309
Kernel: Fix read offset of RamFileInode
2023-10-25 02:53:20 +03:00
Bananymous
c445ea6266
cp: abort copy if write fails
2023-10-25 02:43:02 +03:00
Bananymous
e685f38fd1
Userspace: Add basic chmod command
2023-10-25 02:37:19 +03:00
Bananymous
627b8cc140
Kernel/LibC: implement chmod syscall + libc wrapper
2023-10-25 02:35:37 +03:00
Bananymous
657f95d3f0
Userspace: Implement basic cp
...
This does not support any meaningful command line arguments but
is a good start.
2023-10-25 00:07:25 +03:00
Bananymous
07f8c972b3
Shell: Set get old termios earlier
...
I sourced the config file before getting old termios. Sourcing
updated the termios so old_termios was always in non canonical, non
echoing mode.
2023-10-24 19:10:53 +03:00
Bananymous
fc8a000e46
BAN: Fix bug of size of splice after slice()
...
I have no idea what was I doing before :D
2023-10-24 17:23:45 +03:00
Bananymous
6f6ccbfa04
meminfo: fix g++ warning for oob write
...
g++ doesn't realize that read can only return -1
2023-10-24 16:50:21 +03:00
Bananymous
c71ac588b2
BuildSystem: Fix bugs in new build system
...
I had not tested the new build system with clean toolchain build
but it seems to work now.
2023-10-24 16:48:46 +03:00
Bananymous
2d0da93ac4
Kernel: Add timeout to ACHI commands
...
ACHI commands can now fail from timeouts.
2023-10-24 11:56:25 +03:00
Bananymous
fb801044ec
BuildSystem: Match README.md with the new buildsystem
2023-10-24 11:56:00 +03:00
Bananymous
ce87e0a605
BuildSystem: Rewrite whole build system structure
...
Now you have to use script/build.sh for building and running banan-os
2023-10-24 11:56:00 +03:00
Bananymous
f3d9da9549
Kernel: Rewrite all read/write functions to use BAN::ByteSpan
...
This allows us to not work with raw pointers and use sized containers
for reading and writing.
2023-10-24 11:56:00 +03:00
Bananymous
71cad2fc38
BAN: Implement ByteSpan
...
This is a span over exisiting containers/data types. I'm not too
happy with the constructors and assignment operators, but they will
work for now
2023-10-20 04:59:29 +03:00
Bananymous
61c7a68f4a
BAN: add helper to cast Span<T> to Span<const T>
2023-10-20 04:59:08 +03:00
Bananymous
c17cdb39d5
Kernel: Map multiboot2 memory in PageTable initialization
...
It cannot be assumed that multiboot data lies between kernel_end
and 2 GiB mark, so I properly allocate virtual address space for it.
2023-10-17 01:15:08 +03:00
Bananymous
69a39b7077
Kernel: Start using multiboot2 instead of multiboot
...
This allows better compatibility with (U)EFI and gives RSDP location
instead of me having to scan ram to find it.
2023-10-17 01:06:24 +03:00
Bananymous
19696bdad3
Kernel: TTY doesn't panic if it doesn't find input device
2023-10-16 16:58:39 +03:00
Bananymous
00dd7d85ce
Kernel: Fix device identification with all bits as ones
...
If device identification sends all ones, don't initialize the device.
2023-10-16 16:57:07 +03:00
Bananymous
0c88c74b76
Kernel: ATABuses are but to compatibility mode if possible
...
I don't support native mode ata bus (irq sharing) so ata buses are
but to compatibility mode if possible.
2023-10-16 16:56:12 +03:00
Bananymous
c4a640bcb6
Kernel: Fix ATADevice naming
...
ATADevice now stores its name instead of using static buffer. Old
static buffer was changing on every name query. I just hadn't noticed
since virtual machine disks were always sda.
2023-10-16 16:52:15 +03:00
Bananymous
0fdf8b6f68
Kernel: Fix PCI bugs
...
IO BarRegion used vaddr instead of the correct paddr. Add API for
memory region iobase query.
2023-10-16 16:50:49 +03:00
Bananymous
37bc52988c
Kernel: Don't require framebuffer
...
Initializes virtual tty only if framebuffer is initialized
2023-10-16 01:44:54 +03:00
Bananymous
1312a9dad2
Kernel: PCI checks if ethernet device is E1000 before initialization
...
I used to treat all ethernet deivices as E1000 but now it is actually
verified before initialization
2023-10-16 01:44:54 +03:00
Bananymous
73b9c28457
Kernel: PCIDevice stores its vendor id and device id
2023-10-16 01:44:54 +03:00
Bananymous
29db8d0d40
BuildSystem: add cmake variable UEFI_BOOT
...
If this variable is defined in cmake, image will be build with esp
and booted with uefi.
2023-10-16 01:44:54 +03:00
Bananymous
5bf0f9742a
Toolchain: Build grub with efi capabilities
2023-10-16 01:37:12 +03:00
Bananymous
fc5bfa2cb3
Kernel: Clear TTY when setting as current
...
Actually this should replace from old buffer, but this works
for now.
2023-10-13 17:20:26 +03:00
Bananymous
f7e38ccfe4
Kernel: Don't crash if header type != 0 in bar region creation
...
Also remove spammy debug printing
2023-10-13 16:32:32 +03:00
Bananymous
128202a55a
Kernel: Cleanup GDT code
2023-10-13 16:18:22 +03:00
Bananymous
89d74a9088
Kernel: Separate scheduler execution and stack loading
...
Not sure if this is actually needed, but this allows actual
executing function to be in clean environment
2023-10-13 16:17:27 +03:00
Bananymous
63f64619bc
Kernel: add NEVER_INLINE and make Interruptable not constructable
2023-10-13 16:17:27 +03:00
Bananymous
518fd3fad0
Kernel: Add 16 more irq handlers
...
IDT will now panic if trying to assing handler for non supported
irq.
2023-10-13 16:17:27 +03:00