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;
|
key_id = 0;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
() = #unspill(sync_mem);
|
|
||||||
|
|
||||||
futex_op = 0;
|
while {
|
||||||
val = 0;
|
() = #unspill(sync_mem);
|
||||||
timeout = 0;
|
|
||||||
uaddr2 = 0;
|
futex_op = 0;
|
||||||
val3 = 0;
|
val = 0;
|
||||||
woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3);
|
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);
|
() = #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);
|
while {
|
||||||
|
() = #unspill(sync_mem);
|
||||||
futex_op = 1;
|
futex_op = 1;
|
||||||
val = 1;
|
val = 1;
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
uaddr2 = 0;
|
uaddr2 = 0;
|
||||||
val3 = 0;
|
val3 = 0;
|
||||||
woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3);
|
woken_up = #futex(sync_mem, futex_op, val, timeout, uaddr2, val3);
|
||||||
|
} (woken_up != 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user