64890bb640
Kernel: Add SYS_OPENAT
2023-06-11 03:29:22 +03:00
caca6dc701
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
68ec443e07
LibC: implement close
2023-06-11 03:29:22 +03:00
aa86125f2b
Kernel: Implement SYS_FSTAT
2023-06-11 03:29:22 +03:00
c423164066
LibC: Implement basic dirent functionality
...
We don't currently support seeking
2023-06-11 03:29:22 +03:00
14aeb8de10
Kernel: we don't panic anymore on unrecognized syscall
2023-06-11 00:18:48 +03:00
691b17e0cc
Kernel: allow open() call with O_SEARCH
2023-06-11 00:18:34 +03:00
eae6119039
Kernel: Add syscall for reading directory entries
2023-06-11 00:18:08 +03:00
30f81e1696
LibC: add missing O_EXEC and O_SEARCH
2023-06-11 00:17:18 +03:00
01311b470f
Kernel: Rewrite directory listing so it can be integrated to libc
2023-06-11 00:17:18 +03:00
223d2ac3a6
Userspace: fix return values of cat and echo
2023-06-10 17:34:10 +03:00
4cdeb98897
Kernel: We now store the processes exit code
2023-06-10 17:31:56 +03:00
47c69e9def
Userspace: add exit to shell
2023-06-09 01:51:23 +03:00
9728947d5d
Userspace: add echo
2023-06-09 01:50:18 +03:00
66fe48e94b
Userspace: add ^L support for shell
2023-06-09 01:24:33 +03:00
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
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
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
aec63081e2
Kenrel: Rename Scheduler::reschedule -> Scheduler::timer_reschedule
2023-06-09 00:41:43 +03:00
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
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
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
24993f6020
LibC: implement setenv, unsetenv, putenv
2023-06-05 22:51:02 +03:00
55ea5c5488
Kernel: add basic support for environment variables
...
exec functions will search files from PATH
2023-06-05 22:51:02 +03:00
290b81dedc
BAN: add StringView::contains(char)
2023-06-05 22:51:02 +03:00
c6b5cc1e07
Kernel: exec now has better posix errors
2023-06-05 21:12:08 +03:00
357081346e
Shell: load old termios for process execution
2023-06-05 21:12:08 +03:00
896b919c9d
Kernel/LibC: pass environ pointer to process
2023-06-05 21:12:08 +03:00
6b73f4d187
Kernel: TTY now actually flushes on ^D
2023-06-05 20:21:46 +03:00
08a806e75d
Kernel: verify that loaded elfs are executable
2023-06-05 19:29:32 +03:00
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
5af77dcfb9
Shell: we now support left/right arrows
2023-06-05 18:24:41 +03:00
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
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
efb355c7be
BuildSystem: disable nls from gcc
2023-06-05 17:55:47 +03:00
d1ad38c8d4
Kernel/LibC: add SYS_STAT and stat(), lstat()
2023-06-05 14:37:14 +03:00
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
4c40aa6b38
Userspace: Start work on proper shell
2023-06-05 01:42:57 +03:00
5cf3221364
Base: /lib and /bin are now absolute symlinks
2023-06-04 18:12:05 +03:00
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
9fbb2b9369
Kernel: Add SYS_WAIT
...
This syscall waits for a given pid.
2023-06-04 18:00:52 +03:00
a3aca67eef
Kernel: fork() now clones current thread
...
This is how posix specifies thread cloning during fork
2023-06-04 17:40:37 +03:00
977652ad57
Kernel: Process FixedWidthAllocators come now in 4 sizes
2023-06-04 01:26:43 +03:00
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
1b1f22c35e
Kernel: make load_elf() its own function
2023-06-04 01:24:11 +03:00
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
e3c5477df4
Kernel: reorder process exit steps
2023-06-04 01:19:04 +03:00
b403155ca9
Kernel: You can specify first vaddr for getting free pages
2023-06-04 01:15:48 +03:00
9fd3111011
BAN: Add UniqPtr
2023-06-04 00:39:20 +03:00
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