aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-11-01mark some hot path functions inlineKimplul
+ Gives a hint to the LTO optimizer to more agressively inline the functions, seems to bring a slight performance increase
2024-11-01remove benchmarks autogenerated fileKimplul
2024-11-01flush only current tlb during page faultKimplul
2024-11-01copy rpc stacks directlyKimplul
+ Speeds up fork a little bit
2024-11-01move stack modifications to be earlier in rpcKimplul
2024-11-01speed up creating threads quite a bitKimplul
2024-11-01test all ipc variants more-or-less properlyKimplul
2024-11-01formatting and docs updatesKimplul
2024-11-01update some docsKimplul
2024-11-01add note about running on real hardwareKimplul
2024-11-01smp on visionfive2 'works'Kimplul
2024-11-01remember to set regs to some valid addressKimplul
+ Worked in qemu, failed in visionfive2, fixed.
2024-11-01rpc actually marks and unmarks stack regionsKimplul
+ Processes won't be able to read previous stack frames etc
2024-10-30clarify visionfive2 docsKimplul
2024-10-30bookkeepingKimplul
2024-10-30tests passKimplul
2024-10-30most of the way to passing testsKimplul
2024-10-29start moving towards threads always being in rpcKimplul
2024-08-30improvements to shared memory handlingKimplul
+ 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.
2024-08-30add some basic benchmarksKimplul
2024-08-30fix a couple memory issuesKimplul
+ 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.
2024-08-30specify mabi and marchKimplul
2024-08-30speed up ipc_resp a bitKimplul
+ Skip unwinding stack and just jump directly to userspace
2024-08-27convert addr to page in find_closest_used_regionKimplul
2024-08-27add some missing documentationKimplul
2024-08-27add optimizations for memcpy and memsetKimplul
+ Apparently primary bottlenecks for sys_fork() and sys_create(), speeds things up quite a bit
2024-08-26add magic assertKimplul
2024-08-26fix memory leaks destroying threadsKimplul
2024-08-26make sys_create() better + testKimplul
2024-08-26check for running out of memory during forkKimplul
2024-08-26improve killing processes/threads, testKimplul
+ 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.
2024-08-26don't free the physical address of page tablesKimplul
2024-08-26simplify testsKimplul
2024-08-22add fork testKimplul
2024-08-22add ipc_notify testcase, remove ipc_ghostKimplul
+ 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.
2024-08-22add note about testsKimplul
2024-08-22change sys_ret handling to always include idKimplul
2024-08-22add basic ipc-req testKimplul
2024-08-21ensure our memory is actually used up fullyKimplul
2024-08-21add malloc testKimplul
2024-08-18small fixes to issues reported by analyzerKimplul
+ 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?
2024-07-18mark some ipc functions inlineKimplul
+ Seems to improve code quality a little bit
2024-07-18add ipc_tail()Kimplul
+ 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
2024-07-17remove tests.mkKimplul
+ Accidentally included, should really be more observant
2024-07-17replace run with check in READMEKimplul
2024-07-17make tests a bit more sensibleKimplul
+ 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.
2024-07-17cleanup riscv64/confKimplul
2024-07-17make compilation more robust on *BSDKimplul
2024-07-14expose max number of concurrent threads to usersKimplul
+ Can be used to build fast hashmaps to speed up ipc
2024-07-14add some missing docsKimplul