fix: more robust futex calls
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user