Commit Graph

1631 Commits

Author SHA1 Message Date
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
Bananymous 2df7f8a1e5 BuildSystem: add rule to build libstdc++
We can now build libstdc++ and actually link with g++
2023-06-02 18:39:42 +03:00