363c325c79
Kenrel: Fix inode comparison
...
We should not compare rdevs
2023-07-10 11:48:11 +03:00
583504ebe0
Kernel: Inode rename directory functions
2023-07-10 11:48:11 +03:00
b354b77f8b
Kernel: Mark Ext2 classes final
2023-07-10 11:48:11 +03:00
19dab08275
Kernel: add more functionality to PCI
2023-07-09 23:04:11 +03:00
3840fbf957
Kernel: Edit lock scopes and make string copy able to fail
2023-07-07 23:12:19 +03:00
78c091f7f8
Kernel: Move open file descriptors to their own class
...
This simplifies code a lot :)
2023-07-07 23:11:37 +03:00
a549336530
Kernel/LibC: add basic dup2
2023-07-06 23:17:54 +03:00
4eb95c963d
Kernel/LibC: Add basic pipe() syscall and command
...
You can now create pipes :)
2023-07-06 22:16:26 +03:00
af30d537da
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
f1bd26fb92
Kernel: Add O_CLOEXEC
2023-07-06 20:00:33 +03:00
5c6bbcb62f
Kernel: Remove spammy process/thread exit printing
2023-07-06 10:34:46 +03:00
3c068aa0ae
Kernel/LibC: add clock_gettime() for CLOCK_MONOTONIC
...
This gets the number of milliseconds since boot
2023-07-06 00:38:29 +03:00
86df258365
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
0d620f3e0f
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
5e123031aa
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
388f530edd
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
d354cccd37
Kernel: Add enum for ISR name to number
2023-06-18 23:24:27 +03:00
714305ef56
Kernel: General allocator takes first valid vaddr as parameter
2023-06-17 22:23:34 +03:00
f83ae1e9c6
Kernel: Move print during boot
2023-06-12 23:45:36 +03:00
32e1473c94
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
bf617036c7
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
ce55422a24
Kernel: Remove Shell from kernel
...
This is now obsolete since we have a userspace Shell.
2023-06-12 02:04:52 +03:00
0f63cfa43f
Kernel/LibC: add SYS_{SET,GET}_PWD and chdir, getpwd
2023-06-12 02:02:52 +03:00
537780ee1e
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
4ca99fcb4e
Kernel: Fix bug in elf loading
...
We were allocating one extra page
2023-06-12 00:59:19 +03:00
b254ade69b
Kernel: Add SYS_GET_{,E}{UID,GID}
2023-06-11 22:37:00 +03:00
ef4ebaa969
Kernel: Add syscalls for set{,e,re}{uid,gid}
2023-06-11 22:37:00 +03:00
51eb44bf40
Kernel/Userspace: Add basic init process
...
This process parses /etc/passwd and promps login screen.
When an username is entered, it will launch that users shell
2023-06-11 22:37:00 +03:00
c62e820bcf
Kernel: Add basic Credentials for the system
...
Now filesystem access/open, etc confirm that you have access for rwxs
2023-06-11 20:06:06 +03:00
46c34db6cb
Kernel: GeneralAllocator and FixedWidth allocator invalidate TLB caches
...
We were getting random exceptions when reallocating same addressess and
this fixes that problem :)
2023-06-11 15:57:48 +03:00
8be28012ee
LibC: Reorder some syscalls
2023-06-11 03:29:22 +03:00
5aed186827
Kernel: Add SYS_OPENAT
2023-06-11 03:29:22 +03:00
91f812e17f
Kernel: Exceptions will now enable interrupts before calling exit()
...
this allows scheduler verification on reschedule() not panic
2023-06-11 03:29:22 +03:00
52c4eebd77
Kernel: Implement SYS_FSTAT
2023-06-11 03:29:22 +03:00
825ec221b7
Kernel: we don't panic anymore on unrecognized syscall
2023-06-11 00:18:48 +03:00
e31080bce3
Kernel: allow open() call with O_SEARCH
2023-06-11 00:18:34 +03:00
7a5d5cabad
Kernel: Add syscall for reading directory entries
2023-06-11 00:18:08 +03:00
e209ca7c82
Kernel: Rewrite directory listing so it can be integrated to libc
2023-06-11 00:17:18 +03:00
db49cbd6e2
Kernel: We now store the processes exit code
2023-06-10 17:31:56 +03:00
97c7fc42d1
Kernel: SpinLocks now reschedule if they cannot aquire the lock
...
This allows us to not actually spin doing nothing while waiting for
another (not executing) to release the lock. This api won't probably
work when we get to SMP
2023-06-09 00:53:32 +03:00
7da0627f8e
Kernel: Process::exit() now uses the new Scheduler::reschedule()
...
We use this new function while waiting for all blocking threads to
resume execution
2023-06-09 00:49:19 +03:00
27cef23823
Kernel: Scheduler now has reschedule()
...
This can be called from anywhere and just causes the scheduler to
schedule the next thread. This is more efficient and verbose version
of Scheduler::set_current_thread_sleeping(0), since we don't have
to wake other threads or do other verifications.
2023-06-09 00:47:17 +03:00
b7fc2dc3d0
Kenrel: Rename Scheduler::reschedule -> Scheduler::timer_reschedule
2023-06-09 00:41:43 +03:00
8af390e0f6
Kernel: Big commit. Rewrite ELF loading code
...
We now load ELF files to VirtualRanges instead of using kmalloc.
We have only a fixed 1 MiB kmalloc for big allocations and this
allows loading files even when they don't fit in there.
This caused me to rewrite the whole ELF loading process since the
loaded ELF is not in memory mapped by every process.
Virtual ranges allow you to zero out the memory and to copy into
them from arbitary byte buffers.
2023-06-09 00:37:43 +03:00
96d6453ea8
Kernel: PageTableScope locks the PageTable before disabling interrupts
...
This allows replacing some PageTableScopes with PageTable::lock()
2023-06-09 00:34:41 +03:00
2b9900e56e
Kernel: get_free_contiguous_pages works with non-page aligned addresses
...
also fix bug in ordering
2023-06-06 02:03:23 +03:00
86f58f60cb
LibC: implement setenv, unsetenv, putenv
2023-06-05 22:51:02 +03:00
064ce568c2
Kernel: add basic support for environment variables
...
exec functions will search files from PATH
2023-06-05 22:51:02 +03:00
0b1b4d8f7e
Kernel: exec now has better posix errors
2023-06-05 21:12:08 +03:00
b0e9ab0519
Kernel/LibC: pass environ pointer to process
2023-06-05 21:12:08 +03:00