Commit Graph

1332 Commits

Author SHA1 Message Date
Bananymous
66fe48e94b Userspace: add ^L support for shell 2023-06-09 01:24:33 +03:00
Bananymous
c0fe4756cb 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
Bananymous
5032e79be3 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
Bananymous
1aec3fcedd 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
Bananymous
aec63081e2 Kenrel: Rename Scheduler::reschedule -> Scheduler::timer_reschedule 2023-06-09 00:41:43 +03:00
Bananymous
801025ad7b 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
Bananymous
59b10c4d25 Kernel: PageTableScope locks the PageTable before disabling interrupts
This allows replacing some PageTableScopes with PageTable::lock()
2023-06-09 00:34:41 +03:00
Bananymous
841584ccbd Kernel: get_free_contiguous_pages works with non-page aligned addresses
also fix bug in ordering
2023-06-06 02:03:23 +03:00
Bananymous
24993f6020 LibC: implement setenv, unsetenv, putenv 2023-06-05 22:51:02 +03:00
Bananymous
55ea5c5488 Kernel: add basic support for environment variables
exec functions will search files from PATH
2023-06-05 22:51:02 +03:00
Bananymous
290b81dedc BAN: add StringView::contains(char) 2023-06-05 22:51:02 +03:00
Bananymous
c6b5cc1e07 Kernel: exec now has better posix errors 2023-06-05 21:12:08 +03:00
Bananymous
357081346e Shell: load old termios for process execution 2023-06-05 21:12:08 +03:00
Bananymous
896b919c9d Kernel/LibC: pass environ pointer to process 2023-06-05 21:12:08 +03:00
Bananymous
6b73f4d187 Kernel: TTY now actually flushes on ^D 2023-06-05 20:21:46 +03:00
Bananymous
08a806e75d Kernel: verify that loaded elfs are executable 2023-06-05 19:29:32 +03:00
Bananymous
73c11c3d29 Shell: add bareboness utf8 support
This should work as long as TTY provides only valid utf8.
If the utf is invalid, assertion fails and the shell dies.
2023-06-05 18:55:22 +03:00
Bananymous
5af77dcfb9 Shell: we now support left/right arrows 2023-06-05 18:24:41 +03:00
Bananymous
a7dc7ecb90 LibC: abort now prints 'abort()' and exits
we used to call assert in abort which then recursively called
abort again.
2023-06-05 18:23:19 +03:00
Bananymous
cf88142856 Kernel: TTY now supports CSI s and u
These are commonly supported values to save and load cursor
position
2023-06-05 18:19:13 +03:00
Bananymous
efb355c7be BuildSystem: disable nls from gcc 2023-06-05 17:55:47 +03:00
Bananymous
d1ad38c8d4 Kernel/LibC: add SYS_STAT and stat(), lstat() 2023-06-05 14:37:14 +03:00
Bananymous
69b94dad00 Base: revert bin and lib symlinks to relative paths
Absolute paths fucked up toolchain building and usespace linking,
since g++ was finding host libraries from /usr/lib.
2023-06-05 10:08:01 +03:00
Bananymous
4c40aa6b38 Userspace: Start work on proper shell 2023-06-05 01:42:57 +03:00
Bananymous
5cf3221364 Base: /lib and /bin are now absolute symlinks 2023-06-04 18:12:05 +03:00
Bananymous
40055f023c LibC: add wait and waitpid
Note that wait() doesn't work since only waiting for specified
pid is supported. wait() will just return -1 and set errno to
ECHILD.
2023-06-04 18:00:52 +03:00
Bananymous
9fbb2b9369 Kernel: Add SYS_WAIT
This syscall waits for a given pid.
2023-06-04 18:00:52 +03:00
Bananymous
a3aca67eef Kernel: fork() now clones current thread
This is how posix specifies thread cloning during fork
2023-06-04 17:40:37 +03:00
Bananymous
977652ad57 Kernel: Process FixedWidthAllocators come now in 4 sizes 2023-06-04 01:26:43 +03:00
Bananymous
5bf7ca1c80 Kernel: Allocators are now stored in UniqPtr
This allows proper memory management, we had some memory leak
2023-06-04 01:25:57 +03:00
Bananymous
1b1f22c35e Kernel: make load_elf() its own function 2023-06-04 01:24:11 +03:00
Bananymous
479817231a Kernel: PhysicalRange maps its nodes to kernel vaddr space
This keeps the lower half of address space cleaner
2023-06-04 01:20:47 +03:00
Bananymous
e3c5477df4 Kernel: reorder process exit steps 2023-06-04 01:19:04 +03:00
Bananymous
b403155ca9 Kernel: You can specify first vaddr for getting free pages 2023-06-04 01:15:48 +03:00
Bananymous
9fd3111011 BAN: Add UniqPtr 2023-06-04 00:39:20 +03:00
Bananymous
5f339d585c Kernel: PAGE_FLAG_MASK is now only 0xF
We don't care currenly about anything but the last few bits
2023-06-03 20:08:13 +03:00
Bananymous
b168462b43 Kernel: PageTable now has debug_dump
This dumps all the mapped pages and their flags
2023-06-03 20:08:13 +03:00
Bananymous
68691faca1 Kernel: boot.S is back to 2 MiB pages
bochs doesn't seem to support 1 GiB pages
2023-06-03 18:53:36 +03:00
Bananymous
1e075c248f BAN: Errors now includes assert.h 2023-06-03 18:53:05 +03:00
Bananymous
d201e65810 BuildSystem: remove sse and sse2 from userspace 2023-06-03 16:05:32 +03:00
Bananymous
3a79880e69 LibC: printf string persision works now 2023-06-03 15:07:02 +03:00
Bananymous
9228df0f23 Kernel: Inode/Device detection is done with overridden bool functions 2023-06-03 13:28:15 +03:00
Bananymous
402ad85583 Kernel: Heap will return 0 if no free page is available 2023-06-03 02:55:31 +03:00
Bananymous
53e91ba98a Kernel: DiskCache will try to shrink_to_fit after cache cleanup 2023-06-03 02:55:22 +03:00
Bananymous
fd153f3762 Kernel: DiskCache won't crash when running out of kmalloc memory 2023-06-03 02:36:20 +03:00
Bananymous
813d0f1b5f Kernel: add basic disk cache
ATADevices now add disk cache to themselves
2023-06-03 02:23:14 +03:00
Bananymous
2b901abfb1 Kernel: Shell 'memory' now prints heap memory usage 2023-06-03 02:22:18 +03:00
Bananymous
d4289f9e74 Update README.md 2023-06-02 18:43:30 +03:00
Bananymous
3a5d6914ba Userspace: create_program creates proper cmake files again 2023-06-02 18:42:25 +03:00
Bananymous
e96efea2fb BuildSystem: all scripts have now bash shebang
I could not use the scripts on debian
2023-06-02 18:41:45 +03:00