Commit Graph

856 Commits

Author SHA1 Message Date
Bananymous 0d132ee518 Kernel: Mark Ext2 classes final 2023-07-10 11:48:11 +03:00
Bananymous fabbb9f531 BAN: RefPtr can be constructed from other types 2023-07-10 11:48:11 +03:00
Bananymous 80c8d52dc5 Kernel: add more functionality to PCI 2023-07-09 23:04:11 +03:00
Bananymous b6c4a2dbf1 Kernel: Edit lock scopes and make string copy able to fail 2023-07-07 23:12:19 +03:00
Bananymous a2f5ad7bed Kernel: Move open file descriptors to their own class
This simplifies code a lot :)
2023-07-07 23:11:37 +03:00
Bananymous a337f414fc LibC: limits.h now defined OPEN_MAX 2023-07-07 23:08:49 +03:00
Bananymous 404b3dd44c Shell: $(...) expansion works now :) 2023-07-06 23:22:57 +03:00
Bananymous d04b031e30 Shell: you can call Shell -c ... to invoke the shell as interpreter 2023-07-06 23:22:49 +03:00
Bananymous 07fec6e211 Kernel/LibC: add basic dup2 2023-07-06 23:17:54 +03:00
Bananymous 4cd72992c8 Kernel/LibC: Add basic pipe() syscall and command
You can now create pipes :)
2023-07-06 22:16:26 +03:00
Bananymous cdcb395640 LibC: add read() and write() to unistd 2023-07-06 22:15:55 +03:00
Bananymous 5a8eb51968 Kernel: TTY now unblocks semaphore after read
This allows concurrent reads not fully reading the buffer not block
indefinately.
2023-07-06 21:32:34 +03:00
Bananymous a74422281f Kernel: Add O_CLOEXEC 2023-07-06 20:00:33 +03:00
Bananymous a45f9ee76b Kernel: Remove spammy process/thread exit printing 2023-07-06 10:34:46 +03:00
Bananymous f19dc114d6 Userspace: Shell now has 'env' for printing environment 2023-07-06 10:32:43 +03:00
Bananymous d2aabb669b Userspace: Shell imporove 'time' command 2023-07-06 09:45:04 +03:00
Bananymous 9c3f4039a5 Userspace: Shell now has time builtin 2023-07-06 00:39:04 +03:00
Bananymous 1fb305fa45 Kernel/LibC: add clock_gettime() for CLOCK_MONOTONIC
This gets the number of milliseconds since boot
2023-07-06 00:38:29 +03:00
Bananymous 4086d7c3be Kernel: rework the whole PageTable structure
We now have page table structure for kernel memory which is shared
between all processes.
2023-07-05 23:41:35 +03:00
Bananymous 60fe5a656c LibC: Fix syscall SYS_READ and SYS_WRITE arguments 2023-06-19 10:38:29 +03:00
Bananymous 7d254c26bc Kernel: Rewrite and optimize DiskCache
DiskCache now consists of PageCaches which are caches of contiguous
sectors. This allows the disk cache to be ordered and faster traversal.

We seem to have a problem somewhere during reading. The stack gets
corrupted.
2023-06-19 10:31:47 +03:00
Bananymous 328d67f551 Userspace: u8sum fix error message 2023-06-19 10:31:23 +03:00
Bananymous 84ecf861cd Userspace: Shell now processes $ arguments 2023-06-19 01:39:24 +03:00
Bananymous 46a6daccfe Userspace: Shell argument parsing now appriciates quotes 2023-06-19 01:07:00 +03:00
Bananymous 3df3c37bad Userspace: Shell argument parse now results in BAN::String 2023-06-19 00:34:44 +03:00
Bananymous 191a24110a Userspace: Shell now sets SHELL environment variable 2023-06-18 23:35:51 +03:00
Bananymous 275a730485 LibELF: We use BAN::Vector<uint8_t> as elf storage
This is made possible by the dynamic kmalloc
2023-06-18 23:29:23 +03:00
Bananymous 9a7b2587af Kernel: kmalloc has now somewhat dynamic storage
Allocations bigger than PAGE_SIZE and those not forced to be identity
mapped are now done on a GeneralAllocator. This allows us to use kmalloc
for big allocations; bigger than the fixed 1 MiB storage.

This is still a hack and the whole kmalloc will have to be rewritten at
some point, but for now this does the job :D
2023-06-18 23:27:00 +03:00
Bananymous 09c824b90e Kernel: Add GeneralAllocator::paddr_of
Yoy can now query physical address of a virtual address for general
allocator allocation
2023-06-18 23:25:51 +03:00
Bananymous 57e59d998f Kernel: Add enum for ISR name to number 2023-06-18 23:24:27 +03:00
Bananymous 44fb3945df Kernel: General allocator takes first valid vaddr as parameter 2023-06-17 22:23:34 +03:00
Bananymous 95c4e608de Kernel: Move print during boot 2023-06-12 23:45:36 +03:00
Bananymous b9603d9d23 BAN: Optional can be constructed inplace 2023-06-12 23:45:36 +03:00
Bananymous 16e5f96b1d BAN: Add operator-> and operator* to Optional 2023-06-12 22:25:14 +03:00
Bananymous d0a0e3bdef Userspace: Add u8sum
This program caluculates the sum of bytes in file mod 256
2023-06-12 20:36:16 +03:00
Bananymous 5dcc53bcf2 Kernel: Make disk IO blocking thread safe
This was causing a lot of deadlocks on vms without kvm accel
2023-06-12 18:57:47 +03:00
Bananymous 23543b15ca Kernel: Rework syscall calling
I removed the intermediate function when calling syscalls. Now syscall
handler calls the current process automatically. Only exception is
sys_fork, since it needs a assembly trampoline for the new thread.
2023-06-12 14:16:48 +03:00
Bananymous 2253c45feb Kernel: Remove Shell from kernel
This is now obsolete since we have a userspace Shell.
2023-06-12 02:04:52 +03:00
Bananymous 9f9a70713e Base: add home directories for root and user 2023-06-12 02:03:13 +03:00
Bananymous cd57adc856 BuildSystem: every file except /home/* is now owned by root 2023-06-12 02:03:13 +03:00
Bananymous b4b892148c Userspace: Shell processes PS1 '\~' as cwd and implement cd 2023-06-12 02:03:13 +03:00
Bananymous 048183ddb5 Userspace: init now sets HOME environment variable and cd's into HOME 2023-06-12 02:02:52 +03:00
Bananymous f09b82c4b5 Kernel/LibC: add SYS_{SET,GET}_PWD and chdir, getpwd 2023-06-12 02:02:52 +03:00
Bananymous 7aeb8e4d36 Kernel: allocate thread stacks from 0x300000 onwards
I had a problem where thread stack was overlapping with elf loading
2023-06-12 01:02:19 +03:00
Bananymous 58ec4d6a31 Kernel: Fix bug in elf loading
We were allocating one extra page
2023-06-12 00:59:19 +03:00
Bananymous 25f8343269 Userspace: init now default logins as user 2023-06-12 00:46:07 +03:00
Bananymous e9cb844c28 Userspace: Shell now uses PS1 as prompt if set 2023-06-12 00:45:47 +03:00
Bananymous 30ac046232 Userspace: Add color to ls 2023-06-11 23:00:19 +03:00
Bananymous f67f8ccbe0 Userspace: init now sets user and group ids before running their shell 2023-06-11 22:37:00 +03:00
Bananymous e9217b3484 Userspace: Add basic id that prints {,e}{uid,gid} of the current proc 2023-06-11 22:37:00 +03:00