Bananymous
229082a1b2
BAN: Rewrite String with small string optimizations
...
String now holds a 15 byte sso buffer. I'm not sure what the size
should actually be but 15 will work for now. Maybe the sso buffer
should be contained in an union with one bit flag in size instead of
variant that uses extra 8 bytes for type index.
This patch buffs sizeof(String) from 24 bytes to 32 bytes on 64 bit.
I assume this is much better version than the old which had to make
allocation even for empty strings :D.
2023-10-29 03:11:13 +03:00
Bananymous
0db17e9d39
BAN: Add variant to ForwardList
...
I should be using the forward list more
2023-10-29 02:28:55 +03:00
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