aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/conf/init.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-11-11 19:46:22 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2022-11-11 19:46:22 +0200
commit1d37792fb7a47135f0e7b7fc245e83bb1d8fc496 (patch)
tree09ec92012bb9d74d5d26bc7a4a7647c36c9acb3e /arch/riscv64/conf/init.c
parent9edd65c48ee75751327c6ee6d42a7009e726d667 (diff)
downloadkmi-1d37792fb7a47135f0e7b7fc245e83bb1d8fc496.tar.gz
kmi-1d37792fb7a47135f0e7b7fc245e83bb1d8fc496.zip
less buggy fork
+ Not strictly done yet, but we can swap between two processes :D
Diffstat (limited to 'arch/riscv64/conf/init.c')
-rw-r--r--arch/riscv64/conf/init.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/riscv64/conf/init.c b/arch/riscv64/conf/init.c
index 1886760..45274d9 100644
--- a/arch/riscv64/conf/init.c
+++ b/arch/riscv64/conf/init.c
@@ -133,10 +133,15 @@ void _start()
if (pid != 0) {
print_value("Child pid: ", pid);
puts("Swapping to child...\n");
- sys_swap(pid);
- puts("We shouldn't be here?\n");
- while(1);
+ while(1) sys_swap(pid);
}
puts("Hello from child!\n");
+
+ puts("Doing 1M swaps...\n");
+ start = sys_ticks();
+ for (long i = 0; i < 1000000; ++i)
+ sys_swap(1);
+ uint64_t ticks = sys_ticks() - start;
+ print_value("1M swaps took ", ticks / second);
}