summaryrefslogtreecommitdiff
path: root/thread_pthread.c
AgeCommit message (Collapse)Author
2013-06-07* internal.h (numberof): Gathered from various files.akr
* array.c, math.c, thread_pthread.c, iseq.c, enum.c, string.c, io.c, load.c, compile.c, struct.c, eval.c, gc.c, parse.y, process.c, error.c, ruby.c: Remove the definitions of numberof. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-27* thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.akr
This fixes a compilation failure while cross-compiling for Tensilica Xtensa Processor. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-26* thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.akr
This fixes a compilation failure while cross-compiling for ARM. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-04* thread_pthread.c: Fixes wrong scopes of #if USE_SLEEPY_TIMER_THREADyugui
.. #endif sections. This fixes a build error on NativeClient. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-04* thread_pthread.c (ruby_init_stack): Avoid using uninitialized value.yugui
stackaddr and size are not set if get_stack() fails. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-30timev.h: move time_t stuffsnobu
* timev.h (TYPEOF_TIMEVAL_TV_SEC, unsigned_time_t): move from time.c. * thread.c: use definitions in timev.h. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-27thread_pthread.c: poll.h is already includednobu
* thread_pthread.c (poll.h): already included in ruby/io.h from thread.c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-26* internal.h: Define TIMET_MAX and TIMET_MIN here.akr
* time.c: Remove TIMET_MAX and TIMET_MIN definitions. * thread.c: Ditto. * thread_pthread.c: Remove TIMET_MAX definition. * thread_win32.c: Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16* configure.in: check struct timeval exist or not.kosaki
* include/ruby/missing.h (struct timeval): check HAVE_STRUCT_TIMEVAL properly. and don't include sys/time.h if struct timeval exist. * file.c: include sys/time.h explicitly. * random.c: ditto. * thread_pthread.c: ditto. * time.c: ditto. * ext/date/date_strftime.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-15* thread_pthread.c (numberof): renamed from ARRAY_SIZE() becausekosaki
other all files use numberof(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (ARRAY_SIZE): new.kosaki
* thread_pthread.c (gvl_acquire_common): use low priority notification for avoiding timer thread interval confusion. If we use timer_thread_pipe[1], every gvl_yield() request one more gvl_yield(). It lead to thread starvation. [Bug #7999] [ruby-core:53095] * thread_pthread.c (rb_reserved_fd_p): adds timer_thread_pipe_low to reserved fds. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (rb_thread_wakeup_timer_thread_fd): add fdkosaki
argument and remove hardcoded dependency of timer_thread_pipe[1]. * thread_pthread.c (consume_communication_pipe): add fd argument. * thread_pthread.c (close_communication_pipe): ditto. * thread_pthread.c (timer_thread_sleep): adjust the above changes. * thread_pthread.c (setup_communication_pipe_internal): factor out pipe initialize logic. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (ubf_select): add to small comments why wekosaki
need to call rb_thread_wakeup_timer_thread(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (rb_thread_create_timer_thread): factor outkosaki
creating communication pipe logic into separate function. * thread_pthread.c (setup_communication_pipe): new helper function. * thread_pthread.c (set_nonblock): moves a definition before setup_communication_pipe. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (consume_communication_pipe): retry whenkosaki
read returned CCP_READ_BUFF_SIZE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (timer_thread_sleep): use poll() instead ofkosaki
select(). select doesn't work if timer_thread_pipe[0] is greater than FD_SETSIZE. * thread_pthread.c (USE_SLEEPY_TIMER_THREAD): add a dependency against poll. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (USE_SLEEPY_TIMER_THREAD): use more accuratekosaki
ifdef condtions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10* thread_pthread.c (set_nonblock): new helper function for set O_NONBLOCK.kosaki
* thread_pthread.c (rb_thread_create_timer_thread): set O_NONBLOCK to timer_thread_pipe[0] too. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-23* thread_pthread.c (ruby_init_stack): ignore `STACK_END_ADDRESS'ko1
if Ruby interpreter is running on co-routine. [Feature #2294] https://bugs.ruby-lang.org/issues/2294#note-18 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-15* thread_pthread.c (gvl_init): Reset gvl.wait_yield explicitly whenkosaki
fork()ing. Patch by Apollon Oikonomopoulos. Thanks! [Bug #7693][ruby-core:51424] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-03* configure.in (OBJCOPY): Fixes build error for NativeClient.yugui
Avoid disabling OBJCOPY for NativeClient. * thread_pthread.c (rb_reserved_fd_p): USE_SLEEPY_TIMER_THREAD is always defined. Fixes compilation error for NativeClient. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-29adjust stylenobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-19* vm.c: support variable VM/Machine stack sizes.ko1
Specified by the following environment variaables: - RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation. default: 128KB (32bit CPU) or 256KB (64bit CPU). - RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread creation. default: 512KB or 1024KB. - RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation. default: 64KB or 128KB. - RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber creation. default: 256KB or 256KB. This values are specified at launched timing. You can not change these values at running time. Environ variables are only *hints* because: - They are aligned to 4KB. - They have minimum values (depend on OSs). - Machine stack settings are ignored by some OSs. Default values especially fiber stack sizes are increased. This change affect Fiber's behavior: (1) You can run more complex program on a Fiber. (2) You can not make many (thousands) Fibers because of lack of address space (on 32bit CPU). If (2) bothers you, (a) Use 64bit CPU with big memory, or (b) Specify RUBY_FIBER_(VM|MACHINE)_STACK_SIZE correctly. You need to choose correct stack size carefully. These values are completely rely on systems (OS/compiler and so on). * vm_core.h (rb_vm_t::default_params): add to record above settings. * vm.c (RubyVM::DEFAULT_PARAMS): add new constant to see above setting. * thread_pthread.c: support RUBY_THREAD_MACHINE_STACK_SIZE. * cont.c: support RUBY_FIBER_(VM|MACHINE)_STACK_SIZE. * test/ruby/test_fiber.rb: add tests for above. * test/ruby/test_thread.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-05* thread_pthread.c (rb_reserved_fd_p): fix typo in macro checkkosaki
that prevented the ifdef ever being true. [Bug #7281] [ruby-core:48940] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-05* thread_pthread.c (native_thread_init, native_thread_destroy):kosaki
removed HAVE_PTHREAD_CONDATTR_INIT check because this silly #ifdef makes use-uninitialized-var issue and (2) native_cond_initialize() already have a right platform and caller don't need any additional care. [Bug #6825] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-01thread_pthread.c: RUBY_STACK_MINnobu
* thread_pthread.c (RUBY_STACK_MIN): may not a compile time constant. fix r37079. [ruby-dev:46322] [Bug #7247] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-04thread_pthread.c: precise stack sizenobu
* thread_pthread.c (ruby_init_stack): round stack limit to page size boundary to calculate stack size more precisely. [ruby-dev:46174] [Bug #7084] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-04* thread_pthread.c (RUBY_STACK_MIN_LIMIT): name magic number.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-03thread_pthread.c: init stack with ulimitnobu
* thread_pthread.c (ruby_init_stack): use getrlimit() for the main thread on Mac OS X, since pthread_get_stack{addr,size}_np() and return the default value always, but not the ulimit value. [ruby-dev:46174] [Bug #7084] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-20* thread_pthread.c (native_cond_initialize): destroy condattrkosaki
after using it. Patch by Stanislav Sedov. Thank you. [Bug #7041] [ruby-core:47619] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-20* thread_pthread.c (native_cond_initialize): clean up #ifdef condition.kosaki
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-04adjust stylenobu
* thread_pthread.c, vm_eval.c: adjust style. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-21thread_pthread.c: STACK_GROW_DIR_DETECTIONnobu
* thread_pthread.c (ruby_init_stack): STACK_GROW_DIR_DETECTION is necessary on platforms with unknown stack direction. [Bug #6761] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-19* thread_pthread.c: use #ifdef, not #if.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-26* thread_pthread.c (register_cached_thread_and_wait):ko1
return immediately if malloc() failed. [ruby-core:43960] [ruby-trunk - Bug #6235] * thread_pthread.c (USE_THREAD_CACHE): check already defined or not. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-14* eval.c: Add doxygen comments.yugui
* ruby.c: ditto. * thread_pthread.c: ditto * version.c: ditto. * vm_core.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-13* thread_pthread.c (get_stack): Linux is the only OS which includesnaruse
the size of guard page into the stack size. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-13thread_pthread.c: suppress warningnobu
* thread_pthread.c (get_stack): define guard only when it is used. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10* thread_pthread.c (rb_thread_create_timer_thread): assign returnnaruse
value to the variable err. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10* thread_pthread.c (native_cond_initialize): fix typo in r36022.naruse
this cause a failure on FreeBSD 8.2 amd64. http://fbsd.rubyci.org/~chkbuild/ruby-trunk/log/20120610T130201Z.diff.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36026 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10Fixes threading on NativeClient.yugui
* thread_pthread.c (timer_thread_sleep): Extracted out a function from thread_timer(). Added an alternative implementation for platforms that lacks select(2) or pipe(2). (rb_thread_create_timer_thread, native_cond_initialize, native_cond_destroy): Replaced wrong HAVE_XXX checks. * configure.in (pthread_attr_init): New check. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10gc.h: IS_STACK_DIR_UPPERnobu
* gc.h (IS_STACK_DIR_UPPER): utility macro. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10thread_pthread.c: adjust stack sizenobu
* thread_pthread.c (get_stack): seems stack size does not include guard size on Mac OS X. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10thread_pthread.c: adjust stack sizenobu
* thread_pthread.c (ruby_init_stack): adjust stack size for offset of addr from the bottom. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-08thread_pthread.c: use stack infonobu
* thread_pthread.c (ruby_init_stack): use stack info if possible. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-18* thread_pthread.c (rb_thread_create_timer_thread): Added errorkosaki
check when failing fcntl(). [Bug #6147] [ruby-dev:45364] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-17fix NaCl supportnobu
* configure.in: fix function name to be checked, to initialize rb_thread_cond_t properly. * thread_pthread.c (native_cond_initialize, native_cond_destroy): fix macro name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-17* thread.c, thread_pthread.c: Moved pthread-specific preprocessoryugui
hacks to thread_pthread.c git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-17Imports Ruby's port to NativeClient (a.k.a NaCl).yugui
Patch by Google Inc. [ruby-core:45073]. * configure.in (RUBY_NACL): New M4 func to configure variables for NaCl. (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names of Pepper interface types. (BTESTRUBY): New variable to specify which ruby should be run on "make btest". NaCl can run the built binary by sel_ldr, but it need rbconfig.rb. So this variable is distinguished from $MINIRUBY. * thread_pthread.c: Disabled some features on NaCl. * io.c: ditto. * process.c: ditto. * signal.c: ditto. * file.c: ditto. * missing/flock.c: ditto. * nacl/pepper_main.c: An example implementation of Pepper application that embeds Ruby. * nacl/example.html: An example of web page that uses the Pepper application. * nacl/nacl-config.rb: Detects variants of NaCl SDK. * nacl/GNUmakefile.in: Makefile template for NaCl specific build process. * nacl/package.rb: script for packaging a NaCl-Ruby embedding application. * nacl/reate_nmf.rb: Wrapper script of create_nmf.py * dln.c (dln_load): Added a hack to call on NaCl. * util.c (ruby_getcwd): Path to the current directort is not available on NaCl. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-10* thread_pthread.c: add prototype declarations for older Mac OS X.nobu
[ruby-core:43376][Bug #6170] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e