Skip to content

Commit 5e3259e

Browse files
committed
fix public interface
To make some kind of Ractor related extensions, some functions should be exposed. * include/ruby/thread_native.h * rb_native_mutex_* * rb_native_cond_* * include/ruby/ractor.h * RB_OBJ_SHAREABLE_P(obj) * rb_ractor_shareable_p(obj) * rb_ractor_std*() * rb_cRactor and rm ractor_pub.h and rename srcdir/ractor.h to srcdir/ractor_core.h (to avoid conflict with include/ruby/ractor.h)
1 parent 0683912 commit 5e3259e

23 files changed

+120
-134
lines changed

common.mk

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3372,7 +3372,7 @@ cont.$(OBJEXT): {$(VPATH)}missing.h
33723372
cont.$(OBJEXT): {$(VPATH)}mjit.h
33733373
cont.$(OBJEXT): {$(VPATH)}node.h
33743374
cont.$(OBJEXT): {$(VPATH)}ractor.h
3375-
cont.$(OBJEXT): {$(VPATH)}ractor_pub.h
3375+
cont.$(OBJEXT): {$(VPATH)}ractor_core.h
33763376
cont.$(OBJEXT): {$(VPATH)}ruby_assert.h
33773377
cont.$(OBJEXT): {$(VPATH)}ruby_atomic.h
33783378
cont.$(OBJEXT): {$(VPATH)}st.h
@@ -3566,7 +3566,7 @@ debug.$(OBJEXT): {$(VPATH)}node.h
35663566
debug.$(OBJEXT): {$(VPATH)}onigmo.h
35673567
debug.$(OBJEXT): {$(VPATH)}oniguruma.h
35683568
debug.$(OBJEXT): {$(VPATH)}ractor.h
3569-
debug.$(OBJEXT): {$(VPATH)}ractor_pub.h
3569+
debug.$(OBJEXT): {$(VPATH)}ractor_core.h
35703570
debug.$(OBJEXT): {$(VPATH)}ruby_assert.h
35713571
debug.$(OBJEXT): {$(VPATH)}ruby_atomic.h
35723572
debug.$(OBJEXT): {$(VPATH)}st.h
@@ -4622,7 +4622,6 @@ encoding.$(OBJEXT): {$(VPATH)}missing.h
46224622
encoding.$(OBJEXT): {$(VPATH)}node.h
46234623
encoding.$(OBJEXT): {$(VPATH)}onigmo.h
46244624
encoding.$(OBJEXT): {$(VPATH)}oniguruma.h
4625-
encoding.$(OBJEXT): {$(VPATH)}ractor_pub.h
46264625
encoding.$(OBJEXT): {$(VPATH)}regenc.h
46274626
encoding.$(OBJEXT): {$(VPATH)}ruby_assert.h
46284627
encoding.$(OBJEXT): {$(VPATH)}st.h
@@ -5402,7 +5401,7 @@ eval.$(OBJEXT): {$(VPATH)}probes.dmyh
54025401
eval.$(OBJEXT): {$(VPATH)}probes.h
54035402
eval.$(OBJEXT): {$(VPATH)}probes_helper.h
54045403
eval.$(OBJEXT): {$(VPATH)}ractor.h
5405-
eval.$(OBJEXT): {$(VPATH)}ractor_pub.h
5404+
eval.$(OBJEXT): {$(VPATH)}ractor_core.h
54065405
eval.$(OBJEXT): {$(VPATH)}ruby_assert.h
54075406
eval.$(OBJEXT): {$(VPATH)}ruby_atomic.h
54085407
eval.$(OBJEXT): {$(VPATH)}st.h
@@ -5824,7 +5823,7 @@ gc.$(OBJEXT): {$(VPATH)}oniguruma.h
58245823
gc.$(OBJEXT): {$(VPATH)}probes.dmyh
58255824
gc.$(OBJEXT): {$(VPATH)}probes.h
58265825
gc.$(OBJEXT): {$(VPATH)}ractor.h
5827-
gc.$(OBJEXT): {$(VPATH)}ractor_pub.h
5826+
gc.$(OBJEXT): {$(VPATH)}ractor_core.h
58285827
gc.$(OBJEXT): {$(VPATH)}re.h
58295828
gc.$(OBJEXT): {$(VPATH)}regenc.h
58305829
gc.$(OBJEXT): {$(VPATH)}regex.h
@@ -6744,7 +6743,7 @@ io.$(OBJEXT): {$(VPATH)}missing.h
67446743
io.$(OBJEXT): {$(VPATH)}node.h
67456744
io.$(OBJEXT): {$(VPATH)}onigmo.h
67466745
io.$(OBJEXT): {$(VPATH)}oniguruma.h
6747-
io.$(OBJEXT): {$(VPATH)}ractor_pub.h
6746+
io.$(OBJEXT): {$(VPATH)}ractor.h
67486747
io.$(OBJEXT): {$(VPATH)}ruby_assert.h
67496748
io.$(OBJEXT): {$(VPATH)}ruby_atomic.h
67506749
io.$(OBJEXT): {$(VPATH)}st.h
@@ -9756,7 +9755,7 @@ parse.$(OBJEXT): {$(VPATH)}parse.h
97569755
parse.$(OBJEXT): {$(VPATH)}parse.y
97579756
parse.$(OBJEXT): {$(VPATH)}probes.dmyh
97589757
parse.$(OBJEXT): {$(VPATH)}probes.h
9759-
parse.$(OBJEXT): {$(VPATH)}ractor_pub.h
9758+
parse.$(OBJEXT): {$(VPATH)}ractor.h
97609759
parse.$(OBJEXT): {$(VPATH)}regenc.h
97619760
parse.$(OBJEXT): {$(VPATH)}regex.h
97629761
parse.$(OBJEXT): {$(VPATH)}ruby_assert.h
@@ -10179,7 +10178,7 @@ process.$(OBJEXT): {$(VPATH)}node.h
1017910178
process.$(OBJEXT): {$(VPATH)}onigmo.h
1018010179
process.$(OBJEXT): {$(VPATH)}oniguruma.h
1018110180
process.$(OBJEXT): {$(VPATH)}process.c
10182-
process.$(OBJEXT): {$(VPATH)}ractor_pub.h
10181+
process.$(OBJEXT): {$(VPATH)}ractor.h
1018310182
process.$(OBJEXT): {$(VPATH)}ruby_assert.h
1018410183
process.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1018510184
process.$(OBJEXT): {$(VPATH)}st.h
@@ -10384,7 +10383,7 @@ ractor.$(OBJEXT): {$(VPATH)}ractor.c
1038410383
ractor.$(OBJEXT): {$(VPATH)}ractor.h
1038510384
ractor.$(OBJEXT): {$(VPATH)}ractor.rb
1038610385
ractor.$(OBJEXT): {$(VPATH)}ractor.rbinc
10387-
ractor.$(OBJEXT): {$(VPATH)}ractor_pub.h
10386+
ractor.$(OBJEXT): {$(VPATH)}ractor_core.h
1038810387
ractor.$(OBJEXT): {$(VPATH)}ruby_assert.h
1038910388
ractor.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1039010389
ractor.$(OBJEXT): {$(VPATH)}st.h
@@ -14180,7 +14179,7 @@ thread.$(OBJEXT): {$(VPATH)}node.h
1418014179
thread.$(OBJEXT): {$(VPATH)}onigmo.h
1418114180
thread.$(OBJEXT): {$(VPATH)}oniguruma.h
1418214181
thread.$(OBJEXT): {$(VPATH)}ractor.h
14183-
thread.$(OBJEXT): {$(VPATH)}ractor_pub.h
14182+
thread.$(OBJEXT): {$(VPATH)}ractor_core.h
1418414183
thread.$(OBJEXT): {$(VPATH)}ruby_assert.h
1418514184
thread.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1418614185
thread.$(OBJEXT): {$(VPATH)}st.h
@@ -14738,7 +14737,6 @@ transient_heap.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
1473814737
transient_heap.$(OBJEXT): {$(VPATH)}method.h
1473914738
transient_heap.$(OBJEXT): {$(VPATH)}missing.h
1474014739
transient_heap.$(OBJEXT): {$(VPATH)}node.h
14741-
transient_heap.$(OBJEXT): {$(VPATH)}ractor_pub.h
1474214740
transient_heap.$(OBJEXT): {$(VPATH)}ruby_assert.h
1474314741
transient_heap.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1474414742
transient_heap.$(OBJEXT): {$(VPATH)}st.h
@@ -15106,7 +15104,7 @@ variable.$(OBJEXT): {$(VPATH)}node.h
1510615104
variable.$(OBJEXT): {$(VPATH)}onigmo.h
1510715105
variable.$(OBJEXT): {$(VPATH)}oniguruma.h
1510815106
variable.$(OBJEXT): {$(VPATH)}ractor.h
15109-
variable.$(OBJEXT): {$(VPATH)}ractor_pub.h
15107+
variable.$(OBJEXT): {$(VPATH)}ractor_core.h
1511015108
variable.$(OBJEXT): {$(VPATH)}ruby_assert.h
1511115109
variable.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1511215110
variable.$(OBJEXT): {$(VPATH)}st.h
@@ -15520,7 +15518,7 @@ vm.$(OBJEXT): {$(VPATH)}probes.dmyh
1552015518
vm.$(OBJEXT): {$(VPATH)}probes.h
1552115519
vm.$(OBJEXT): {$(VPATH)}probes_helper.h
1552215520
vm.$(OBJEXT): {$(VPATH)}ractor.h
15523-
vm.$(OBJEXT): {$(VPATH)}ractor_pub.h
15521+
vm.$(OBJEXT): {$(VPATH)}ractor_core.h
1552415522
vm.$(OBJEXT): {$(VPATH)}ruby_assert.h
1552515523
vm.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1552615524
vm.$(OBJEXT): {$(VPATH)}st.h
@@ -15912,7 +15910,7 @@ vm_dump.$(OBJEXT): {$(VPATH)}missing.h
1591215910
vm_dump.$(OBJEXT): {$(VPATH)}node.h
1591315911
vm_dump.$(OBJEXT): {$(VPATH)}procstat_vm.c
1591415912
vm_dump.$(OBJEXT): {$(VPATH)}ractor.h
15915-
vm_dump.$(OBJEXT): {$(VPATH)}ractor_pub.h
15913+
vm_dump.$(OBJEXT): {$(VPATH)}ractor_core.h
1591615914
vm_dump.$(OBJEXT): {$(VPATH)}ruby_assert.h
1591715915
vm_dump.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1591815916
vm_dump.$(OBJEXT): {$(VPATH)}st.h
@@ -16108,7 +16106,7 @@ vm_sync.$(OBJEXT): {$(VPATH)}missing.h
1610816106
vm_sync.$(OBJEXT): {$(VPATH)}node.h
1610916107
vm_sync.$(OBJEXT): {$(VPATH)}procstat_vm.c
1611016108
vm_sync.$(OBJEXT): {$(VPATH)}ractor.h
16111-
vm_sync.$(OBJEXT): {$(VPATH)}ractor_pub.h
16109+
vm_sync.$(OBJEXT): {$(VPATH)}ractor_core.h
1611216110
vm_sync.$(OBJEXT): {$(VPATH)}ruby_assert.h
1611316111
vm_sync.$(OBJEXT): {$(VPATH)}ruby_atomic.h
1611416112
vm_sync.$(OBJEXT): {$(VPATH)}st.h

