1#ifndef INTERNAL_THREAD_H
2#define INTERNAL_THREAD_H
13#include "ccan/list/list.h"
17#define RB_VM_SAVE_MACHINE_CONTEXT(th) \
19 FLUSH_REGISTER_WINDOWS; \
20 setjmp((th)->ec->machine.regs); \
21 SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \
25#define COVERAGE_INDEX_LINES 0
26#define COVERAGE_INDEX_BRANCHES 1
27#define COVERAGE_TARGET_LINES 1
28#define COVERAGE_TARGET_BRANCHES 2
29#define COVERAGE_TARGET_METHODS 4
30#define COVERAGE_TARGET_ONESHOT_LINES 8
31#define COVERAGE_TARGET_EVAL 16
33#define RUBY_FATAL_THREAD_KILLED INT2FIX(0)
34#define RUBY_FATAL_THREAD_TERMINATED INT2FIX(1)
35#define RUBY_FATAL_FIBER_KILLED RB_INT2FIX(2)
39void rb_thread_execute_interrupts(
VALUE th);
40VALUE rb_get_coverages(
void);
41int rb_get_coverage_mode(
void);
42VALUE rb_default_coverage(
int);
43VALUE rb_thread_shield_new(
void);
44bool rb_thread_shield_owned(
VALUE self);
48int rb_thread_to_be_killed(
VALUE thread);
49void rb_mutex_allow_trap(
VALUE self,
int val);
53void ruby_mn_threads_params(
void);
55int rb_thread_wait_for_single_fd(
int fd,
int events,
struct timeval * timeout);
58 struct ccan_list_head pending_fd_users;
66RUBY_SYMBOL_EXPORT_BEGIN
69VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func,
void *data1,
int fd);
70VALUE rb_thread_io_blocking_call(rb_blocking_function_t *func,
void *data1,
int fd,
int events);
73int ruby_thread_has_gvl_p(
void);
77int rb_threadptr_execute_interrupts(
struct rb_thread_struct *th,
int blocking_timing);
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.