Bananymous
8bb47aee02
Kernel/LibC/Userspace: Implement mkdir and creat
...
Touch now uses creat insteadd of open with O_CREAT flag
2023-10-25 21:07:26 +03:00
Bananymous
9e4adc1264
cp: abort copy if write fails
2023-10-25 02:43:02 +03:00
Bananymous
7a54a088b4
Userspace: Add basic chmod command
2023-10-25 02:37:19 +03:00
Bananymous
e8890062d6
Userspace: Implement basic cp
...
This does not support any meaningful command line arguments but
is a good start.
2023-10-25 00:07:25 +03:00
Bananymous
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
Bananymous
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
Bananymous
f0820e6f24
Shell: Fix parsing $ with unknown character
2023-10-12 22:24:27 +03:00
Bananymous
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
Bananymous
e780eaa45f
meminfo: Print allocated physical memory percentage
2023-10-03 10:39:27 +03:00
Bananymous
44cb0af64f
Shell: source $HOME/.shellrc if found on Shell startup
2023-10-03 10:39:27 +03:00
Bananymous
bb0989fdef
Shell: Implement sourcing scripts
2023-10-03 10:24:10 +03:00
Bananymous
f0b6844feb
meminfo: Add process command line to the output
2023-09-30 23:17:31 +03:00
Bananymous
797ca65c66
Kernel: Add physical memory info to /proc/{pid}/meminfo
2023-09-30 22:11:45 +03:00
Bananymous
762b7a4276
Userspace: Add meminfo command that parses /proc/{pid}/meminfo
2023-09-30 21:20:53 +03:00
Bananymous
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
Bananymous
3f164c6b82
Userspace: Implement basic test for MAP_SHARED
2023-09-29 18:59:37 +03:00
Bananymous
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
Bananymous
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
Bananymous
85b1252b9e
Userspace: Use printf length modifiers when printing
2023-09-28 11:49:31 +03:00
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
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
Bananymous
9b4e2e1e21
Kernel: Add basic dd command
...
This only supports if, of, bs, count and status=progress
2023-09-10 01:19:47 +03:00
Bananymous
720bc418a6
All: Clear lines with only whitspace in them
2023-09-10 00:31:42 +03:00
Bananymous
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
Bananymous
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
Bananymous
4363118d9d
Snake render grid lines without extra space after last '#'
2023-09-05 14:35:53 +03:00
Bananymous
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
Bananymous
ddd36af0f1
Kernel: Add /dev/tty symlink that targets the current tty
2023-09-05 01:07:52 +03:00
Bananymous
2e2a913412
Userspace: Implement basic snake game :)
2023-09-04 14:30:45 +03:00
Bananymous
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
Bananymous
a74eb357a1
Shell: hostname is not parsed from /etc/hostname
2023-08-23 10:38:21 +03:00
Bananymous
8eb71084f0
Shell: use process groups more properly
2023-08-22 14:54:50 +03:00
Bananymous
6ada36d3cb
Shell/init: We now use pgrp instead of pid and init open terminal
2023-08-22 11:37:04 +03:00
Bananymous
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
Bananymous
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
Bananymous
5bd7099b96
Shell: add basic printf test
2023-08-16 10:49:34 +03:00
Bananymous
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
Bananymous
0fa5401800
Shell: $? returns last return value
2023-08-15 09:17:46 +03:00
Bananymous
b30f4cbfb5
Userspace: Add basic whoami command
2023-08-15 09:03:51 +03:00
Bananymous
ba37183c9c
Shell: '\u' in PS1 is replaced with username corresponding to euid
2023-08-14 14:55:23 +03:00
Bananymous
2f298a1979
Shell: ^A moves cursor to the beginning of line
2023-08-14 12:26:22 +03:00
Bananymous
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
Bananymous
9fe878bbec
Shell: Print if the process exited because of a signal
2023-08-01 14:24:36 +03:00
Bananymous
679d47131d
BuildSystem: Edit build flags regarding sse and warnings
2023-07-31 22:31:17 +03:00
Bananymous
5e434f5131
Kernel: Hardware exceptions now sends signals to userspace
2023-07-30 14:34:15 +03:00
Bananymous
00f1f30a08
Kernel: Userspace sets the foreground process and Shell handles ^C
2023-07-28 18:10:36 +03:00
Bananymous
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
Bananymous
ad756c36fc
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00