cont.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include "mjit.h"
3030
#include "vm_core.h"
3131
#include "id_table.h"
32-
#include "ractor.h"
32+
#include "ractor_core.h"
3333

3434
static const int DEBUG = 0;
3535

debug.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include "vm_debug.h"
2727
#include "vm_callinfo.h"
2828
#include "ruby/thread_native.h"
29-
#include "ractor.h"
29+
#include "ractor_core.h"
3030

3131
/* This is the only place struct RIMemo is actually used */
3232
struct RIMemo {

encoding.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#include "ruby/encoding.h"
2727
#include "ruby/util.h"
2828
#include "ruby_assert.h"
29-
#include "ractor_pub.h"
3029
#include "vm_sync.h"
3130

3231
#ifndef ENC_DEBUG

eval.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#include "probes_helper.h"
3838
#include "ruby/vm.h"
3939
#include "vm_core.h"
40-
#include "ractor.h"
40+
#include "ractor_core.h"
4141

4242
NORETURN(void rb_raise_jump(VALUE, VALUE));
4343
void rb_ec_clear_current_thread_trace_func(const rb_execution_context_t *ec);

ext/ripper/depend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ ripper.o: $(hdrdir)/ruby/io.h
210210
ripper.o: $(hdrdir)/ruby/missing.h
211211
ripper.o: $(hdrdir)/ruby/onigmo.h
212212
ripper.o: $(hdrdir)/ruby/oniguruma.h
213+
ripper.o: $(hdrdir)/ruby/ractor.h
213214
ripper.o: $(hdrdir)/ruby/regex.h
214215
ripper.o: $(hdrdir)/ruby/ruby.h
215216
ripper.o: $(hdrdir)/ruby/st.h
@@ -244,7 +245,6 @@ ripper.o: $(top_srcdir)/internal/variable.h
244245
ripper.o: $(top_srcdir)/internal/vm.h
245246
ripper.o: $(top_srcdir)/internal/warnings.h
246247
ripper.o: $(top_srcdir)/node.h
247-
ripper.o: $(top_srcdir)/ractor_pub.h
248248
ripper.o: $(top_srcdir)/regenc.h
249249
ripper.o: $(top_srcdir)/ruby_assert.h
250250
ripper.o: $(top_srcdir)/symbol.h

gc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
#include "vm_core.h"
113113
#include "vm_sync.h"
114114
#include "vm_callinfo.h"
115-
#include "ractor.h"
115+
#include "ractor_core.h"
116116

117117
#include "builtin.h"
118118

include/ruby/ractor.h

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#ifndef RUBY_RACTOR_H
2+
#define RUBY_RACTOR_H 1
3+
4+
/**
5+
* @file
6+
* @author Koichi Sasada
7+
* @date Tue Nov 17 16:39:15 2020
8+
* @copyright Copyright (C) 2020 Yukihiro Matsumoto
9+
* @copyright This file is a part of the programming language Ruby.
10+
* Permission is hereby granted, to either redistribute and/or
11+
* modify this file, provided that the conditions mentioned in the
12+
* file COPYING are met. Consult the file for details.
13+
*/
14+
15+
RUBY_SYMBOL_EXPORT_BEGIN
16+
RUBY_EXTERN VALUE rb_cRactor;
17+
18+
VALUE rb_ractor_stdin(void);
19+
VALUE rb_ractor_stdout(void);
20+
VALUE rb_ractor_stderr(void);
21+
void rb_ractor_stdin_set(VALUE);
22+
void rb_ractor_stdout_set(VALUE);
23+
void rb_ractor_stderr_set(VALUE);
24+
25+
bool rb_ractor_shareable_p_continue(VALUE obj); // do not call it directly.
26+
27+
RUBY_SYMBOL_EXPORT_END
28+
29+
#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)
30+
31+
static inline bool
32+
rb_ractor_shareable_p(VALUE obj)
33+
{
34+
if (SPECIAL_CONST_P(obj)) {
35+
return true;
36+
}
37+
else if (RB_OBJ_SHAREABLE_P(obj)) {
38+
return true;
39+
}
40+
else {
41+
return rb_ractor_shareable_p_continue(obj);
42+
}
43+
}
44+
45+
#endif /* RUBY_RACTOR_H */

include/ruby/thread_native.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ typedef union rb_thread_lock_union {
3131
CRITICAL_SECTION crit;
3232
} rb_nativethread_lock_t;
3333

34+
typedef struct rb_thread_cond_struct rb_nativethread_cond_t;
35+
3436
#elif defined(HAVE_PTHREAD_H)
37+
3538
#include <pthread.h>
3639
typedef pthread_t rb_nativethread_id_t;
3740
typedef pthread_mutex_t rb_nativethread_lock_t;
41+
typedef pthread_cond_t rb_nativethread_cond_t;
3842

3943
#else
4044
#error "unsupported thread type"
@@ -50,6 +54,19 @@ void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
5054
void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
5155
void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
5256

57+
void rb_native_mutex_lock(rb_nativethread_lock_t *lock);
58+
int rb_native_mutex_trylock(rb_nativethread_lock_t *lock);
59+
void rb_native_mutex_unlock(rb_nativethread_lock_t *lock);
60+
void rb_native_mutex_initialize(rb_nativethread_lock_t *lock);
61+
void rb_native_mutex_destroy(rb_nativethread_lock_t *lock);
62+
63+
void rb_native_cond_signal(rb_nativethread_cond_t *cond);
64+
void rb_native_cond_broadcast(rb_nativethread_cond_t *cond);
65+
void rb_native_cond_wait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex);
66+
void rb_native_cond_timedwait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex, unsigned long msec);
67+
void rb_native_cond_initialize(rb_nativethread_cond_t *cond);
68+
void rb_native_cond_destroy(rb_nativethread_cond_t *cond);
69+
5370
RUBY_SYMBOL_EXPORT_END
5471

5572
#endif

io.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@
134134
#include "ruby/thread.h"
135135
#include "ruby/util.h"
136136
#include "ruby_atomic.h"
137-
#include "ractor_pub.h"
137+
#include "ruby/ractor.h"
138138

139139
#if !USE_POLL
140140
# include "vm_core.h"

0 commit comments

Comments
 (0)