aboutsummaryrefslogtreecommitdiff
path: root/examples/create_process
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-07-21 18:06:59 +0200
committerHimbeer <himbeer@disroot.org>2024-07-21 18:06:59 +0200
commitcdb4d0686a2d08fa3b4283d4f8ae72577d59e5da (patch)
tree928f872844c20976488f779939c0762e3c5cd9da /examples/create_process
parent7ce0203226e008933decc7c3707c0c2285234e74 (diff)
create_process: Terminate both programs cleanly
This ensures that the second program gets a chance to run instead of the first program causing a kernel panic by returning to null.
Diffstat (limited to 'examples/create_process')
-rw-r--r--examples/create_process/src/main.zig9
-rw-r--r--examples/create_process/src/main2.zig9
2 files changed, 18 insertions, 0 deletions
diff --git a/examples/create_process/src/main.zig b/examples/create_process/src/main.zig
index b806ca3..5d093de 100644
--- a/examples/create_process/src/main.zig
+++ b/examples/create_process/src/main.zig
@@ -27,4 +27,13 @@ pub fn main() void {
[program] "{a1}" (program.ptr),
: "a7"
);
+
+ const term_path = "/process/self/terminate\x00";
+ asm volatile (
+ \\ li a7, 100001
+ \\ ecall
+ :
+ : [path] "{a0}" (term_path.ptr),
+ : "a7", "a1"
+ );
}
diff --git a/examples/create_process/src/main2.zig b/examples/create_process/src/main2.zig
index d8efab7..11d99ec 100644
--- a/examples/create_process/src/main2.zig
+++ b/examples/create_process/src/main2.zig
@@ -16,4 +16,13 @@ pub fn main() void {
[len] "{a1}" (msg.len),
: "a7"
);
+
+ const term_path = "/process/self/terminate\x00";
+ asm volatile (
+ \\ li a7, 100001
+ \\ ecall
+ :
+ : [path] "{a0}" (term_path.ptr),
+ : "a7", "a1"
+ );
}