From 5f69a7f60467fa58c2f998daffab43e118bff36c Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Tue, 9 Feb 2021 19:39:56 +1300 Subject: Expose scheduler as public interface & bug fixes. (#3945) * Rename `rb_scheduler` to `rb_fiber_scheduler`. * Use public interface if available. * Use `rb_check_funcall` where possible. * Don't use `unblock` unless the fiber was non-blocking. --- ext/io/console/console.c | 7 +- ext/io/console/extconf.rb | 2 +- ext/psych/depend | 185 ++++++++++++++++++++++++++++------------------ 3 files changed, 121 insertions(+), 73 deletions(-) (limited to 'ext') diff --git a/ext/io/console/console.c b/ext/io/console/console.c index 2e2467036d..6999a3f077 100644 --- a/ext/io/console/console.c +++ b/ext/io/console/console.c @@ -80,8 +80,11 @@ static ID id_getc, id_console, id_close, id_min, id_time, id_intr; static ID id_gets, id_chomp_bang; #endif -#ifdef HAVE_RB_SCHEDULER_TIMEOUT +#if defined HAVE_RUBY_FIBER_SCHEDULER_H +# include "ruby/fiber/scheduler.h" +#elif defined HAVE_RB_SCHEDULER_TIMEOUT extern VALUE rb_scheduler_timeout(struct timeval *timeout); +# define rb_fiber_scheduler_timeout rb_scheduler_timeout #endif #define sys_fail_fptr(fptr) rb_sys_fail_str((fptr)->pathv) @@ -534,7 +537,7 @@ console_getch(int argc, VALUE *argv, VALUE io) tv.tv_sec = optp->vtime / 10; tv.tv_usec = (optp->vtime % 10) * 100000; # ifdef HAVE_RB_IO_WAIT - timeout = rb_scheduler_timeout(&tv); + timeout = rb_fiber_scheduler_make_timeout(&tv); # endif } switch (optp->vmin) { diff --git a/ext/io/console/extconf.rb b/ext/io/console/extconf.rb index 3efdd6e092..40af8c0b72 100644 --- a/ext/io/console/extconf.rb +++ b/ext/io/console/extconf.rb @@ -24,7 +24,7 @@ when true # rb_funcallv: 2.1.0 # RARRAY_CONST_PTR: 2.1.0 # rb_sym2str: 2.2.0 - if have_func("rb_scheduler_timeout") + if have_func("rb_fiber_scheduler_make_timeout") have_func("rb_io_wait") end $defs << "-D""ENABLE_IO_GETPASS=1" diff --git a/ext/psych/depend b/ext/psych/depend index 2017319fd1..06f24f42bc 100644 --- a/ext/psych/depend +++ b/ext/psych/depend @@ -1,9 +1,48 @@ $(OBJS): $(YAML_H) # AUTOGENERATED DEPENDENCIES START +api.o: $(RUBY_EXTCONF_H) +api.o: yaml/api.c +api.o: yaml/config.h +api.o: yaml/yaml.h +api.o: yaml/yaml_private.h +dumper.o: $(RUBY_EXTCONF_H) +dumper.o: yaml/config.h +dumper.o: yaml/dumper.c +dumper.o: yaml/yaml.h +dumper.o: yaml/yaml_private.h +emitter.o: $(RUBY_EXTCONF_H) +emitter.o: yaml/config.h +emitter.o: yaml/emitter.c +emitter.o: yaml/yaml.h +emitter.o: yaml/yaml_private.h +loader.o: $(RUBY_EXTCONF_H) +loader.o: yaml/config.h +loader.o: yaml/loader.c +loader.o: yaml/yaml.h +loader.o: yaml/yaml_private.h +parser.o: $(RUBY_EXTCONF_H) +parser.o: yaml/config.h +parser.o: yaml/parser.c +parser.o: yaml/yaml.h +parser.o: yaml/yaml_private.h psych.o: $(RUBY_EXTCONF_H) psych.o: $(arch_hdrdir)/ruby/config.h psych.o: $(hdrdir)/ruby.h +psych.o: $(hdrdir)/ruby/assert.h +psych.o: $(hdrdir)/ruby/backward.h +psych.o: $(hdrdir)/ruby/backward/2/assume.h +psych.o: $(hdrdir)/ruby/backward/2/attributes.h +psych.o: $(hdrdir)/ruby/backward/2/bool.h +psych.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h +psych.o: $(hdrdir)/ruby/backward/2/inttypes.h +psych.o: $(hdrdir)/ruby/backward/2/limits.h +psych.o: $(hdrdir)/ruby/backward/2/long_long.h +psych.o: $(hdrdir)/ruby/backward/2/stdalign.h +psych.o: $(hdrdir)/ruby/backward/2/stdarg.h +psych.o: $(hdrdir)/ruby/defines.h +psych.o: $(hdrdir)/ruby/encoding.h +psych.o: $(hdrdir)/ruby/intern.h psych.o: $(hdrdir)/ruby/internal/anyargs.h psych.o: $(hdrdir)/ruby/internal/arithmetic.h psych.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -144,20 +183,6 @@ psych.o: $(hdrdir)/ruby/internal/value_type.h psych.o: $(hdrdir)/ruby/internal/variable.h psych.o: $(hdrdir)/ruby/internal/warning_push.h psych.o: $(hdrdir)/ruby/internal/xmalloc.h -psych.o: $(hdrdir)/ruby/assert.h -psych.o: $(hdrdir)/ruby/backward.h -psych.o: $(hdrdir)/ruby/backward/2/assume.h -psych.o: $(hdrdir)/ruby/backward/2/attributes.h -psych.o: $(hdrdir)/ruby/backward/2/bool.h -psych.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -psych.o: $(hdrdir)/ruby/backward/2/inttypes.h -psych.o: $(hdrdir)/ruby/backward/2/limits.h -psych.o: $(hdrdir)/ruby/backward/2/long_long.h -psych.o: $(hdrdir)/ruby/backward/2/stdalign.h -psych.o: $(hdrdir)/ruby/backward/2/stdarg.h -psych.o: $(hdrdir)/ruby/defines.h -psych.o: $(hdrdir)/ruby/encoding.h -psych.o: $(hdrdir)/ruby/intern.h psych.o: $(hdrdir)/ruby/missing.h psych.o: $(hdrdir)/ruby/onigmo.h psych.o: $(hdrdir)/ruby/oniguruma.h @@ -170,9 +195,24 @@ psych.o: psych_emitter.h psych.o: psych_parser.h psych.o: psych_to_ruby.h psych.o: psych_yaml_tree.h +psych.o: yaml/yaml.h psych_emitter.o: $(RUBY_EXTCONF_H) psych_emitter.o: $(arch_hdrdir)/ruby/config.h psych_emitter.o: $(hdrdir)/ruby.h +psych_emitter.o: $(hdrdir)/ruby/assert.h +psych_emitter.o: $(hdrdir)/ruby/backward.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/assume.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/attributes.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/bool.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/inttypes.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/limits.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/long_long.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/stdalign.h +psych_emitter.o: $(hdrdir)/ruby/backward/2/stdarg.h +psych_emitter.o: $(hdrdir)/ruby/defines.h +psych_emitter.o: $(hdrdir)/ruby/encoding.h +psych_emitter.o: $(hdrdir)/ruby/intern.h psych_emitter.o: $(hdrdir)/ruby/internal/anyargs.h psych_emitter.o: $(hdrdir)/ruby/internal/arithmetic.h psych_emitter.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -313,20 +353,6 @@ psych_emitter.o: $(hdrdir)/ruby/internal/value_type.h psych_emitter.o: $(hdrdir)/ruby/internal/variable.h psych_emitter.o: $(hdrdir)/ruby/internal/warning_push.h psych_emitter.o: $(hdrdir)/ruby/internal/xmalloc.h -psych_emitter.o: $(hdrdir)/ruby/assert.h -psych_emitter.o: $(hdrdir)/ruby/backward.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/assume.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/attributes.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/bool.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/inttypes.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/limits.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/long_long.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/stdalign.h -psych_emitter.o: $(hdrdir)/ruby/backward/2/stdarg.h -psych_emitter.o: $(hdrdir)/ruby/defines.h -psych_emitter.o: $(hdrdir)/ruby/encoding.h -psych_emitter.o: $(hdrdir)/ruby/intern.h psych_emitter.o: $(hdrdir)/ruby/missing.h psych_emitter.o: $(hdrdir)/ruby/onigmo.h psych_emitter.o: $(hdrdir)/ruby/oniguruma.h @@ -339,9 +365,24 @@ psych_emitter.o: psych_emitter.h psych_emitter.o: psych_parser.h psych_emitter.o: psych_to_ruby.h psych_emitter.o: psych_yaml_tree.h +psych_emitter.o: yaml/yaml.h psych_parser.o: $(RUBY_EXTCONF_H) psych_parser.o: $(arch_hdrdir)/ruby/config.h psych_parser.o: $(hdrdir)/ruby.h +psych_parser.o: $(hdrdir)/ruby/assert.h +psych_parser.o: $(hdrdir)/ruby/backward.h +psych_parser.o: $(hdrdir)/ruby/backward/2/assume.h +psych_parser.o: $(hdrdir)/ruby/backward/2/attributes.h +psych_parser.o: $(hdrdir)/ruby/backward/2/bool.h +psych_parser.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h +psych_parser.o: $(hdrdir)/ruby/backward/2/inttypes.h +psych_parser.o: $(hdrdir)/ruby/backward/2/limits.h +psych_parser.o: $(hdrdir)/ruby/backward/2/long_long.h +psych_parser.o: $(hdrdir)/ruby/backward/2/stdalign.h +psych_parser.o: $(hdrdir)/ruby/backward/2/stdarg.h +psych_parser.o: $(hdrdir)/ruby/defines.h +psych_parser.o: $(hdrdir)/ruby/encoding.h +psych_parser.o: $(hdrdir)/ruby/intern.h psych_parser.o: $(hdrdir)/ruby/internal/anyargs.h psych_parser.o: $(hdrdir)/ruby/internal/arithmetic.h psych_parser.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -482,20 +523,6 @@ psych_parser.o: $(hdrdir)/ruby/internal/value_type.h psych_parser.o: $(hdrdir)/ruby/internal/variable.h psych_parser.o: $(hdrdir)/ruby/internal/warning_push.h psych_parser.o: $(hdrdir)/ruby/internal/xmalloc.h -psych_parser.o: $(hdrdir)/ruby/assert.h -psych_parser.o: $(hdrdir)/ruby/backward.h -psych_parser.o: $(hdrdir)/ruby/backward/2/assume.h -psych_parser.o: $(hdrdir)/ruby/backward/2/attributes.h -psych_parser.o: $(hdrdir)/ruby/backward/2/bool.h -psych_parser.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -psych_parser.o: $(hdrdir)/ruby/backward/2/inttypes.h -psych_parser.o: $(hdrdir)/ruby/backward/2/limits.h -psych_parser.o: $(hdrdir)/ruby/backward/2/long_long.h -psych_parser.o: $(hdrdir)/ruby/backward/2/stdalign.h -psych_parser.o: $(hdrdir)/ruby/backward/2/stdarg.h -psych_parser.o: $(hdrdir)/ruby/defines.h -psych_parser.o: $(hdrdir)/ruby/encoding.h -psych_parser.o: $(hdrdir)/ruby/intern.h psych_parser.o: $(hdrdir)/ruby/missing.h psych_parser.o: $(hdrdir)/ruby/onigmo.h psych_parser.o: $(hdrdir)/ruby/oniguruma.h @@ -508,9 +535,24 @@ psych_parser.o: psych_parser.c psych_parser.o: psych_parser.h psych_parser.o: psych_to_ruby.h psych_parser.o: psych_yaml_tree.h +psych_parser.o: yaml/yaml.h psych_to_ruby.o: $(RUBY_EXTCONF_H) psych_to_ruby.o: $(arch_hdrdir)/ruby/config.h psych_to_ruby.o: $(hdrdir)/ruby.h +psych_to_ruby.o: $(hdrdir)/ruby/assert.h +psych_to_ruby.o: $(hdrdir)/ruby/backward.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/assume.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/attributes.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/bool.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/inttypes.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/limits.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/long_long.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/stdalign.h +psych_to_ruby.o: $(hdrdir)/ruby/backward/2/stdarg.h +psych_to_ruby.o: $(hdrdir)/ruby/defines.h +psych_to_ruby.o: $(hdrdir)/ruby/encoding.h +psych_to_ruby.o: $(hdrdir)/ruby/intern.h psych_to_ruby.o: $(hdrdir)/ruby/internal/anyargs.h psych_to_ruby.o: $(hdrdir)/ruby/internal/arithmetic.h psych_to_ruby.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -651,20 +693,6 @@ psych_to_ruby.o: $(hdrdir)/ruby/internal/value_type.h psych_to_ruby.o: $(hdrdir)/ruby/internal/variable.h psych_to_ruby.o: $(hdrdir)/ruby/internal/warning_push.h psych_to_ruby.o: $(hdrdir)/ruby/internal/xmalloc.h -psych_to_ruby.o: $(hdrdir)/ruby/assert.h -psych_to_ruby.o: $(hdrdir)/ruby/backward.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/assume.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/attributes.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/bool.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/inttypes.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/limits.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/long_long.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/stdalign.h -psych_to_ruby.o: $(hdrdir)/ruby/backward/2/stdarg.h -psych_to_ruby.o: $(hdrdir)/ruby/defines.h -psych_to_ruby.o: $(hdrdir)/ruby/encoding.h -psych_to_ruby.o: $(hdrdir)/ruby/intern.h psych_to_ruby.o: $(hdrdir)/ruby/missing.h psych_to_ruby.o: $(hdrdir)/ruby/onigmo.h psych_to_ruby.o: $(hdrdir)/ruby/oniguruma.h @@ -677,9 +705,24 @@ psych_to_ruby.o: psych_parser.h psych_to_ruby.o: psych_to_ruby.c psych_to_ruby.o: psych_to_ruby.h psych_to_ruby.o: psych_yaml_tree.h +psych_to_ruby.o: yaml/yaml.h psych_yaml_tree.o: $(RUBY_EXTCONF_H) psych_yaml_tree.o: $(arch_hdrdir)/ruby/config.h psych_yaml_tree.o: $(hdrdir)/ruby.h +psych_yaml_tree.o: $(hdrdir)/ruby/assert.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/assume.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/attributes.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/bool.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/inttypes.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/limits.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/long_long.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/stdalign.h +psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/stdarg.h +psych_yaml_tree.o: $(hdrdir)/ruby/defines.h +psych_yaml_tree.o: $(hdrdir)/ruby/encoding.h +psych_yaml_tree.o: $(hdrdir)/ruby/intern.h psych_yaml_tree.o: $(hdrdir)/ruby/internal/anyargs.h psych_yaml_tree.o: $(hdrdir)/ruby/internal/arithmetic.h psych_yaml_tree.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -820,20 +863,6 @@ psych_yaml_tree.o: $(hdrdir)/ruby/internal/value_type.h psych_yaml_tree.o: $(hdrdir)/ruby/internal/variable.h psych_yaml_tree.o: $(hdrdir)/ruby/internal/warning_push.h psych_yaml_tree.o: $(hdrdir)/ruby/internal/xmalloc.h -psych_yaml_tree.o: $(hdrdir)/ruby/assert.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/assume.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/attributes.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/bool.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/inttypes.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/limits.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/long_long.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/stdalign.h -psych_yaml_tree.o: $(hdrdir)/ruby/backward/2/stdarg.h -psych_yaml_tree.o: $(hdrdir)/ruby/defines.h -psych_yaml_tree.o: $(hdrdir)/ruby/encoding.h -psych_yaml_tree.o: $(hdrdir)/ruby/intern.h psych_yaml_tree.o: $(hdrdir)/ruby/missing.h psych_yaml_tree.o: $(hdrdir)/ruby/onigmo.h psych_yaml_tree.o: $(hdrdir)/ruby/oniguruma.h @@ -846,4 +875,20 @@ psych_yaml_tree.o: psych_parser.h psych_yaml_tree.o: psych_to_ruby.h psych_yaml_tree.o: psych_yaml_tree.c psych_yaml_tree.o: psych_yaml_tree.h +psych_yaml_tree.o: yaml/yaml.h +reader.o: $(RUBY_EXTCONF_H) +reader.o: yaml/config.h +reader.o: yaml/reader.c +reader.o: yaml/yaml.h +reader.o: yaml/yaml_private.h +scanner.o: $(RUBY_EXTCONF_H) +scanner.o: yaml/config.h +scanner.o: yaml/scanner.c +scanner.o: yaml/yaml.h +scanner.o: yaml/yaml_private.h +writer.o: $(RUBY_EXTCONF_H) +writer.o: yaml/config.h +writer.o: yaml/writer.c +writer.o: yaml/yaml.h +writer.o: yaml/yaml_private.h # AUTOGENERATED DEPENDENCIES END -- cgit v1.2.3