Bananymous
71ecdd7245
Kernel: Canonicalize vaddr before using it
2023-10-30 19:20:17 +02:00
Bananymous
b80b59ce24
Kernel: Remove unused externs in kernel.cpp
2023-10-30 19:09:31 +02:00
Bananymous
640d27748f
Kernel: Temporarily force FileBackedRegion mappings writable
...
Now that write-protect bit is enabled this is neccessary.
2023-10-30 19:08:33 +02:00
Bananymous
42772611ce
Kernel: Add fast page to page table
...
Add "fast page" to KERNEL_OFFSET. This is always present in page
tables and only requires changing the page table entry to map. This
requires no interrupts since it should only be for very operations
like memcpy.
I used to map all temporary mappings to vaddr 0, but this is much
better. C++ standard always says that nullptr access is undefined
and this gets rid of it.
Fixed some bugs I found along the way
2023-10-30 19:02:09 +02:00
Bananymous
6e676ee8c5
Kernel: Remove GeneralAllocator since it was not used
2023-10-30 18:13:17 +02:00
Bananymous
066fb44105
Kernel: Allow offsetof with packed fields
...
This is not standard C++ but should be fine with my toolchain.
2023-10-30 17:51:18 +02:00
Bananymous
3f638f125e
Kernel: panic takes arguments as rvalue references
2023-10-30 16:22:02 +02:00
Bananymous
35f8f44510
Kernel: Fix ext2 small link deallocation
...
Also fix deallocation bug
2023-10-30 16:22:02 +02:00
Bananymous
0c590821ed
Kernel: only map kernel from g_kernel_start onwards
2023-10-30 16:22:02 +02:00
Bananymous
3c311efb81
BAN: Implement better ASSERT macros
...
Implement macros for all basic binary ops. These macros print failed
values when the fail.
2023-10-30 16:22:02 +02:00
Bananymous
6ef153b6ca
Kernel: Enable Write Protect. This seems to be good for security
2023-10-30 12:23:22 +02:00
Bananymous
130a69bac6
Kernel: Fix stack OOB detection
...
I now check both interrupt and normal stack to detect OOB. Processes
are killed if they encouner stack over/under flow.
2023-10-30 12:17:08 +02:00
Bananymous
b5d873dfae
Kernel/LibELF: Map pages always as RW so kernel can write to them
...
Kernel doesn't seem to require W permissions to a page without UEFI
so this had not been found earlier.
2023-10-30 12:14:12 +02:00
Bananymous
d5e0900cbb
BAN: String now uses union for its sso storage
...
This allows String to shrink by 8 bytes since Variant's 8 index is
no longer stored in here.
This required me to make Strings max size one bit less, but that
should still be fine. There should never be strings with size of
over half of the computer's address space.
2023-10-30 11:13:16 +02:00
Bananymous
a63006afaf
Userspace: Add quick test for global ctors and dtors
2023-10-30 11:11:10 +02:00
Bananymous
7c6832cee4
LibC: implement and call __cxa_finalize() on exit()
...
This allows global destructors to be actually called
2023-10-30 11:10:08 +02:00
Bananymous
0b5fcb3f88
Kernel/LibC: Add crt* files to LibC and remove crt0 from kernel
...
There was no reason for libc get crt0 from kernel.
2023-10-30 11:06:13 +02:00
Bananymous
f33c0bad99
Toolchain: Clone GCC and Binutils from git
...
This feels much cleaner than just downloading tar balls from
pregiven urls. Also patching works much better like this!
I added --disable-initfini-array since global constructors were
not called.
2023-10-30 11:02:57 +02:00
Bananymous
18f61c5427
Kernel: Fix ACPI DSDT address
...
Read x_dsdt address only if fadt's length contains it. Bochs seems
to have version 1 fadt without the x_* fields.
2023-10-29 21:35:11 +02:00
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