Граф коммитов

41 Коммитов

Автор SHA1 Сообщение Дата
nobu 4c4aef3bbe * thread.c (rb_thread_execute_interrupts): needs
rb_signal_buff_size to be declared.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19 05:32:05 +00:00
naruse d4b3e8ae70 * signal.c (rb_signal_buff_size): defined for check whether signal
is in the buffer or not.

* thread_pthread.c (thread_timer): don't exit the loop when signal
  is in the buffer. [ruby-dev:37637]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-01 21:50:01 +00:00
nobu 541915b239 * compile.c (iseq_compile_each), gc.c (assign_heap_slot),
(gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add),
  proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all),
  (thread_start_func_2, blocking_region_begin, blocking_region_end),
  (rb_thread_kill), thread_pthread.c (native_thread_create),
  (ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c
  (vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state),
  (vm_call0): use void pointer for %p.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-09 04:33:55 +00:00
nobu 7348aa6113 * gc.c (ruby_stack_check): no check if using sigaltstack.
* signal.c (register_sigaltstack): minimum size is insufficient for
  method calls.

* signal.c (sigsegv): handles stack overflow if possible.

* thread.c (ruby_thread_stack_overflow): helper function to raise
  sysstack_error.

* thread_pthread.c (ruby_stack_overflowed_p): checks for stack
  overflow.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-27 06:05:07 +00:00
nobu 641f43de97 * thread_pthread.c (thread_timer): checks working flags again.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-08 15:31:05 +00:00
nobu b15e0697fd * thread_pthread.c (rb_thread_create_timer_thread): do not wait never
coming signal if failed to create tiemr thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-07 16:48:22 +00:00
nobu 006be2d790 * thread_pthread.c (native_cond_timedwait): returns error code.
* thread_pthread.c (thread_timer): typo fixed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20140 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-07 16:42:31 +00:00
nobu 8da157ae51 * thread_pthread.c (thread_timer, rb_thread_create_timer_thread):
handshakes properly.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20138 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-07 16:14:48 +00:00
nobu b81ccf3167 * thread_pthread.c (thread_timer): fixed typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-07 13:47:11 +00:00
nobu 3899005d2e * thread_pthread.c (thread_timer): initializes mutex each time.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-07 13:42:36 +00:00
nobu 2657faae01 * thread.c (thread_timer): pthread_cond_timedwait returns ETIMEDOUT
when timed out.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06 22:43:30 +00:00
nobu 90c6c35f2e * thread_pthread.c (thread_timer): uses pthread_cond_timedwait always
instead of pthread_kill.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06 22:12:20 +00:00
nobu 4f3abb93f6 * thread.c (thread_timer): uses timedwait on cygwin.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20123 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06 19:02:35 +00:00
nobu 5732566f4d * thread.c (rb_thread_stop_timer_thread): terminates timer thread
immediately.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06 13:21:26 +00:00
ko1 16612b360b * thread.c, vm_core.h: add manual priority support
using time slice.  if you enable USE_NATIVE_THREAD_PRIORITY
  macro, this mechanism is ignored.  [ruby-dev:33124]
* thread_pthread.c, thread_win32.c: ditto.
* test/ruby/test_thread.rb: fix test parameter.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 07:53:35 +00:00
nobu 1c22ef1705 * configure.in (shutdown, sched_yield, pthread_attr_setinheritsched):
check for Haiku.

* eval_intern.h, io.c, thread_pthread.c: use autoconfisticated results.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-08 08:03:19 +00:00
naruse 48e21d2051 * eval_intern.h: Add support to Haiku. see [ruby-core:18110]
* include/ruby/defines.h: ditto.

* configure.in: ditto.

* thread_pthread.c: ditto.

* io.c: ditto.

* lib/mkmf.rb: ditto.

* ext/socket/getaddrinfo.c: ditto.

* ext/socket/extconf.rb: ditto.

* ext/socket/socket.c: ditto.

* ext/socket/addrinfo.h: ditto.

* ext/socket/getnameinfo.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-06 20:52:44 +00:00
nobu 47e3f4e1ae * thread.c (thread_start_func_2): wake up joining threads.
* thread.c (sleep_forever, sleep_timeval): return when interrupted.
  [ruby-dev:35542]

* thread.c (timer_thread_function): restore main thread status.
  [ruby-core:17270]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-16 19:19:36 +00:00
nobu a14682906f * thread.c (sleep_forever): wait until timed out. [ruby-core:17270]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-09 13:41:19 +00:00
nobu 7df7982b47 * thread_{pthread,win32}.c (native_sleep): wait until timed out.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-09 11:35:06 +00:00
nobu a534e39a87 * thread_{pthread,win32}.c (rb_thread_create_timer_thread): needs more
stack for debug.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-09 09:17:09 +00:00
nobu fc5746681e * thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if
found.  [ruby-core:17624]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-06 15:59:40 +00:00
nobu 6bbbf9889d * 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
2008-07-05 13:22:29 +00:00
nobu 42eabfcca2 * thread_pthread.c (native_thread_init_stack): suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-17 12:58:31 +00:00
nobu fc3c60f608 * gc.h (STACK_UPPER): moved from gc.c
* thread.c, thread_{pthread,win32}.c (ruby_init_stack,
  ruby_thread_init_stack): moved stack initialization from gc.c.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-14 02:59:19 +00:00
mame 6f5aaff73b * thread.c, vm_core.h, vm.c, thread_pthread.c, thread_win32.c: add
deadlock detection.  [ruby-dev:35044]

* bootstraptest/test_thread.rb: add tests for above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-12 13:01:38 +00:00
ko1 72ba13aa8e * array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c,
enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c,
  io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c,
  string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c,
  vm.c, gc.c:
  allocated memory objects by xmalloc (ruby_xmalloc) should be
  freed by xfree (ruby_xfree).
* ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
  ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c,
  ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c,
  ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c,
  ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c:
  ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-08 10:01:40 +00:00
nobu 1b63d7bc92 * vm_core.h (struct rb_unblock_callback), thread.c
(set_unblock_function), thread_{pthread,win32}.c (native_sleep):
  extracted from struct rb_thread_struct.

* thread.c (reset_unblock_function): not check interrupts at leaving
  blocking region.  [ruby-dev:34874]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-30 01:52:38 +00:00
ko1 67d0fbd03f * thread_pthread.c (native_thread_apply_priority):
fix argument range check.  [ruby-dev:33124]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-19 12:09:14 +00:00
yugui 02838f3508 Kernel#.sleep used never to sleep on Mac OS X. Fixed it and added error checks.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-17 03:37:37 +00:00
nobu d92efa3c0b * io.c (copy_stream_func): suppress warnings.
* thread_pthread.c (add_signal_thread_list): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-20 06:14:49 +00:00
nobu eb18a827fb * thread_pthread.c (native_sleep): sleep_cond is initialized at
creation.  [ruby-Patches-19361].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-10 01:27:25 +00:00
nobu 3a4bfbad09 * thread.c (thread_cleanup_func): ignore errors from destroying mutex
of dead thread.  [ruby-core:15069]

* thread_pthread.c, thread_win32.c (native_thread_destroy): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-18 06:57:08 +00:00
akr 6cdef2dc7e * $Date$ keyword removed to avoid inclusion of locale dependent
string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-06 15:49:38 +00:00
akr dbc78facbc unused variable removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-05 19:22:44 +00:00
matz d4c2cca3cb * thread_pthread.c (native_sleep): timespec tv_sec may overflow on
some platform.  a patch from zunda <zunda616e AT yahoo.co.jp> in 
  [ruby-dev:32904].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-31 13:56:42 +00:00
ko1 42f0b52f77 * thread_pthread.c, thread_pthread.h, thread_win32.c,
thread_win32.c: make some functions static functions.
  a patch from Tadashi Saito <shiba AT mail2.accsnet.ne.jp>
  in [ruby-core:14407]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 04:35:17 +00:00
ko1 5f0b8afb97 * vm_core.h, thread.c, cont.c: add RUBY_VM_SET_INTERRUPT(),
RUBY_VM_SET_TIMER_INTERRUPT(), RUBY_VM_INTERRUPTED().
* thread.c, thread_pthread.c, thread_win32.c: fix to ignore time slice
  event until sleep.
* bootstraptest/test_thread.rb: add a test for time limited join test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 04:16:06 +00:00
ko1 5c00dd28c5 * gc.h: extern variable should not be initialized.
* thread_pthread.c: add a parameter.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 08:13:39 +00:00
ko1 cb7e82a94a * thread_pthread.c (native_thread_apply_priority): check
_POSIX_PRIORITY_SCHEDULING for OpenBSD.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-20 10:14:16 +00:00
ko1 c334a09f7a * common.mk, *.ci: renamed to *.c.
* eval_laod.c: renamed to load.c.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-20 09:29:46 +00:00