aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-11-02check spawn exhaustionKimplul
2024-11-02add spawn benchmarkKimplul
2024-11-02intial working sys_spawnKimplul
2024-11-02initial exec supportKimplul
2024-11-01use correct sfence.vmaKimplul
2024-11-01simplify enter_rpc, remove finalize_rpcKimplul
+ The simulated benchmarks shows very slightly more than 2M requests per second, new record!
2024-11-01calculate rpc stack top slightly differentlyKimplul
+ Saves a multiplication, very minor
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