diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | include/ruby/intern.h | 1 | ||||
-rw-r--r-- | regint.h | 3 | ||||
-rw-r--r-- | thread.c | 13 |
4 files changed, 25 insertions, 2 deletions
@@ -1,3 +1,13 @@ +Wed Aug 13 17:18:37 2008 Koichi Sasada <ko1@atdot.net> + + * 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 <knu@iDaemons.org> * 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) @@ -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 @@ -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 |