24f0d26fce
LibC: Implement basic dirent functionality
...
We don't currently support seeking
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
f7de310889
LibC: add missing O_EXEC and O_SEARCH
2023-06-11 00:17:18 +03:00
e209ca7c82
Kernel: Rewrite directory listing so it can be integrated to libc
2023-06-11 00:17:18 +03:00
ee8de77a90
Userspace: fix return values of cat and echo
2023-06-10 17:34:10 +03:00
db49cbd6e2
Kernel: We now store the processes exit code
2023-06-10 17:31:56 +03:00
e001eecb7b
Userspace: add exit to shell
2023-06-09 01:51:23 +03:00
7f34d00c95
Userspace: add echo
2023-06-09 01:50:18 +03:00
2c18adbddd
Userspace: add ^L support for shell
2023-06-09 01:24:33 +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
6aff459e1c
BAN: add StringView::contains(char)
2023-06-05 22:51:02 +03:00
0b1b4d8f7e
Kernel: exec now has better posix errors
2023-06-05 21:12:08 +03:00
3fc2c3529a
Shell: load old termios for process execution
2023-06-05 21:12:08 +03:00
b0e9ab0519
Kernel/LibC: pass environ pointer to process
2023-06-05 21:12:08 +03:00
668517a723
Kernel: TTY now actually flushes on ^D
2023-06-05 20:21:46 +03:00
649f08ec78
Kernel: verify that loaded elfs are executable
2023-06-05 19:29:32 +03:00
2f2c298c68
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
90e48970e6
Shell: we now support left/right arrows
2023-06-05 18:24:41 +03:00
480842a203
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
5425394880
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
a365813fa9
BuildSystem: disable nls from gcc
2023-06-05 17:55:47 +03:00
9d64dbd5c2
Kernel/LibC: add SYS_STAT and stat(), lstat()
2023-06-05 14:37:14 +03:00
30bb61a775
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
1f36ed0cf9
Userspace: Start work on proper shell
2023-06-05 01:42:57 +03:00
d54c76f88a
Base: /lib and /bin are now absolute symlinks
2023-06-04 18:12:05 +03:00
cbb9f47ee5
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
b68d5a5833
Kernel: Add SYS_WAIT
...
This syscall waits for a given pid.
2023-06-04 18:00:52 +03:00
94d2090777
Kernel: fork() now clones current thread
...
This is how posix specifies thread cloning during fork
2023-06-04 17:40:37 +03:00
e97585daf9
Kernel: Process FixedWidthAllocators come now in 4 sizes
2023-06-04 01:26:43 +03:00
924fc2118c
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
51f4c0c750
Kernel: make load_elf() its own function
2023-06-04 01:24:11 +03:00
37b93da650
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
35e739dcdd
Kernel: reorder process exit steps
2023-06-04 01:19:04 +03:00
8352392b38
Kernel: You can specify first vaddr for getting free pages
2023-06-04 01:15:48 +03:00
413f05bfca
BAN: Add UniqPtr
2023-06-04 00:39:20 +03:00
dc1aff58ed
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
9f75d9cfe5
Kernel: PageTable now has debug_dump
...
This dumps all the mapped pages and their flags
2023-06-03 20:08:13 +03:00
a42af7e973
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
2ce244d303
BAN: Errors now includes assert.h
2023-06-03 18:53:05 +03:00
a775a920d0
BuildSystem: remove sse and sse2 from userspace
2023-06-03 16:05:32 +03:00