Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Nov 28, 2012

  1. Koichi Sasada

    * thread_win32.c: catch up latest change of BLOCKING_REGION.

    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored November 28, 2012

Jun 17, 2012

  1. Nobuyoshi Nakada

    thread_win32.h: rb_thread_lock_t for USE_WIN32_MUTEX

    * thread_win32.h (rb_thread_lock_t): make a union for USE_WIN32_MUTEX.
      this internal is used only in thread_win32.c, but has to be complete
      to define rb_thread_t.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36119 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 17, 2012
  2. Nobuyoshi Nakada

    thread_win32.c: USE_WIN32_MUTEX

    * thread_win32.c (native_mutex_lock, native_mutex_destroy): fix for
      USE_WIN32_MUTEX.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 17, 2012
  3. Nobuyoshi Nakada

    thread_win32.c: reserved pattern name

    * thread_win32.c (native_cond_timedwait_ms): rename reserved pattern
      name.  user defined symbols should not start with __.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36116 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 17, 2012

Jun 08, 2012

  1. unak

    * thread_win32.c (native_thread_create): add a comment.

    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 08, 2012

Mar 29, 2012

  1. unak

    * thread_win32.c (TIME_QUANTUM_USEC): 10ms(= old setting) [experimental]

      cf. [Bug #6098]
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored March 29, 2012

Jan 28, 2012

  1. Hiroshi Shirosaki

    * thread_win32.c (rb_w32_wait_events_blocking): use

      ruby_thread_from_native() instead of GET_THREAD() because
      GET_THREAD() doesn't always return the current thread and
      WaitForMultipleObjects() at rb_w32_read() doesn't return by
      Thread#kill. This fixes TestQueue#test_thr_kill failure on
      Windows.
    
    * thread_win32.c (rb_w32_wait_events): use ruby_thread_from_native()
      instead of GET_THREAD() for consistency with the above change.
    
    * thread_win32.c (rb_w32_sleep): ditto.
    
    * thread_win32.c (rb_w32_Sleep): ditto.
      [ruby-dev:45149] [Bug #5812]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored January 28, 2012

Jul 03, 2011

  1. Koichi Sasada

    * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p,

      RB_RESERVED_FD_P): added.  This C API is to limit to access
      fds which are used by RubyVM internal.  In this version of
      CRuby, return 1 if fd is communication pipe.
      If your application needs to close all file descriptors to
      preent resource leak, skip internal fds using this C API.
      We also define a macro RB_RESERVED_FD_P(fd).  So you can write
      #ifndef RB_RESERVED_FD_P
      #define RB_RESERVED_FD_P(fd) 0
      #endif
      for Ruby 1.9.2 or previous version to write compatible extensions.
      See [ruby-core:37727]
    * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
    * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored July 03, 2011

Jun 28, 2011

  1. unak

    * thread_win32.c (native_stop_timer_thread): fixed commit miss of

      r32244.  grep sources before changing the signature of a function.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 28, 2011

Jun 27, 2011

  1. Koichi Sasada

    * thread_pthread.c: Stop polling in the timer thread when there are

      no waiting thread.  If there are 2 or more runnable threads,
      the timer thread does polling.  Avoid polling makes power save
      for several computers (0.2W per a Ruby process, when I measured).
      If outside-event such as signal or Thread#kill was occuerred
      when the timer thread does not do polling, then wake-up
      the timer thread using communication-pipe (the timer thread
      waits this communication-pipe with select(2)).
      The discussion about this modification can be found from the post
      [ruby-core:33456] and other related posts.
      Note that Eric Wong and KOSAKI Motohiro give us the huge
      contributions for this modification.  Thanks.
    * thread_pthread.c (rb_thread_wakeup_timer_thread): add a function.
      This function wakes up the timer thread using communication-pipe.
    * thread.c (rb_thread_stop_timer_thread): add a parameter which
      specify closing communication-pipe or not.
    * thread.c (rb_thread_terminate_all): do not stop timer thread here
      (ruby_cleanup() terminate timer thread).
    * signal.c: wake up timer thread using
      rb_thread_wakeup_timer_thread() from signal handler.
    * eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1).
    * process.c: use rb_thread_stop_timer_thread(0)
      (reuse communication-pipe).
    * thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy
      function.
    * vm_core.h: add and fix decl. of functions.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 27, 2011

Jun 15, 2011

  1. unak

    * thread.c (do_select): Windows: no need to poll if select(2) is

      cancelable.
    
    * thread_win32.c (native_fd_select): new function to make select(2)
      cancelable.
    
    * thread_win32.c (rb_w32_check_interrupt): new function for checking
      interrupt.
    
    * win32/win32.c (rb_w32_select_with_thread): new function. cancelable
      select(2).
    
    * win32/win32.c (rb_w32_select): use above function internally.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 15, 2011

Jun 13, 2011

  1. kosaki

    * thread.c (rb_thread_schedule_rec): call gvl_yield() unconditionally.

    * thread_pthread.c: remove HAVE_GVL_YIELD macro.
    * thread_win32.c (gvl_yield): new. this fallback logic was moved from
      rb_thread_schedule_rec().
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 13, 2011
  2. kosaki

    * thread_pthread.c: rewrite GVL completely.

    * thread_win32.c: ditto.
    * thread_pthread.h: ditto.
    * vm_core.h: ditto.
    * thread.c: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 13, 2011
  3. kosaki

    * thread_win32.c (native_cond_signal): remove unnecessary rb_bug().

      It's addional fix for r32021. [Bug #4696]
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 13, 2011

