From 8f1e7a37e520fd1b105bec102cb05d2b49acf4a2 Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 13 Aug 2008 08:21:24 +0000 Subject: [PATCH] * thread.c (rb_thread_check_ints): added. please note that this function may cause ruby's thread switching. * include/ruby/intern.h: ditto. * regint.h: use rb_thread_check_ints() instead of RUBY_CHECK_INTS() directly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ include/ruby/intern.h | 1 + regint.h | 3 +-- thread.c | 13 +++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87c4370156..ec202d1a8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Wed Aug 13 17:18:37 2008 Koichi Sasada + + * thread.c (rb_thread_check_ints): added. please note that + this function may cause ruby's thread switching. + + * include/ruby/intern.h: ditto. + + * regint.h: use rb_thread_check_ints() instead of + RUBY_CHECK_INTS() directly. + Wed Aug 13 17:01:36 2008 Akinori MUSHA * golf_prelude.rb, lib/set.rb (TC_Set#test_each), diff --git a/include/ruby/intern.h b/include/ruby/intern.h index df9354918a..eed85edc3c 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -654,6 +654,7 @@ VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, .. /* thread.c */ typedef void rb_unblock_function_t(void *); typedef VALUE rb_blocking_function_t(void *); +void rb_thread_check_ints(void); VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1, rb_unblock_function_t *ubf, void *data2); #define RB_UBF_DFL ((rb_unblock_function_t *)-1) diff --git a/regint.h b/regint.h index b9bb3b89b3..fc37f65680 100644 --- a/regint.h +++ b/regint.h @@ -115,8 +115,7 @@ #ifdef RUBY -#include "vm_core.h" -#define CHECK_INTERRUPT_IN_MATCH_AT RUBY_VM_CHECK_INTS() +#define CHECK_INTERRUPT_IN_MATCH_AT rb_thread_check_ints() #define onig_st_init_table st_init_table #define onig_st_init_table_with_size st_init_table_with_size #define onig_st_init_numtable st_init_numtable diff --git a/thread.c b/thread.c index 20cb6b931f..e30e4e33d7 100644 --- a/thread.c +++ b/thread.c @@ -877,6 +877,19 @@ rb_thread_polling(void) } } +/* + * CAUTION: This function causes thread switching. + * rb_thread_check_ints() check ruby's interrupts. + * some interrupt needs thread switching/invoke handlers, + * and so on. + */ + +void +rb_thread_check_ints(void) +{ + RUBY_VM_CHECK_INTS(); +} + struct timeval rb_time_timeval(); void