$NetBSD: patch-as,v 1.2 2011/02/07 11:15:28 taca Exp $ * Handle 64bit size of time_t. * On FreeBSD and DragonFly PTHREAD_STACK_MIN is too small. Taken from FreeBSD ports --- thread_pthread.c.orig 2010-07-22 13:13:57.000000000 +0000 +++ thread_pthread.c @@ -17,6 +17,12 @@ #include #endif +#if SIZEOF_TIME_T == 8 +#define FMT_TIME_T "lld" +#else +#define FMT_TIME_T "ld" +#endif + static void native_mutex_lock(pthread_mutex_t *lock); static void native_mutex_unlock(pthread_mutex_t *lock); static int native_mutex_trylock(pthread_mutex_t *lock); @@ -620,7 +626,7 @@ native_sleep(rb_thread_t *th, struct tim } } - thread_debug("native_sleep %ld\n", tv ? tv->tv_sec : -1); + thread_debug("native_sleep %" FMT_TIME_T "\n", tv ? tv->tv_sec : -1); GVL_UNLOCK_BEGIN(); { pthread_mutex_lock(&th->interrupt_lock); @@ -642,8 +648,8 @@ native_sleep(rb_thread_t *th, struct tim } else { int r; - thread_debug("native_sleep: pthread_cond_timedwait start (%ld, %ld)\n", - (unsigned long)ts.tv_sec, ts.tv_nsec); + thread_debug("native_sleep: pthread_cond_timedwait start (%" + FMT_TIME_T ", %ld)\n", ts.tv_sec, ts.tv_nsec); r = pthread_cond_timedwait(&th->native_thread_data.sleep_cond, &th->interrupt_lock, &ts); if (r && r != ETIMEDOUT) rb_bug_errno("pthread_cond_timedwait", r); @@ -822,7 +828,7 @@ int err; pthread_attr_init(&attr); -#ifdef PTHREAD_STACK_MIN +#if defined(PTHREAD_STACK_MIN) && !defined(__FreeBSD__) && !defined(__DragonFly__) pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + (THREAD_DEBUG ? BUFSIZ : 0)); #endif