Age | Commit message (Collapse) | Author |
|
might potentially be used in a reworked open(), mount() etc interface
|
|
I really should just rename interrupts to something else.
This is inspired by Plan9 and meant to make debugging easier, as the
dying process can take a stacktrace etc.
It kinda sucks that the default handler now depends on fprintf, which is quite
a bit of code, but whatever.
|
|
mostly inspired by Plan 9's Ureg, probably obvious from the name
|
|
|
|
This is meant to facilitate a syscall for returning from interrupts, which
will actually work in the general case as opposed to the current hack, which
only works if the interrupt occured during a syscall (which is correct... for
now).
|
|
To use the same testing methodology as when I've introduced request slots:
before:
/ $ iostress 1 1000000 0 > /dev/vtty
run 0: 2585203
1000000 calls, 0 bytes. avg 2585203
after:
/ $ iostress 1 1000000 0 > /dev/vtty
run 0: 2783171
1000000 calls, 0 bytes. avg 2783171
This is around a 7.7% slowdown - that I hope to fix with a better malloc.
While this doesn't really make the code that much simpler, it doesn't feel
like the right approach in the first place
|
|
|
|
|
|
|
|
|
|
After some consideration this seems like the most fitting way to handle
timekeeping. Directly, the syscall is only useful for keeping time within a
single process, but it is meant to be used for e.g. NTP clients, which will
provide the real time through the VFS.
|
|
|
|
This makes the side-effects more explicit, and feels less hacky than
`HANDLE_PROCFS`. I don't think accessing a handle alone should have
side-effects, even if it's a "special" one.
|
|
|
|
|
|
dash works now :^)))
|
|
|
|
|
|
I'm yet to write proper docs but the TL;DR is:
Mounting /proc/ creates a new pid namespace. You're still visible in the old
namespace with your old pid, but your children won't be. You see your own pid
as 1. Current pids of children will be preserved, pids will be allocated starting
from the highest one of your children.
|
|
|
|
I've wanted to do this for a while, and since I've just had a relatively
large refactor commit (pcpy), this is as good of a time as any.
Typedefing structs was mostly inspired by Plan 9's coding style. It makes
some lines of code much shorter at basically no expense.
Everything related to userland kept old-style struct definitions, so as not
to force that style onto other people.
I also considered changing SCREAMING_ENUM_FIELDS to NicerLookingCamelcase,
but I didn't, just in case that'd be confusing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The old name could have suggested that it held a response to a request
received by fs_wait. The new name is unfortunately very similar to
the `struct vfs_request` already used internally in the kernel, but
it's better at conveying that it contains a filesystem request yet to
be handled.
vfs_request - virtual filesystem request (a bad name in hindsight)
ufs_request - user filesystem request
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ iostress 32 512 0 > /vtty # before
512 calls, 0 bytes. avg 121133
$ iostress 32 512 0 > /vtty # after
512 calls, 0 bytes. avg 103540
103540/121133 = ~85%
I think the tiny bit of added complexity is worth it here.
|
|
|
|
i have been planning to implement something like this for a while now.
it should be faster when doing consecutive syscalls (to be tested).
it will also be helpful in writing the elf loader
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|