diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-12-24 19:38:15 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-12-24 19:38:15 +0000 |
| commit | 51bda4193a60505f632b0b24bdfba0d447de2900 (patch) | |
| tree | 0df92d73d148a2e8d3baaca324a12cde372d844f /eval.c | |
| parent | 25e1b6a9be289226c80635fa1cc631d55623a29b (diff) | |
| download | ruby-51bda4193a60505f632b0b24bdfba0d447de2900.tar.gz ruby-51bda4193a60505f632b0b24bdfba0d447de2900.tar.xz ruby-51bda4193a60505f632b0b24bdfba0d447de2900.zip | |
* configure.in: check for nanosleep, -lrt if required.
[ruby-core:02059]
* eval.c (thread_timer): use select(2) if nanosleep(2) is not
available.
* eval.c: check __stub_getcontext for glibc on some platforms.
[ruby-list:38984]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
| -rw-r--r-- | eval.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -29,7 +29,7 @@ #endif #include <stdio.h> -#if defined(HAVE_UCONTEXT_H) && (defined(__ia64__) || defined(HAVE_NATIVETHREAD)) +#if defined(HAVE_UCONTEXT_H) && (defined(__ia64__) || defined(HAVE_NATIVETHREAD)) && !defined(__stub_getcontext) #include <ucontext.h> #define USE_CONTEXT #else @@ -9552,12 +9552,19 @@ static void* thread_timer(dummy) void *dummy; { - struct timespec req, rem; - for (;;) { +#ifdef HAVE_NANOSLEEP + struct timespec req, rem; + req.tv_sec = 0; req.tv_nsec = 10000000; nanosleep(&req, &rem); +#else + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 10000; + select(0, NULL, NULL, NULL, &tv); +#endif if (!rb_thread_critical) { rb_thread_pending = 1; if (rb_trap_immediate) { |
