aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-01-02 22:13:49 +0000
committergingerBill <bill@gingerbill.org>2023-01-02 22:13:49 +0000
commitbc9ee8e1a4ce797a894e5648fa92216c212b6999 (patch)
tree5b4d860861c41a3502ad51c75c760fd5b0942d45 /src
parentd36c3c2590d28bbfc8bc887b9dd0aebc3ac92667 (diff)
Remove loops within futex signals on Linux
Diffstat (limited to 'src')
-rw-r--r--src/check_decl.cpp2
-rw-r--r--src/threading.cpp24
2 files changed, 9 insertions, 17 deletions
diff --git a/src/check_decl.cpp b/src/check_decl.cpp
index 32d50e36d..2b6868f05 100644
--- a/src/check_decl.cpp
+++ b/src/check_decl.cpp
@@ -1471,7 +1471,7 @@ gb_internal bool check_proc_body(CheckerContext *ctx_, Token token, DeclInfo *de
continue;
}
if (is_blank_ident(e->token)) {
- error(e->token, "'using' a procedure parameter requires a non blank identifier");
+ error(e->token, "'using' a procedure parameter requires a non blank identifier");
break;
}
diff --git a/src/threading.cpp b/src/threading.cpp
index cda8fe89b..aca77cd8f 100644
--- a/src/threading.cpp
+++ b/src/threading.cpp
@@ -472,26 +472,18 @@ gb_internal void thread_set_name(Thread *t, char const *name) {
#include <sys/syscall.h>
gb_internal void futex_signal(Futex *addr) {
- for (;;) {
- int ret = syscall(SYS_futex, addr, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, 1, NULL, NULL, 0);
- if (ret == -1) {
- perror("Futex wake");
- GB_PANIC("Failed in futex wake!\n");
- } else if (ret > 0) {
- return;
- }
+ int ret = syscall(SYS_futex, addr, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, 1, NULL, NULL, 0);
+ if (ret == -1) {
+ perror("Futex wake");
+ GB_PANIC("Failed in futex wake!\n");
}
}
gb_internal void futex_broadcast(Futex *addr) {
- for (;;) {
- int ret = syscall(SYS_futex, addr, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, INT32_MAX, NULL, NULL, 0);
- if (ret == -1) {
- perror("Futex wake");
- GB_PANIC("Failed in futex wake!\n");
- } else if (ret > 0) {
- return;
- }
+ int ret = syscall(SYS_futex, addr, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, INT32_MAX, NULL, NULL, 0);
+ if (ret == -1) {
+ perror("Futex wake");
+ GB_PANIC("Failed in futex wake!\n");
}
}