mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:28:12 +00:00
LibPthread: Use realtime clock for futex_wait()
If we get an absolute time passed to one of the pthread_*wait methods, this is not an absolute monotonic time but rather an absolute wall time. This means that we also need to pass FUTEX_CLOCK_REALTIME to the futex syscall to ensure we're not using the monotonic clock.
This commit is contained in:
parent
b630e39fbb
commit
d1f33ec795
1 changed files with 1 additions and 1 deletions
|
@ -442,7 +442,7 @@ static int futex_wait(uint32_t& futex_addr, uint32_t value, const struct timespe
|
|||
{
|
||||
int saved_errno = errno;
|
||||
// NOTE: FUTEX_WAIT takes a relative timeout, so use FUTEX_WAIT_BITSET instead!
|
||||
int rc = futex(&futex_addr, FUTEX_WAIT_BITSET, value, abstime, nullptr, FUTEX_BITSET_MATCH_ANY);
|
||||
int rc = futex(&futex_addr, FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, value, abstime, nullptr, FUTEX_BITSET_MATCH_ANY);
|
||||
if (rc < 0 && errno == EAGAIN) {
|
||||
// If we didn't wait, that's not an error
|
||||
errno = saved_errno;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue