datadog-ruby_core_source 3.5.4 → 3.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/datadog-ruby_core_source.gemspec +1 -1
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/build_assert/build_assert.h +40 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/check_type/check_type.h +63 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/container_of/container_of.h +142 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/list/list.h +788 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/str/str.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/id.h +252 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/internal.h +2465 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/iseq.h +304 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/method.h +229 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/node.h +449 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ruby_assert.h +60 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ruby_atomic.h +244 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/thread_pthread.h +75 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/thread_win32.h +36 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/vm_core.h +1902 -0
- data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/vm_opts.h +70 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/build_assert/build_assert.h +40 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/check_type/check_type.h +63 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/container_of/container_of.h +142 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/list/list.h +788 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/str/str.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/id.h +290 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/internal.h +2697 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/iseq.h +312 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/method.h +229 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/node.h +476 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ruby_assert.h +15 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ruby_atomic.h +244 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/thread_pthread.h +75 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/thread_win32.h +36 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/vm_core.h +1968 -0
- data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/vm_opts.h +72 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/build_assert/build_assert.h +40 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/check_type/check_type.h +63 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/container_of/container_of.h +142 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/list/list.h +788 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/str/str.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/id.h +290 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/id_table.h +36 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/iseq.h +305 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/method.h +245 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/node.h +484 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ruby_assert.h +15 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/thread_pthread.h +115 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/thread_win32.h +61 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/vm_core.h +2023 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
- data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/vm_opts.h +73 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/build_assert/build_assert.h +40 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/check_type/check_type.h +63 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/container_of/container_of.h +142 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/list/list.h +788 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/str/str.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/darray.h +198 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/id.h +293 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/id_table.h +36 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/array.h +113 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/class.h +196 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/compilers.h +107 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/gc.h +186 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/imemo.h +243 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/serial.h +23 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/static_assert.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/vm.h +133 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/warnings.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal.h +109 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/iseq.h +322 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/method.h +253 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/node.h +510 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ractor_core.h +346 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ruby_assert.h +14 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ruby_atomic.h +23 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/thread_pthread.h +115 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/vm_core.h +2107 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/vm_debug.h +124 -0
- data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/vm_opts.h +73 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/build_assert/build_assert.h +40 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/check_type/check_type.h +63 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/container_of/container_of.h +142 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/list/list.h +789 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/str/str.h +17 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/id.h +299 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/id_table.h +39 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/array.h +163 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/basic_operators.h +64 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/class.h +182 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/compilers.h +107 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/gc.h +192 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/imemo.h +242 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/serial.h +23 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/static_assert.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/vm.h +134 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/warnings.h +16 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal.h +113 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/iseq.h +329 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/method.h +254 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/node.h +514 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ractor_core.h +342 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ruby_assert.h +14 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ruby_atomic.h +23 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/shape.h +232 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/thread_none.h +20 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/thread_pthread.h +133 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/vm_core.h +2106 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/vm_debug.h +122 -0
- data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/vm_opts.h +73 -0
- data/lib/datadog/ruby_core_source/version.rb +1 -1
- metadata +122 -4
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#ifndef RUBY_THREAD_PTHREAD_H
|
|
2
|
+
#define RUBY_THREAD_PTHREAD_H
|
|
3
|
+
/**********************************************************************
|
|
4
|
+
|
|
5
|
+
thread_pthread.h -
|
|
6
|
+
|
|
7
|
+
$Author$
|
|
8
|
+
|
|
9
|
+
Copyright (C) 2004-2007 Koichi Sasada
|
|
10
|
+
|
|
11
|
+
**********************************************************************/
|
|
12
|
+
|
|
13
|
+
#ifdef HAVE_PTHREAD_NP_H
|
|
14
|
+
#include <pthread_np.h>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
|
|
18
|
+
#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
|
|
19
|
+
|
|
20
|
+
// per-Thead scheduler helper data
|
|
21
|
+
struct rb_thread_sched_item {
|
|
22
|
+
union {
|
|
23
|
+
struct ccan_list_node ubf;
|
|
24
|
+
struct ccan_list_node readyq; // protected by sched->lock
|
|
25
|
+
} node;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
struct rb_native_thread {
|
|
29
|
+
int id;
|
|
30
|
+
|
|
31
|
+
rb_nativethread_id_t thread_id;
|
|
32
|
+
|
|
33
|
+
#ifdef RB_THREAD_T_HAS_NATIVE_ID
|
|
34
|
+
int tid;
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
struct rb_thread_struct *running_thread;
|
|
38
|
+
|
|
39
|
+
// to control native thread
|
|
40
|
+
#if defined(__GLIBC__) || defined(__FreeBSD__)
|
|
41
|
+
union
|
|
42
|
+
#else
|
|
43
|
+
/*
|
|
44
|
+
* assume the platform condvars are badly implemented and have a
|
|
45
|
+
* "memory" of which mutex they're associated with
|
|
46
|
+
*/
|
|
47
|
+
struct
|
|
48
|
+
#endif
|
|
49
|
+
{
|
|
50
|
+
rb_nativethread_cond_t intr; /* th->interrupt_lock */
|
|
51
|
+
rb_nativethread_cond_t readyq; /* use sched->lock */
|
|
52
|
+
} cond;
|
|
53
|
+
|
|
54
|
+
#ifdef USE_SIGALTSTACK
|
|
55
|
+
void *altstack;
|
|
56
|
+
#endif
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
#undef except
|
|
60
|
+
#undef try
|
|
61
|
+
#undef leave
|
|
62
|
+
#undef finally
|
|
63
|
+
|
|
64
|
+
// per-Ractor
|
|
65
|
+
struct rb_thread_sched {
|
|
66
|
+
/* fast path */
|
|
67
|
+
|
|
68
|
+
const struct rb_thread_struct *running; // running thread or NULL
|
|
69
|
+
rb_nativethread_lock_t lock;
|
|
70
|
+
|
|
71
|
+
/*
|
|
72
|
+
* slow path, protected by ractor->thread_sched->lock
|
|
73
|
+
* - @readyq - FIFO queue of threads waiting for running
|
|
74
|
+
* - @timer - it handles timeslices for @current. It is any one thread
|
|
75
|
+
* in @waitq, there is no @timer if @waitq is empty, but always
|
|
76
|
+
* a @timer if @waitq has entries
|
|
77
|
+
* - @timer_err tracks timeslice limit, the timeslice only resets
|
|
78
|
+
* when pthread_cond_timedwait returns ETIMEDOUT, so frequent
|
|
79
|
+
* switching between contended/uncontended GVL won't reset the
|
|
80
|
+
* timer.
|
|
81
|
+
*/
|
|
82
|
+
struct ccan_list_head readyq;
|
|
83
|
+
const struct rb_thread_struct *timer;
|
|
84
|
+
int timer_err;
|
|
85
|
+
|
|
86
|
+
/* yield */
|
|
87
|
+
rb_nativethread_cond_t switch_cond;
|
|
88
|
+
rb_nativethread_cond_t switch_wait_cond;
|
|
89
|
+
int need_yield;
|
|
90
|
+
int wait_yield;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
#ifndef RB_THREAD_LOCAL_SPECIFIER_IS_UNSUPPORTED
|
|
94
|
+
# if __STDC_VERSION__ >= 201112
|
|
95
|
+
# define RB_THREAD_LOCAL_SPECIFIER _Thread_local
|
|
96
|
+
# elif defined(__GNUC__)
|
|
97
|
+
/* note that ICC (linux) and Clang are covered by __GNUC__ */
|
|
98
|
+
# define RB_THREAD_LOCAL_SPECIFIER __thread
|
|
99
|
+
# endif
|
|
100
|
+
#endif
|
|
101
|
+
|
|
102
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
|
103
|
+
#ifdef RB_THREAD_LOCAL_SPECIFIER
|
|
104
|
+
# ifdef __APPLE__
|
|
105
|
+
// on Darwin, TLS can not be accessed across .so
|
|
106
|
+
struct rb_execution_context_struct *rb_current_ec(void);
|
|
107
|
+
void rb_current_ec_set(struct rb_execution_context_struct *);
|
|
108
|
+
# else
|
|
109
|
+
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct *ruby_current_ec;
|
|
110
|
+
# endif
|
|
111
|
+
#else
|
|
112
|
+
typedef pthread_key_t native_tls_key_t;
|
|
113
|
+
|
|
114
|
+
static inline void *
|
|
115
|
+
native_tls_get(native_tls_key_t key)
|
|
116
|
+
{
|
|
117
|
+
// return value should be checked by caller
|
|
118
|
+
return pthread_getspecific(key);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static inline void
|
|
122
|
+
native_tls_set(native_tls_key_t key, void *ptr)
|
|
123
|
+
{
|
|
124
|
+
if (UNLIKELY(pthread_setspecific(key, ptr) != 0)) {
|
|
125
|
+
rb_bug("pthread_setspecific error");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
RUBY_EXTERN native_tls_key_t ruby_current_ec_key;
|
|
130
|
+
#endif
|
|
131
|
+
RUBY_SYMBOL_EXPORT_END
|
|
132
|
+
|
|
133
|
+
#endif /* RUBY_THREAD_PTHREAD_H */
|