diff options
author | Himbeer <himbeer@disroot.org> | 2024-07-21 18:06:59 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-07-21 18:06:59 +0200 |
commit | cdb4d0686a2d08fa3b4283d4f8ae72577d59e5da (patch) | |
tree | 928f872844c20976488f779939c0762e3c5cd9da /examples/create_process | |
parent | 7ce0203226e008933decc7c3707c0c2285234e74 (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.zig | 9 | ||||
-rw-r--r-- | examples/create_process/src/main2.zig | 9 |
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" + ); } |