diff options
author | Tom <tomut@yahoo.com> | 2020-12-21 23:21:58 -0700 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-01-17 20:30:31 +0100 |
commit | 1d621ab1725d1eba0fafef4575aef72682cd57ad (patch) | |
tree | b30a1d63d09e70722fe04a45c6e96522d3a295bc /Kernel/API | |
parent | 7581b64705ed3c5b3711c956504f278c2ea3899e (diff) | |
download | serenity-1d621ab1725d1eba0fafef4575aef72682cd57ad.zip |
Kernel: Some futex improvements
This adds support for FUTEX_WAKE_OP, FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET,
FUTEX_REQUEUE, and FUTEX_CMP_REQUEUE, as well well as global and private
futex and absolute/relative timeouts against the appropriate clock. This
also changes the implementation so that kernel resources are only used when
a thread is blocked on a futex.
Global futexes are implemented as offsets in VMObjects, so that different
processes can share a futex against the same VMObject despite potentially
being mapped at different virtual addresses.
Diffstat (limited to 'Kernel/API')
-rw-r--r-- | Kernel/API/Syscall.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index f236616c41..26a14416d1 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -310,10 +310,15 @@ struct SC_getpeername_params { }; struct SC_futex_params { - const i32* userspace_address; + u32* userspace_address; int futex_op; - i32 val; - const timespec* timeout; + u32 val; + union { + const timespec* timeout; + u32 val2; + }; + u32* userspace_address2; + u32 val3; }; struct SC_setkeymap_params { |