diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-04 04:22:04 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-04 04:22:04 +0000 |
commit | c5bf9ceef62a5b645f5ec014004f2c716d138a3e (patch) | |
tree | 3b9d56591e73a9ef1249baecec40ead117734964 /thread.c | |
parent | 83e28e5176600760a92b724a405420a79e08b6b4 (diff) | |
download | ruby-c5bf9ceef62a5b645f5ec014004f2c716d138a3e.tar.gz |
* vm_core.h (struct rb_vm_struct): replaced signal staff with trap
staff.
* signal.c (signal_buff): per process resouce now.
* signal.c (trap_list): moved to VM.
* signal.c (rb_get_next_signal): reverted.
* signal.c (rb_trap_exit): trap_pending_list was no longer used.
* thread.c (timer_thread_function): delivers buffered per-process
signals to each VMs.
* vm.c (rb_vm_mark): marks trap_list.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19119 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -2226,24 +2226,24 @@ rb_gc_save_machine_context(rb_thread_t *th) * */ -int rb_get_next_signal(rb_vm_t *vm); +int rb_get_next_signal(void); static void timer_thread_function(void *arg) { rb_vm_t *vm = arg; /* TODO: fix me for Multi-VM */ + int sig; /* for time slice */ RUBY_VM_SET_TIMER_INTERRUPT(vm->running_thread); /* check signal */ - if (vm->buffered_signal_size && vm->main_thread->exec_signal == 0) { + if ((sig = rb_get_next_signal()) > 0) { rb_thread_t *mth = vm->main_thread; enum rb_thread_status prev_status = mth->status; - mth->exec_signal = rb_get_next_signal(vm); - thread_debug("main_thread: %s\n", thread_status_name(prev_status)); - thread_debug("buffered_signal_size: %ld, sig: %d\n", - (long)vm->buffered_signal_size, vm->main_thread->exec_signal); + thread_debug("main_thread: %s, sig: %d\n", + thread_status_name(prev_status), sig); + mth->exec_signal = sig; if (mth->status != THREAD_KILLED) mth->status = THREAD_RUNNABLE; rb_thread_interrupt(mth); mth->status = prev_status; |