| Age | Commit message (Collapse) | Author |
|
|
|
+ Speeds up fork a little bit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ Worked in qemu, failed in visionfive2, fixed.
|
|
+ Processes won't be able to read previous stack frames etc
|
|
|
|
|
|
|
|
|
|
|
|
+ Now each shared region is reference counter (technically each region
is refernce counted, private regions just have a count of 1).
Also, syscalls that touch the TLB get flushed, but should probably
look into where else this flushing might be needed.
|
|
|
|
+ get_mem_node() clears out the memory so we don't accidentally read
stale flags
+ Thread creation simplified a bit, each thread references itself
and data freeing is based on when the reference count reaches zero.
|
|
|
|
+ Skip unwinding stack and just jump directly to userspace
|
|
|
|
|
|
+ Apparently primary bottlenecks for sys_fork() and sys_create(),
speeds things up quite a bit
|
|
|
|
|
|
|
|
|
|
+ Remove sys_kill() as we should be using a two-stage process where a
thread is first orphaned by sys_detach(), and then the thread itself
calls sys_exit() after it has done all necessary cleanup in init.
|
|
|
|
|
|
|
|
+ A bit easier to implement just ignoring the ipc_resp() arguments than
try to enforce that a notification is exited from by ipc_ghost(),
especially in cases where the root process has been killed.
|
|
|
|
|
|
|
|
|
|
|
|
+ Currently analyzer has to be run manually with something like
make CFLAGS='-fanalyzer -Wno-analyzer-infinite-loop'
I use an infinite loop as an assert, I know it's not great/technically
UB but it's just a fallback.
+ Analyzer is still somewhat limited, I could add in more
attributes about different functions, such as memory allocation sizes
etc.
+ If I ever set up a CI pipeline, remember to use analyzer?
|
|
+ Seems to improve code quality a little bit
|
|
+ ipc_kick() does a forward and a tail at the same time
The idea with ipc_tail() is to allow 'trusted' calls, so for example a
process is not allowed to willy-nilly open a file, as it has to go via
init(), making the eid 1. This way the receiver can know that the
request has gone through init() and can open up a new connection
(file, whatever) after which requests from that pid/tid are allowed
without init() intervention
|
|
+ Accidentally included, should really be more observant
|
|
|
|
+ At least by my standards. Some amount of scripting going on, but
should still be fine.
Effectively, source.mk contains information to build the test,
check.mk checks the generated log from running the test. As a results,
check.mk should output OK into reports/$TEST/OK if everything went
well, and anything else otherwise. The user can then look at
reports/$TEST/log to see what went wrong.
I expect to add some more features, such as starting QEMU with gdb and
running a single test a bit easier than right now (same limitation as
in the top level makefile, i.e. you have to specify
make -f scripts/makefile $TEST
from within `tests` and you must have ran `make check` at that point
so that `tests.mk` is fully generated. Not huge issues, but slightly
annoying, somewhat unsure how to work around them properly but we'll
see.
|
|
|
|
|
|
+ Can be used to build fast hashmaps to speed up ipc
|
|
|
|
|
|
|