diff --git a/src/agent.jazz b/src/agent.jazz index b6e8dd7..5970011 100644 --- a/src/agent.jazz +++ b/src/agent.jazz @@ -92,14 +92,17 @@ export fn agent_start(reg u64 shared_mem sync_mem private_mem_fd) { key_id = 0; while (true) { - () = #unspill(sync_mem); - futex_op = 0; - val = 0; - timeout = 0; - uaddr2 = 0; - val3 = 0; - woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3); + while { + () = #unspill(sync_mem); + + futex_op = 0; + val = 0; + timeout = 0; + uaddr2 = 0; + val3 = 0; + woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3); + } (woken_up != 0) () = #unspill(shared_mem, sync_mem, private_mem); @@ -117,13 +120,14 @@ export fn agent_start(reg u64 shared_mem sync_mem private_mem_fd) { } } - () = #unspill(sync_mem); - - futex_op = 1; - val = 1; - timeout = 0; - uaddr2 = 0; - val3 = 0; - woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3); + while { + () = #unspill(sync_mem); + futex_op = 1; + val = 1; + timeout = 0; + uaddr2 = 0; + val3 = 0; + woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3); + } (woken_up != 1) } }