diff options
Diffstat (limited to 'scheduler.c')
-rw-r--r-- | scheduler.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/scheduler.c b/scheduler.c index 9821d07636..9ecc40cf6c 100644 --- a/scheduler.c +++ b/scheduler.c @@ -12,6 +12,8 @@ #include "ruby/io.h" static ID id_kernel_sleep; +static ID id_mutex_lock; +static ID id_mutex_unlock; static ID id_io_read; static ID id_io_write; static ID id_io_wait; @@ -20,6 +22,8 @@ void Init_Scheduler(void) { id_kernel_sleep = rb_intern_const("kernel_sleep"); + id_mutex_lock = rb_intern_const("mutex_lock"); + id_mutex_unlock = rb_intern_const("mutex_unlock"); id_io_read = rb_intern_const("io_read"); id_io_write = rb_intern_const("io_write"); id_io_wait = rb_intern_const("io_wait"); @@ -44,6 +48,16 @@ VALUE rb_scheduler_kernel_sleepv(VALUE scheduler, int argc, VALUE * argv) return rb_funcallv(scheduler, id_kernel_sleep, argc, argv); } +VALUE rb_scheduler_mutex_lock(VALUE scheduler, VALUE mutex) +{ + return rb_funcall(scheduler, id_mutex_lock, 1, mutex); +} + +VALUE rb_scheduler_mutex_unlock(VALUE scheduler, VALUE mutex, VALUE fiber) +{ + return rb_funcall(scheduler, id_mutex_unlock, 2, mutex, fiber); +} + VALUE rb_scheduler_io_wait(VALUE scheduler, VALUE io, VALUE events, VALUE timeout) { return rb_funcall(scheduler, id_io_wait, 3, io, events, timeout); |