1#ifndef RUBY_THREAD_PTHREAD_H
2#define RUBY_THREAD_PTHREAD_H
16#ifdef HAVE_PTHREAD_NP_H
17#include <pthread_np.h>
20#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
21#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
24#if defined(__arm64__) || defined(__aarch64__) || defined(__powerpc64__)
25# define RB_THREAD_CURRENT_EC_NOINLINE
28#include "thread_sched.h"
30#ifdef RB_THREAD_LOCAL_SPECIFIER
33 # ifdef RB_THREAD_CURRENT_EC_NOINLINE
40 #define RUBY_NT_SERIAL 1
43typedef pthread_key_t native_tls_key_t;
46native_tls_get(native_tls_key_t key)
49 return pthread_getspecific(key);
53native_tls_set(native_tls_key_t key,
void *ptr)
55 if (UNLIKELY(pthread_setspecific(key, ptr) != 0)) {
56 rb_bug(
"pthread_setspecific error");
std::atomic< unsigned > rb_atomic_t
Type that is eligible for atomic operations.
#define RUBY_EXTERN
Declaration of externally visible global variables.