aboutsummaryrefslogtreecommitdiff
path: root/core/sync/sync_linux.odin
diff options
context:
space:
mode:
Diffstat (limited to 'core/sync/sync_linux.odin')
-rw-r--r--core/sync/sync_linux.odin12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/sync/sync_linux.odin b/core/sync/sync_linux.odin
index 74f2b1e87..aa3c7a068 100644
--- a/core/sync/sync_linux.odin
+++ b/core/sync/sync_linux.odin
@@ -2,6 +2,18 @@ package sync
import "core:sys/unix"
+foreign import libc "system:c"
+
+current_thread_id :: proc "contextless" () -> int {
+ foreign libc {
+ syscall :: proc(number: i32, #c_vararg args: ..any) -> i32 ---
+ }
+
+ SYS_GETTID :: 186;
+ return int(syscall(SYS_GETTID));
+}
+
+
// The Darwin docs say it best:
// A semaphore is much like a lock, except that a finite number of threads can hold it simultaneously.
// Semaphores can be thought of as being much like piles of tokens; multiple threads can take these tokens,