Bananymous
0757834176
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
3bffbe330d
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
8d583c8b67
Kernel: Fix ext2 inode block allocation with triply indirect blocks
2023-10-28 16:53:00 +03:00
Bananymous
99bde9aa49
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
98d702ac60
All: Remove read only from ext2 filesystem :)
2023-10-26 13:26:10 +03:00
Bananymous
1ec341e2dd
rm: add option to remove recursively
2023-10-26 02:32:49 +03:00
Bananymous
d09310f388
Kernel: Fix ext2 inode deletion
...
fsck now reports clean filesystem even after deleting files
2023-10-26 02:05:05 +03:00
Bananymous
126edea119
Userspace: implement basic rm command
2023-10-25 21:45:27 +03:00
Bananymous
74bfb930f2
Kernel/LibC: Add syscall and wrapper for unlink
2023-10-25 21:45:04 +03:00
Bananymous
091c5b6a66
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
fda4a4ad24
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
8bb47aee02
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
1f794e4ac0
Kernel: Implement directory creation for RamFS
2023-10-25 19:41:34 +03:00
Bananymous
e85f9ac6a1
Kernel: Implement Ext2 directory creation
2023-10-25 19:37:04 +03:00
Bananymous
6ee5576dcc
Kernel: Add Inode API for creating directories
2023-10-25 19:36:04 +03:00
Bananymous
b890e2fc14
Kernel: Ext2FS now uses Ext2Inodes as cached values
2023-10-25 19:34:00 +03:00
Bananymous
4f4b8ada8c
Kernel: Fix read offset of RamFileInode
2023-10-25 02:53:20 +03:00
Bananymous
9e4adc1264
cp: abort copy if write fails
2023-10-25 02:43:02 +03:00
Bananymous
7a54a088b4
Userspace: Add basic chmod command
2023-10-25 02:37:19 +03:00
Bananymous
15bb1804ef
Kernel/LibC: implement chmod syscall + libc wrapper
2023-10-25 02:35:37 +03:00
Bananymous
e8890062d6
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
1e2c2fb973
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
988a4e1cd8
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
adbbdf73c4
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
e8d20bc653
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
00ee86920a
Kernel: Add timeout to ACHI commands
...
ACHI commands can now fail from timeouts.
2023-10-24 11:56:25 +03:00
Bananymous
51ad27ea3c
BuildSystem: Match README.md with the new buildsystem
2023-10-24 11:56:00 +03:00
Bananymous
df69612bb1
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
5bfeb9f3ca
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
db5c24b2a5
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
781c950af6
BAN: add helper to cast Span<T> to Span<const T>
2023-10-20 04:59:08 +03:00
Bananymous
e2e5c31d54
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
be3efb0b92
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
792bb2df1c
Kernel: TTY doesn't panic if it doesn't find input device
2023-10-16 16:58:39 +03:00
Bananymous
e01928d186
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
48980b56ab
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
b767317a7a
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
6f8fce94a0
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
31aa157201
Kernel: Don't require framebuffer
...
Initializes virtual tty only if framebuffer is initialized
2023-10-16 01:44:54 +03:00
Bananymous
5977341610
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
76f17bd569
Kernel: PCIDevice stores its vendor id and device id
2023-10-16 01:44:54 +03:00
Bananymous
6b1b3d333c
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
cb65be3e33
Toolchain: Build grub with efi capabilities
2023-10-16 01:37:12 +03:00
Bananymous
dafc016293
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
c7b6fc950a
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
45a6783c3d
Kernel: Cleanup GDT code
2023-10-13 16:18:22 +03:00
Bananymous
6b180da4e8
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
cf4f5f64a5
Kernel: add NEVER_INLINE and make Interruptable not constructable
2023-10-13 16:17:27 +03:00
Bananymous
5630f64175
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
Bananymous
1d61bccfc3
Kernel: Debug temporary debug print just to beginning when full
2023-10-13 12:43:52 +03:00