Age | Commit message (Collapse) | Author |
|
|
|
Error messages should go to stderr so they don't get mixed in with the
program's output. Also added a check for the return value of write().
|
|
I'm not sure why it seemed necessary at some point to open /dev/stdin rather
than simply using the already-open fd 0.
|
|
Also change /bin/cat to open /dev/stdin if no arguments are provided.
|
|
|
|
Plumb it all the way to the VirtualConsole. Also fix /bin/cat to write()
the whole chunks we get from read() directly to stdout.
|
|
It only works for sending a signal to a process that's in userspace code.
We implement reception by synthesizing a PUSHA+PUSHF in the receiving process
(operating on values in the TSS.)
The TSS CS:EIP is then rerouted to the signal handler and a tiny return
trampoline is constructed in a dedicated region in the receiving process.
Also hacked up /bin/kill to be able to send arbitrary signals (kill -N PID)
|
|
Interrupting children of sh now always works with ^C :^)
|
|
For testing, I made cat put itself into a new process group.
This should eventually be done by sh between fork() and exec().
|
|
- sys$readlink + readlink()
- Add a /proc/PID/exe symlink to the process's executable.
- Print symlink contents in ls output.
- Some work on plumbing options into VFS::open().
|
|
I also added a generator cache to FileHandle. This way, multiple
reads to a generated file (i.e in a synthfs) can transparently
handle multiple calls to read() without the contents changing
between calls.
The cache is discarded at EOF (or when the FileHandle is destroyed.)
|
|
It walks the stack and identifies anything that looks like a kernel symbol.
This could be a lot more sophisticated.
|
|
Celebrate the new functionality with a simple /bin/cat implementation. :^)
|