Ruby  3.1.4p223 (2023-03-30 revision HEAD)
thread.h
1 #ifndef INTERNAL_THREAD_H /*-*-C-*-vi:se ft=c:*/
2 #define INTERNAL_THREAD_H
11 #include "ruby/ruby.h" /* for VALUE */
12 #include "ruby/intern.h" /* for rb_blocking_function_t */
13 
14 struct rb_thread_struct; /* in vm_core.h */
15 
16 /* thread.c */
17 #define COVERAGE_INDEX_LINES 0
18 #define COVERAGE_INDEX_BRANCHES 1
19 #define COVERAGE_TARGET_LINES 1
20 #define COVERAGE_TARGET_BRANCHES 2
21 #define COVERAGE_TARGET_METHODS 4
22 #define COVERAGE_TARGET_ONESHOT_LINES 8
23 
24 VALUE rb_obj_is_mutex(VALUE obj);
25 VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
26 void rb_thread_execute_interrupts(VALUE th);
27 VALUE rb_get_coverages(void);
28 int rb_get_coverage_mode(void);
29 VALUE rb_default_coverage(int);
30 VALUE rb_thread_shield_new(void);
31 bool rb_thread_shield_owned(VALUE self);
32 VALUE rb_thread_shield_wait(VALUE self);
33 VALUE rb_thread_shield_release(VALUE self);
34 VALUE rb_thread_shield_destroy(VALUE self);
35 int rb_thread_to_be_killed(VALUE thread);
36 void rb_mutex_allow_trap(VALUE self, int val);
37 VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
38 VALUE rb_mutex_owned_p(VALUE self);
39 
40 int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
41 
42 RUBY_SYMBOL_EXPORT_BEGIN
43 /* Temporary. This API will be removed (renamed). */
44 VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
45 
46 /* thread.c (export) */
47 int ruby_thread_has_gvl_p(void); /* for ext/fiddle/closure.c */
48 RUBY_SYMBOL_EXPORT_END
49 
50 MJIT_SYMBOL_EXPORT_BEGIN
51 int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
52 MJIT_SYMBOL_EXPORT_END
53 
54 #endif /* INTERNAL_THREAD_H */
uintptr_t VALUE
Type that represents a Ruby object.
Definition: value.h:40