diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-05 13:22:29 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-05 13:22:29 +0000 |
commit | 6bbbf9889d8638b6b11e199b1cb0ec15a7170a13 (patch) | |
tree | 2563d20c5166b07c3bbf58d7e2e4f57668877618 | |
parent | 2ca7298386fe83c2477870b7020dca593b865733 (diff) | |
download | ruby-6bbbf9889d8638b6b11e199b1cb0ec15a7170a13.tar.gz |
* thread.c (thread_initialize): NUM2INT() returns int.
* thread.c (timer_thread_function), thread_pthread.c (thread_timer),
thread_win32.c (timer_thread_func), thread_{pthread,win32}.c
(rb_thread_create_timer_thread): passing VM.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | thread.c | 7 | ||||
-rw-r--r-- | thread_pthread.c | 5 | ||||
-rw-r--r-- | thread_win32.c | 6 |
4 files changed, 16 insertions, 10 deletions
@@ -1,3 +1,11 @@ +Sat Jul 5 22:22:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * thread.c (thread_initialize): NUM2INT() returns int. + + * thread.c (timer_thread_function), thread_pthread.c (thread_timer), + thread_win32.c (timer_thread_func), thread_{pthread,win32}.c + (rb_thread_create_timer_thread): passing VM. + Sat Jul 5 20:53:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp> * test/win32ole/test_word.rb: check word installed. @@ -151,6 +151,7 @@ rb_thread_s_debug_set(VALUE self, VALUE val) #endif NOINLINE(static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start)); +static void timer_thread_function(void *); #if defined(_WIN32) #include "thread_win32.c" @@ -490,7 +491,7 @@ thread_initialize(VALUE thread, VALUE args) rb_raise(rb_eThreadError, "already initialized thread - %s", file); } - rb_raise(rb_eThreadError, "already initialized thread - %s:%ld", + rb_raise(rb_eThreadError, "already initialized thread - %s:%d", file, NUM2INT(line)); } return thread_create_core(thread, args, 0); @@ -2050,9 +2051,9 @@ rb_gc_save_machine_context(rb_thread_t *th) int rb_get_next_signal(rb_vm_t *vm); static void -timer_thread_function(void) +timer_thread_function(void *arg) { - rb_vm_t *vm = GET_VM(); /* TODO: fix me for Multi-VM */ + rb_vm_t *vm = arg; /* TODO: fix me for Multi-VM */ /* for time slice */ RUBY_VM_SET_TIMER_INTERRUPT(vm->running_thread); diff --git a/thread_pthread.c b/thread_pthread.c index bcab6acddb..55e7238d2d 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -641,7 +641,6 @@ remove_signal_thread_list(rb_thread_t *th) } static pthread_t timer_thread_id; -static void timer_thread_function(void); static void * thread_timer(void *dummy) @@ -670,7 +669,7 @@ thread_timer(void *dummy) }); } #endif - timer_thread_function(); + timer_thread_function(dummy); } return NULL; } @@ -688,7 +687,7 @@ rb_thread_create_timer_thread(void) #ifdef PTHREAD_STACK_MIN pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN); #endif - err = pthread_create(&timer_thread_id, &attr, thread_timer, 0); + err = pthread_create(&timer_thread_id, &attr, thread_timer, GET_VM()); if (err != 0) { rb_bug("rb_thread_create_timer_thread: return non-zero (%d)", err); } diff --git a/thread_win32.c b/thread_win32.c index 8365ff2569..98fcb8d375 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -537,8 +537,6 @@ ubf_handle(void *ptr) w32_set_event(th->native_thread_data.interrupt_event); } -static void timer_thread_function(void); - static HANDLE timer_thread_id = 0; static unsigned long _stdcall @@ -547,7 +545,7 @@ timer_thread_func(void *dummy) thread_debug("timer_thread\n"); while (system_working) { Sleep(WIN32_WAIT_TIMEOUT); - timer_thread_function(); + timer_thread_function(dummy); } thread_debug("timer killed\n"); return 0; @@ -557,7 +555,7 @@ void rb_thread_create_timer_thread(void) { if (timer_thread_id == 0) { - timer_thread_id = w32_create_thread(1024, timer_thread_func, 0); + timer_thread_id = w32_create_thread(1024, timer_thread_func, GET_VM()); w32_resume_thread(timer_thread_id); } } |