1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 09:37:44 +00:00

Kernel+Userland: Remove global futexes

We only ever use private futexes, so it doesn't make sense to carry
around all the complexity required for global (cross-process) futexes.
This commit is contained in:
Andreas Kling 2021-08-16 23:29:25 +02:00
parent 7979b5a8bb
commit 4226b662cd
8 changed files with 48 additions and 188 deletions

View file

@ -31,18 +31,18 @@ static ALWAYS_INLINE int futex_wait(uint32_t* userspace_address, uint32_t value,
if (abstime) {
// NOTE: FUTEX_WAIT takes a relative timeout, so use FUTEX_WAIT_BITSET instead!
op = FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG;
op = FUTEX_WAIT_BITSET;
if (clockid == CLOCK_REALTIME || clockid == CLOCK_REALTIME_COARSE)
op |= FUTEX_CLOCK_REALTIME;
} else {
op = FUTEX_WAIT | FUTEX_PRIVATE_FLAG;
op = FUTEX_WAIT;
}
return futex(userspace_address, op, value, abstime, nullptr, FUTEX_BITSET_MATCH_ANY);
}
static ALWAYS_INLINE int futex_wake(uint32_t* userspace_address, uint32_t count)
{
return futex(userspace_address, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, count, NULL, NULL, 0);
return futex(userspace_address, FUTEX_WAKE, count, NULL, NULL, 0);
}
int purge(int mode);