Jun 12, 2011

  1. Nobuyoshi Nakada

    * atomic.h (ATOMIC_OR): _InterlockedOr is not available on migw.

    * gc.c (rb_gc_set_params): VM_OBJSPACE is disabled on mignw.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored June 12, 2011

May 07, 2011

  1. kosaki

    remove debugging code

    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 07, 2011
  2. kosaki

    fix win32 native_cond_timedwait() makes SIGSEGV.

    * thread_win32.h (rb_thread_cond_struct): add prev field instead of last.
      (ie cond_event_entry is now using double linked list instead of single)
    * thread_win32.c (cond_event_entry): add prev field.
    
    * thread_win32.c (__cond_timedwait): remove entry properly if timeout
      was happen.
    
    * thread_win32.c (native_cond_signal): change for double linked list.
    * thread_win32.c (native_cond_broadcast): ditto.
    * thread_win32.c (native_cond_initialize): ditto.
    
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 07, 2011
  3. kosaki

    fix mutex deadlock test hang-up.

    * thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
      mistake. (ie fix hang-up native_cond_timedwait())
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 07, 2011

May 06, 2011

  1. kosaki

    sleep_cond use monotonic time if possible.

    * thread_pthread.c (native_thread_init): change sleep_cond
      attribute to monotonic.
    * thread_pthread.c (native_sleep): use native_cond_timeout().
    
    * thread_pthread.c (native_cond_timeout): add overflow care.
    * thread_win32.c (native_cond_timeout): ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 06, 2011
  2. kosaki

    fix win32 compile error.

    * thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
      RB_CONDATTR_CLOCK_MONOTONIC always.
    * thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 06, 2011
  3. kosaki

    mutex: deadlock check timeout use monotonic time.

    * thread_pthread.c (native_cond_timeout): new internal api.
      it calculate a proper time for argument of native_cond_timedwait().
    * thread_win32.c (native_cond_timeout): ditto.
    
    * thread_pthread.c (thread_timer): use native_cond_timeout()
      instead of get_ts.
    * thread.c (lock_func): ditto.
    
    * thread_pthread.c (get_ts): removed. use native_cond_timeout().
    * thread.c (init_lock_timeout): ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 06, 2011
  4. kosaki

    * thread_pthread.h (rb_thread_cond_t): add clockid field. it's

      no longer an alias of pthread_cond_t.
    * thread_pthread.c: adapt new rb_thread_cond_t type.
    * thread.c (mutex_alloc): ditto.
    * thread_win32.c (native_cond_initialize): ditto.
    * configure.in: add check for pthread_cond_attr_setclock() and
      clockid_t type.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 06, 2011

May 05, 2011

  1. kosaki

    * thread_pthread.c (native_mutex_reinitialize_atfork): removed

      unused macro.
    * thread_win32.c (native_mutex_reinitialize_atfork): ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored May 05, 2011

Apr 29, 2011

  1. Nobuyoshi Nakada

    * thread_win32.c, include/ruby/win32.h: add prototypes.

    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored April 29, 2011
  2. kosaki

    * thread_win32.c (native_cond_timedwait): New. r31373 caused

      win32 build failure.
    
    * thread_win32.c (__cond_timedwait, abs_timespec_to_timeout_ms):
      New helper functions.
    
    * win32/win32.c (rb_w32_time_subtract): rename from subtract and
      remove static.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored April 29, 2011

Dec 20, 2010

  1. kosaki

    * 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
    authored December 20, 2010

Nov 28, 2010

  1. Nobuyoshi Nakada

    * thread_win32.c (gvl_release, gvl_init): suppress warnings.

    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored November 28, 2010

Nov 27, 2010

  1. Koichi Sasada

    * 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
    authored November 27, 2010

Oct 27, 2010

  1. unak

    * thread_win32.c (w32_error): should get error no only once, because

      the result of the second getting will indicate the error of the
      first FormatMessage() call.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored October 27, 2010

Oct 26, 2010

  1. Nobuyoshi Nakada

    * Makefile.in (ASFLAGS): needs INCFLAGS.

    * configure.in (rb_cv_dynamic_alloca): check if extra source for
      dynamic size alloca.
    
    * missing/x86_64-chkstk.s (___chkstk): necessary for alloca of
      amd64-mingw32msvc-gcc on Ubutu.
    
    * thread_win32.c (ruby_alloca_chkstk): check stack overflow
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored October 26, 2010

Oct 13, 2010

  1. unak

    * thread_win32.c (w32_error): get English message first, instead

      of system default. see [ruby-core:32765].
      [experimental]
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored October 13, 2010

Oct 12, 2010

  1. Nobuyoshi Nakada

    * 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
    authored October 12, 2010

Sep 23, 2010

  1. * thread_win32.c (w32_wait_events, w32_close_handle): suppress warnings.

      see [ruby-core:31932].
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29321 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored September 23, 2010

Aug 02, 2010

  1. unak

    * thread_win32.c (native_thread_join): need to wait thread, of course.

      [ruby-dev:41911]
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    authored August 02, 2010

Jun 05, 2010

  1. akr

    * 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
    authored June 05, 2010
Something went wrong with that request. Please try again.