Commit graph

7 commits

Author SHA1 Message Date
nagachika
a46136856c merge revision(s) 43996:
* ruby_atomic.h (ATOMIC_PTR_EXCHANGE): atomic exchange function for
	  a generic pointer.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@44317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-21 07:16:18 +00:00
nagachika
32716d474e merge revision(s) 43851,43882,43883,43995:
* ruby_atomic.h: use __atomic builtin functions supported by GCC.
	  __sync family are legacy functions now and it is recommended
	  that new code use the __atomic functions.
	  http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html

	* configure.in: check existence of __atomic functions.

	* ruby_atomic.h: define ATOMIC_SIZE_CAS() with
	  __atomic_compare_exchange_n() and refactoring.

	* ruby_atomic.h: remove duplicate definisions between ATOMIC_XXX
	  and ATOMIC_SIZE_XXX.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@44316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-21 07:02:57 +00:00
nagachika
34b8c43077 merge revision(s) 41759,41760,43356,43460,43677:
* ruby_atomic.h (ATOMIC_CAS): suppress C4022 and C4047 warnings in
	  VC6.  only InterlockedCompareExchange is declared using PVOID.

	* ruby_atomic.h (rb_w32_atomic_cas): call InterlockedCompareExchange
	  directly.

	* ruby_atomic.h (ATOMIC_CAS): fix missing function call.

	* ruby_atomic.h (ATOMIC_SIZE_CAS): new macro, compare and swap size_t.

	* ruby_atomic.h (ATOMIC_SIZE_CAS): fix compile error on Solaris
	  since r43460.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@44315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-21 06:47:16 +00:00
nagachika
7bc0cea739 merge revision(s) 40163: [Backport #8228]
* configure.in (AC_CHECK_HEADERS): atomic.h for Solaris atomic_ops.

	* ruby_atomic.h: Skip using Solaris10 atomic_ops on Solaris 9 or
	  earlier if atomic.h is not available. [ruby-dev:47229] [Bug #8228]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@40285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-13 18:04:57 +00:00
ngoto
5faf4cc77b * ruby_atomic.h (ATOMIC_CAS): added for Solaris and other platforms.
* ruby_atomic.h, signal.c (NEED_RUBY_ATOMIC_OPS): renamed from
  NEED_RUBY_ATOMIC_EXCHANGE.
* signal.c (ruby_atomic_compare_and_swap): naive, non-atomic
  compare-and-swap implementation only used for platforms without
  valid support for atomic operations.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-27 10:21:59 +00:00
kosaki
6190bb4d8a * ruby_atomic.h (ATOMIC_CAS): new macro for compare-and-exchange.
* vm_core.h (struct rb_thread_struct): add interrupt_mask member.
* thread.c (thread_create_core, Init_Thread): initialize
  th->thread_mask.

* vm_core.h (RUBY_VM_INTERRUPTED_ANY): new macro for avoiding
  bare th->interrupt_flag.
* vm_core.h (RUBY_VM_INTERRUPTED, RUBY_VM_INTERRUPTED): check
  th->interrupt_mask.
* thread.c (set_unblock_function, rb_thread_schedule): replace
  th->interrupt_flag with RUBY_VM_INTERRUPTED_ANY()

* signal.c (signal_exec): set up thread->interrupt_mask for
  preventing recursive trap handler.
* vm_core.h (RUBY_VM_CHECK_INTS, RUBY_VM_CHECK_INTS_BLOCKING): ditto.

* thread.c (rb_threadptr_execute_interrupts):
  don't process interrupt if it is masked.
  [Bug #6009] [ruby-core:42524]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-26 10:57:39 +00:00
ngoto
05a05cc62b * ruby_atomic.h: renamed from atomic.h to avoid header file name conflict
on Solaris 10. [ruby-dev:46414] [Bug #7287]
* gc.c, signal.c, vm_core.h, common.mk: reflect the rename from atomic.h
  to ruby_atomic.h.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 16:05:07 +00:00
Renamed from atomic.h (Browse further)