kosaki
4a9883e92f
* thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
...
if possible. based on a patch from Eric Wong. [ruby-core:36003].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 14:58:38 +00:00
kosaki
c06da4735d
* thread.c (rb_wait_for_single_fd): Fix wrong return value.
...
* test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
(TestWaitForSingleFD#test_wait_for_closed_pipe): test for it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 10:02:06 +00:00
kosaki
951b090130
* thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
...
based on a patch from Eric Wong at [ruby-core:35991].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 03:47:33 +00:00
kosaki
249fe0e742
* thread.c (rb_wait_for_single_fd): new. poll(2) based backend for rb_wait_for_single_fd().
...
Now only Linux uses it.
The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 01:07:03 +00:00
kosaki
9be37ca7d5
* thread.c (rb_wait_for_single_fd): new.
...
* thread.c (select_single): select(2) based backend for rb_wait_for_single_fd().
* io.c (make_writeconv): use rb_wait_for_single_fd() instaed of
rb_thread_fd_select().
* io.c (rb_io_wait_readable): ditto.
* thread.c (rb_thread_wait_fd_rw): ditto.
* io.c (wait_readable): removed.
* thread.c (init_set_fd): new helper function.
* include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
new constant for rb_single_wait_fd().
The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 00:59:57 +00:00
kosaki
f081eca1d7
* thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
...
out by Eric Wong. [ruby-core:35982]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 22:37:07 +00:00
nobu
55a1b1d97a
* thread.c (rb_thread_select): preserve errno if no error
...
occurred.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-02 19:27:59 +00:00
kosaki
4d88169267
* thread.c (rb_thread_select): release GVL while waiting select().
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-30 16:08:20 +00:00
kosaki
3c68095b8a
* thread.c (do_select): Change arugment type to rb_fdset_t.
...
Now do_select() is free from unexpected hangup if
HAVE_RB_FD_INIT=1 [Bug #4636 ]
* thread.c (rb_thread_fd_select, rb_thread_wait_fd_rw):
adapt new argument type.
* thread.c (rb_thread_select): make dummy implementation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-30 11:23:08 +00:00
kosaki
225fa965bc
* thread.c (rb_fd_copy): Change function argument. Now
...
rb_fd_copy() has fully copy semantics.
* include/ruby/intern.h: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-30 11:18:14 +00:00
kosaki
4c926e9f15
* thread.c (do_select): remove useless ifdef. time calculation
...
is not heavy weight.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-30 11:08:39 +00:00
kosaki
9d4ae4ab0c
fix indentation
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-29 03:23:13 +00:00
kosaki
6998f013ab
* thread.c (lock_func): small cleanup.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-29 01:18:11 +00:00
kosaki
74c5e807f7
* thread.c (rb_mutex_lock, lock_func): Avoid busy loop and
...
performance degression. bm_vm3_thread_mutex.rb performance
change from 109.064sec to 16.331sec.
* thread.c (init_lock_timeout): New helper function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-29 01:11:28 +00:00
nagachika
d4d13162c5
* thread.c (thread_fd_close_i): IOError exception should be assigned
...
to rb_thread_t::thrown_errinfo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-13 15:43:13 +00:00
nobu
c4cc4d31e6
* thread.c (exec_recursive): prevent temporary objects from GC.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30924 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-20 07:26:48 +00:00
nagachika
d7feebb4b3
* thread.c (rb_thread_io_blocking_region): reset th->waiting_fd
...
after blocking region, because remaining waiting_fd might
cause unnecessary IOError.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-14 14:13:46 +00:00
nobu
58b325366d
* thread.c (rb_thread_io_blocking_region): new function to run
...
blocking region with GIL released, for fd.
* thread.c (rb_thread_fd_close): implement. [ruby-core:35203]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-12 05:44:23 +00:00
nagachika
a2ba50d971
* thread.c (thread_start_func_2): check deadlock condition before
...
release thread stack. fix memory violation when deadlock detected.
reported by Max Aller. [Bug #4009 ] [ruby-core:32982]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-31 12:40:19 +00:00
akr
c36ad781ef
* thread.c: parenthesize macro arguments.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-08 10:29:15 +00:00
kosaki
e271684d2f
* thread.c (rb_thread_atfork): Add small comment why we need
...
reset random seed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-25 08:50:53 +00:00
kosaki
1ff6a1953c
* thread.c (thread_cleanup_func): Moved interrupted_lock
...
destroying code from native_thread_destroy() to
thread_cleanup_func() because it's platform independent logic.
* thread_win32.c (native_thread_destroy): ditto.
* thread_pthread.c (native_thread_destroy): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-20 15:20:17 +00:00
kosaki
97da02b2a6
* thread.c (thread_cleanup_func): Don't touch native threading
...
resource at fork. Sadly this is purely bandaid. We need to
implement proper fix later. [Bug #4169 ] [ruby-core:33767]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-20 15:16:41 +00:00
ko1
450463d5fb
* thread.c, vm_core.h: make gvl_acquire/release/init/destruct
...
APIs to modularize GVL implementation.
* thread_pthread.c, thread_pthread.h: Two GVL implementations.
(1) Simple locking GVL which is same as existing GVL.
(2) Wake-up queued threads. The wake-up order is simple FIFO.
(We can make several queues to support exact priorities, however
this causes some issues such as priority inversion and so on.)
This impl. prevents spin-loop (*1) caused on SMP environemnts.
*1: Only one Ruby thread acqures GVL again and again.
Bug #2359 [ruby-core:26694]
* thread_win32.c, thread_win32.h: Using simple lock
not by CRITICAL_SECTION but by Mutex.
Bug #3890 [ruby-dev:42315]
* vm.c (ruby_vm_destruct): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-27 20:15:59 +00:00
nobu
cea3919ae6
* configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
...
specifier if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 15:03:51 +00:00
nobu
d410639a6d
* compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
...
(syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
(run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
(rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
thread.c (rb_thread_local_aref),
variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
(rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
ext/iconv/iconv.c (map_charset): use st_data_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 14:47:23 +00:00
nobu
ff6ce776cb
* vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
...
declarations from thread.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-09 20:33:21 +00:00
nobu
549b0c53a8
* thread.c (thread_reset_event_flags, exec_event_hooks): ignore
...
hooks marked as removed.
* thread.c (thread_exec_event_hooks): remove hooks to be removed.
* thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
defer removing hooks if running the hooks. [ruby-dev:42350]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-09 02:00:21 +00:00
nobu
c3032fa749
* thread.c (rb_threadptr_exec_event_hooks): suppress each event
...
hooks separately.
* thread.c (thread_suppress_tracing): split from
ruby_suppress_tracing, accepting thread pointer and event mask.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-09 01:51:19 +00:00
nobu
88533a5351
* thread.c (rb_threadptr_remove_event_hook): fix typo.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-08 23:16:20 +00:00
naruse
e1d5d4e7f2
* enc/unicode.c (onigenc_unicode_property_name_to_ctype):
...
remove useless assignment.
* vm.c (vm_make_proc_from_block): ditto.
* variable.c (rb_ivar_count): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-03 22:57:23 +00:00
nobu
8086b525ac
* thread.c (ruby_suppress_tracing): restore the state and invoke
...
the func with normal state. a patch from Satoshi Shiba <shiba
AT rvm.jp> at [ruby-dev:42162]. [ruby-core:31783]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-01 03:56:39 +00:00
nobu
f214490d90
* thread.c (rb_gc_mark_threads): deprecated.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28989 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-14 12:04:31 +00:00
nobu
25b9eb5e57
* include/ruby/ruby.h (rb_data_type_t): restructured. [ruby-dev:41862]
...
add parent member.
* error.c (rb_typeddata_inherited_p): new function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-18 07:31:54 +00:00
nobu
c04d79f867
* thread.c (rb_thread_wakeup_alive): split from rb_thread_wakeup.
...
merged from r13476. c.f. [ruby-core:31320]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-17 04:04:51 +00:00
mame
d9d650ecfd
* thread.c (rb_fd_resize, rb_fd_copy): avoid NULL dereference upon
...
failed realloc by using xrealloc instead of not realloc. a patch
from Jim Meyering <meyering at redhat.com> in [ruby-core:30920]
[Bug #3489 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-28 12:58:03 +00:00
nobu
f5534ad5b4
* thread.c (Init_Thread): no need to suppress warning for
...
ruby_thread_set_native anymore.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-07 18:30:35 +00:00
akr
f40d2c9670
* vm.c (Init_BareVM): call Init_native_thread here.
...
* thread.c (Init_Thread): don't call Init_native_thread.
* thread_pthread.c (Init_native_thread): exported.
* thread_win32.c (Init_native_thread): ditto.
[ruby-dev:41536]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-05 23:26:43 +00:00
nobu
45f6fbf339
* removed trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-29 18:51:39 +00:00
tarui
12a99794b4
* thread.c (RB_GC_SAVE_MACHINE_CONTEXT), gc.c (ruby_gc_stress_start):
...
revert r28078.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-29 17:26:01 +00:00
tarui
d0914b3552
* thread.c (RB_GC_SAVE_MACHINE_CONTEXT): start GC
...
by switching the thread if gc_stress == true
* gc.c (ruby_gc_stress_start): dotto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-29 16:32:59 +00:00
kosaki
827a17bdbb
* thread.c (blocking_region_begin): avoid RUBY_VM_CHECK_INTS()
...
call during GVL state transition. [Bug#3354] [ruby-dev:41435]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-28 12:28:32 +00:00
usa
f82a6840a8
* thread.c (subtract_tv): if the rest is zero, should finish waiting
...
immediately.
* win32/win32.c (subtract): ditto.
based on a patch from Roger Pack in [ruby-core:27957].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-20 16:13:35 +00:00
marcandre
7729de4d91
* array.c: Documentation: change => in call-seq to ->.
...
Harmonize "#=>" in examples. [ruby-core:30206]
* bignum.c: ditto
* class.c: ditto
* compar.c: ditto
* cont.c: ditto
* dir.c: ditto
* encoding.c: ditto
* enum.c: ditto
* enumerator.c: ditto
* error.c: ditto
* eval.c: ditto
* file.c: ditto
* gc.c: ditto
* io.c: ditto
* load.c: ditto
* marshal.c: ditto
* math.c: ditto
* numeric.c: ditto
* object.c: ditto
* pack.c: ditto
* proc.c: ditto
* process.c: ditto
* random.c: ditto
* range.c: ditto
* re.c: ditto
* ruby.c: ditto
* signal.c: ditto
* sprintf.c: ditto
* string.c: ditto
* struct.c: ditto
* thread.c: ditto
* time.c: ditto
* transcode.c: ditto
* variable.c: ditto
* vm_eval.c: ditto
* vm_method.c: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-17 21:07:33 +00:00
mame
50587316b8
* vm_core.c (rb_thread_struct): add a field for sigaltstack.
...
* thread_pthread.c (thread_start_func_1): initialize machine stack
information.
* thread.c (thread_start_func_2): set sigaltstack for each sub thread.
[ruby-core:24540] [ruby-core:30207]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 16:20:26 +00:00
nobu
6aa05eba8a
* thread.c (rb_thread_aset): fixed argument type.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-08 15:27:48 +00:00
marcandre
1dee5e34a3
* error.c: RDoc for subclasses of Exception. [ruby-core:28394]
...
* cont.c: ditto
* enumerator.c: ditto
* io.c: ditto
* math.c: ditto
* numeric.c: ditto
* proc.c: ditto
* re.c: ditto
* thread.c: ditto
* transcode.c: ditto. Thanks to Run Paint for some of the documentation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-08 04:50:09 +00:00
mame
97cfd1869c
* thread. (rb_thread_terminate_all): revert r24591 which caused SEGV
...
sometimes. [ruby-dev:40936] [ruby-core:27245] [ruby-core:27416]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-28 13:56:32 +00:00
nobu
92e2b86c3d
* thread.c (timer_thread_function): unused variable.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-28 00:47:19 +00:00
mame
4af243a8af
* eval.c (ruby_cleanup): before cleanup, check signal buffer and run
...
handler if any. [ruby-core:20970]
* thread.c (rb_threadptr_check_signal): separeted from
timer_thread_function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-27 12:27:13 +00:00