20static ID id_kernel_sleep;
21static ID id_process_wait;
30 id_close = rb_intern_const(
"close");
32 id_block = rb_intern_const(
"block");
33 id_unblock = rb_intern_const(
"unblock");
35 id_kernel_sleep = rb_intern_const(
"kernel_sleep");
36 id_process_wait = rb_intern_const(
"process_wait");
38 id_io_read = rb_intern_const(
"io_read");
39 id_io_write = rb_intern_const(
"io_write");
40 id_io_wait = rb_intern_const(
"io_wait");
53verify_interface(
VALUE scheduler)
78 if (scheduler !=
Qnil) {
79 verify_interface(scheduler);
107 return rb_threadptr_scheduler_current(GET_THREAD());
112 return rb_threadptr_scheduler_current(rb_thread_ptr(thread));
138 return rb_funcall(scheduler, id_kernel_sleep, 1, timeout);
162 return rb_funcall(scheduler, id_block, 2, blocker, timeout);
168 return rb_funcall(scheduler, id_unblock, 2, blocker, fiber);
174 return rb_funcall(scheduler, id_io_wait, 3, io, events, timeout);
void rb_raise(VALUE exc, const char *fmt,...)
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
int rb_respond_to(VALUE, ID)
VALUE rb_scheduler_io_wait_writable(VALUE scheduler, VALUE io)
VALUE rb_scheduler_kernel_sleep(VALUE scheduler, VALUE timeout)
VALUE rb_scheduler_current(void)
VALUE rb_scheduler_io_wait(VALUE scheduler, VALUE io, VALUE events, VALUE timeout)
VALUE rb_scheduler_block(VALUE scheduler, VALUE blocker, VALUE timeout)
VALUE rb_scheduler_kernel_sleepv(VALUE scheduler, int argc, VALUE *argv)
VALUE rb_scheduler_process_wait(VALUE scheduler, rb_pid_t pid, int flags)
void Init_Scheduler(void)
VALUE rb_scheduler_timeout(struct timeval *timeout)
VALUE rb_scheduler_get(void)
int rb_scheduler_supports_process_wait(VALUE scheduler)
int rb_scheduler_supports_io_read(VALUE scheduler)
VALUE rb_scheduler_io_wait_readable(VALUE scheduler, VALUE io)
VALUE rb_thread_scheduler_current(VALUE thread)
VALUE rb_scheduler_unblock(VALUE scheduler, VALUE blocker, VALUE fiber)
int rb_scheduler_supports_io_write(VALUE scheduler)
VALUE rb_scheduler_close(VALUE scheduler)
VALUE rb_scheduler_io_read(VALUE scheduler, VALUE io, VALUE buffer, size_t offset, size_t length)
VALUE rb_scheduler_io_write(VALUE scheduler, VALUE io, VALUE buffer, size_t offset, size_t length)
VALUE rb_scheduler_set(VALUE scheduler)
Internal header for Scheduler.