From: Marco Schlumpp Date: Thu, 6 Apr 2023 16:56:16 +0000 (+0200) Subject: Use unikraft syscalls for futex X-Git-Tag: RELEASE-0.14.0~4 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=39cdd0fba4706b67025bcc111ec4b1913d9a1bc2;p=unikraft%2Flibs%2Flibcxx.git Use unikraft syscalls for futex Signed-off-by: Marco Schlumpp Signed-off-by: Andrei Tatar Reviewed-by: Stefan Jumarea Reviewed-by: Maria Sfiraiala Reviewed-by: Razvan Deaconescu Approved-by: Eduard Vintilă Tested-by: Unikraft CI GitHub-Closes: #28 --- diff --git a/patches/0000-atomic_futex_syscall.patch b/patches/0000-atomic_futex_syscall.patch new file mode 100644 index 0000000..76d05ec --- /dev/null +++ b/patches/0000-atomic_futex_syscall.patch @@ -0,0 +1,27 @@ +diff --git a/src/atomic.cpp b/src/atomic.cpp +--- a/src/atomic.cpp ++++ b/src/atomic.cpp (date 1680772930656) +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + // libc++ uses SYS_futex as a universal syscall name. However, on 32 bit architectures + // with a 64 bit time_t, we need to specify SYS_futex_time64. +@@ -45,13 +46,13 @@ + __cxx_contention_t __val) + { + static constexpr timespec __timeout = { 2, 0 }; +- syscall(SYS_futex, __ptr, FUTEX_WAIT_PRIVATE, __val, &__timeout, 0, 0); ++ uk_syscall_static(SYS_futex, __ptr, FUTEX_WAIT_PRIVATE, __val, &__timeout, 0, 0); + } + + static void __libcpp_platform_wake_by_address(__cxx_atomic_contention_t const volatile* __ptr, + bool __notify_one) + { +- syscall(SYS_futex, __ptr, FUTEX_WAKE_PRIVATE, __notify_one ? 1 : INT_MAX, 0, 0, 0); ++ uk_syscall_static(SYS_futex, __ptr, FUTEX_WAKE_PRIVATE, __notify_one ? 1 : INT_MAX, 0, 0, 0); + } + + #elif defined(__APPLE__) && defined(_LIBCPP_USE_ULOCK)