1e2c2fb973
Shell: Set get old termios earlier
...
I sourced the config file before getting old termios. Sourcing
updated the termios so old_termios was always in non canonical, non
echoing mode.
2023-10-24 19:10:53 +03:00
adbbdf73c4
meminfo: fix g++ warning for oob write
...
g++ doesn't realize that read can only return -1
2023-10-24 16:50:21 +03:00
f0820e6f24
Shell: Fix parsing $ with unknown character
2023-10-12 22:24:27 +03:00
7ce8e2d57b
cat: Use write() instead of puts to print file contents
...
This allows printing files that contain null bytes behave more like
you would expect
2023-10-04 22:16:19 +03:00
e780eaa45f
meminfo: Print allocated physical memory percentage
2023-10-03 10:39:27 +03:00
44cb0af64f
Shell: source $HOME/.shellrc if found on Shell startup
2023-10-03 10:39:27 +03:00
bb0989fdef
Shell: Implement sourcing scripts
2023-10-03 10:24:10 +03:00
f0b6844feb
meminfo: Add process command line to the output
2023-09-30 23:17:31 +03:00
797ca65c66
Kernel: Add physical memory info to /proc/{pid}/meminfo
2023-09-30 22:11:45 +03:00
762b7a4276
Userspace: Add meminfo command that parses /proc/{pid}/meminfo
2023-09-30 21:20:53 +03:00
94ce2c97be
Shell: Quick fix to not freeze for multiple seconds
...
When sync is writing to disk, it reserves whole disk to itself.
This commit makes Shell to read username only once from getpwuid().
We used to get username every time prompt was printed.
2023-09-29 19:20:48 +03:00
3f164c6b82
Userspace: Implement basic test for MAP_SHARED
2023-09-29 18:59:37 +03:00
7a5bb6a56b
Userspace: Implement cat-mmap
...
This behaves exactly as cat, but uses mmap to read the file.
2023-09-29 17:24:55 +03:00
79851394b3
Kernel/LibC/Userspace: Add SYS_POWEROFF + cli tool
...
You can now shutdown/reboot banan-os with the poweroff cli tool.
Reboot doesn't seem to work on qemu.
2023-09-28 12:36:47 +03:00
85b1252b9e
Userspace: Use printf length modifiers when printing
2023-09-28 11:49:31 +03:00
c84b66d078
Shell: String leading and trailing whitespace from commands
...
This fixes a bug of inserting empty argument if command had trailing
whitespace
2023-09-28 10:28:49 +03:00
ec2baeb276
Sync: Add some argument parsing to sync(1)
...
You can specify --block to make the program wait until sync is
complete.
2023-09-27 00:37:23 +03:00
fc953df281
Kernel/LibC: remove PATH resoltion from kernel
...
I have no idea why I had made PATH environment variable parsing
to be part of the kernel. Now the shell does the parsing and
environment syscall is no longer needed.
2023-09-23 03:08:14 +03:00
5fae3cec2a
Kernel: Implement SYS_SYNC and add sync executable to userspace
...
You can (and have to) manually sync disk after writes to it.
2023-09-11 01:26:27 +03:00
9b4e2e1e21
Kernel: Add basic dd command
...
This only supports if, of, bs, count and status=progress
2023-09-10 01:19:47 +03:00
720bc418a6
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
afe95be42f
Shell: Clean exit on ^D and use getchar()
...
Use getchar() instead of fread(&ch, 1, sizeof(char), stdin). This
is much cleaner.
2023-09-07 15:51:05 +03:00
14ac1c9904
Init: use read instead of fread()
...
This allows actually correct behaviour. My fread implementation is
flawed. It should not return on '\n'
2023-09-07 15:47:59 +03:00
4363118d9d
Snake render grid lines without extra space after last '#'
2023-09-05 14:35:53 +03:00
f46f5b2050
Snake: Reorder apple generation/snake body update
...
If new apple was generated to heads previous position after update,
it would not render.
2023-09-05 14:30:30 +03:00
ddd36af0f1
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
2e2a913412
Userspace: Implement basic snake game :)
2023-09-04 14:30:45 +03:00
b05cf9ef09
BuildSystem: Base sysroot is now distributed as a tar ball
...
This allows file and directory permissions work as intended.
cmake is now filled with 'sudo' but with sudo timeout this should be
fine.
2023-08-23 10:38:21 +03:00
a74eb357a1
Shell: hostname is not parsed from /etc/hostname
2023-08-23 10:38:21 +03:00
8eb71084f0
Shell: use process groups more properly
2023-08-22 14:54:50 +03:00
6ada36d3cb
Shell/init: We now use pgrp instead of pid and init open terminal
2023-08-22 11:37:04 +03:00
30463c9082
Id: Print username corresponding to uid/euid
...
Also print euid and egid if they differ from uid or gid.
2023-08-18 15:36:51 +03:00
eb98d70a0b
Shell: command execution and parsing support piped commands
...
There is still problems with "blocking" builtin commands (time),
return value, ...
2023-08-17 12:05:38 +03:00
5bd7099b96
Shell: add basic printf test
2023-08-16 10:49:34 +03:00
5806a6484f
cat: use 1025 buffer. this allows reads to be 1024 byte
...
reading from disk currently returns ENOTSUP if buffer size is not
multiple of sector size.
2023-08-16 09:33:14 +03:00
0fa5401800
Shell: $? returns last return value
2023-08-15 09:17:46 +03:00
b30f4cbfb5
Userspace: Add basic whoami command
2023-08-15 09:03:51 +03:00
ba37183c9c
Shell: '\u' in PS1 is replaced with username corresponding to euid
2023-08-14 14:55:23 +03:00
2f298a1979
Shell: ^A moves cursor to the beginning of line
2023-08-14 12:26:22 +03:00
313b00b11f
Userspace: implement basic stat
...
I tried to format the output pretty much how linux does, except for
uid and git -> name resolution which is not implemented
2023-08-11 10:30:50 +03:00
9fe878bbec
Shell: Print if the process exited because of a signal
2023-08-01 14:24:36 +03:00
679d47131d
BuildSystem: Edit build flags regarding sse and warnings
2023-07-31 22:31:17 +03:00
5e434f5131
Kernel: Hardware exceptions now sends signals to userspace
2023-07-30 14:34:15 +03:00
00f1f30a08
Kernel: Userspace sets the foreground process and Shell handles ^C
2023-07-28 18:10:36 +03:00
adb14ba373
Kernel: Userspace signal handlers are now called one at a time
...
I added a syscall for telling the kernel when signal execution has
finished. We should send a random hash or id to the signal trampoline
that we would include in the syscall, so validity of signal exit can
be confirmed.
2023-07-23 13:34:53 +03:00
ad756c36fc
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00
dcd4d0daeb
Kernel/LibC: Add bareboness signals
...
You can now call raise() to raise a signal. Signal handlers are
not yet supported, but the handling works :)
2023-07-21 15:45:02 +03:00
e341a36287
Init: Use the new pwd.h api for user parsing
2023-07-13 12:01:41 +03:00
5c94a583bc
Userspace: add basic 'touch' command
2023-07-10 16:38:15 +03:00
6e1fc2766f
tee: indent with tabs
2023-07-10 16:18:08 +03:00