mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* configure.in (rb_cv_va_args_macro): check for __VA_ARGS__.
* thread.c (thread_debug): show source name and line if possible. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a534e39a87
commit
a2ec2f8b59
3 changed files with 31 additions and 5 deletions
|
@ -1,4 +1,8 @@
|
||||||
Wed Jul 9 18:17:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Wed Jul 9 20:18:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* configure.in (rb_cv_va_args_macro): check for __VA_ARGS__.
|
||||||
|
|
||||||
|
* thread.c (thread_debug): show source name and line if possible.
|
||||||
|
|
||||||
* thread_{pthread,win32}.c (rb_thread_create_timer_thread): needs more
|
* thread_{pthread,win32}.c (rb_thread_create_timer_thread): needs more
|
||||||
stack for debug.
|
stack for debug.
|
||||||
|
|
|
@ -395,6 +395,15 @@ if test "$rb_cv_stdarg" = yes; then
|
||||||
AC_DEFINE(HAVE_STDARG_PROTOTYPES)
|
AC_DEFINE(HAVE_STDARG_PROTOTYPES)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro,
|
||||||
|
[AC_TRY_COMPILE([@%:@define FOO(a, ...) foo(a, @%:@@%:@__VA_ARGS__)],
|
||||||
|
[FOO(1);FOO(1,2);FOO(1,2,3);],
|
||||||
|
rb_cv_va_args_macro=yes,
|
||||||
|
rb_cv_va_args_macro=no)])
|
||||||
|
if test "$rb_cv_va_args_macro" = yes; then
|
||||||
|
AC_DEFINE(HAVE_VA_ARGS_MACRO)
|
||||||
|
fi
|
||||||
|
|
||||||
AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl
|
AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl
|
||||||
m4_ifval([$2], dnl
|
m4_ifval([$2], dnl
|
||||||
[AS_VAR_PUSHDEF([attrib],[$2])], dnl
|
[AS_VAR_PUSHDEF([attrib],[$2])], dnl
|
||||||
|
|
21
thread.c
21
thread.c
|
@ -121,7 +121,17 @@ static void reset_unblock_function(rb_thread_t *th, const struct rb_unblock_call
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#if THREAD_DEBUG
|
#if THREAD_DEBUG
|
||||||
|
#ifdef HAVE_VA_ARGS_MACRO
|
||||||
|
void rb_thread_debug(const char *file, int line, const char *fmt, ...);
|
||||||
|
#define thread_debug(fmt, ...) rb_thread_debug(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
|
||||||
|
#define POSITION_FORMAT "%s:%d:"
|
||||||
|
#define POSITION_ARGS ,file, line
|
||||||
|
#else
|
||||||
void rb_thread_debug(const char *fmt, ...);
|
void rb_thread_debug(const char *fmt, ...);
|
||||||
|
#define thread_debug rb_thread_debug
|
||||||
|
#define POSITION_FORMAT
|
||||||
|
#define POSITION_ARGS
|
||||||
|
#endif
|
||||||
|
|
||||||
# if THREAD_DEBUG < 0
|
# if THREAD_DEBUG < 0
|
||||||
static int rb_thread_debug_enabled;
|
static int rb_thread_debug_enabled;
|
||||||
|
@ -141,7 +151,6 @@ rb_thread_s_debug_set(VALUE self, VALUE val)
|
||||||
# else
|
# else
|
||||||
# define rb_thread_debug_enabled THREAD_DEBUG
|
# define rb_thread_debug_enabled THREAD_DEBUG
|
||||||
# endif
|
# endif
|
||||||
#define thread_debug rb_thread_debug
|
|
||||||
#else
|
#else
|
||||||
#define thread_debug if(0)printf
|
#define thread_debug if(0)printf
|
||||||
#endif
|
#endif
|
||||||
|
@ -158,7 +167,7 @@ static void timer_thread_function(void *);
|
||||||
|
|
||||||
#define DEBUG_OUT() \
|
#define DEBUG_OUT() \
|
||||||
WaitForSingleObject(&debug_mutex, INFINITE); \
|
WaitForSingleObject(&debug_mutex, INFINITE); \
|
||||||
printf("%p - %s", GetCurrentThreadId(), buf); \
|
printf(POSITION_FORMAT"%p - %s" POSITION_ARGS, GetCurrentThreadId(), buf); \
|
||||||
fflush(stdout); \
|
fflush(stdout); \
|
||||||
ReleaseMutex(&debug_mutex);
|
ReleaseMutex(&debug_mutex);
|
||||||
|
|
||||||
|
@ -167,7 +176,7 @@ static void timer_thread_function(void *);
|
||||||
|
|
||||||
#define DEBUG_OUT() \
|
#define DEBUG_OUT() \
|
||||||
pthread_mutex_lock(&debug_mutex); \
|
pthread_mutex_lock(&debug_mutex); \
|
||||||
printf("%#"PRIxVALUE" - %s", (VALUE)pthread_self(), buf); \
|
printf(POSITION_FORMAT"%#"PRIxVALUE" - %s" POSITION_ARGS, (VALUE)pthread_self(), buf); \
|
||||||
fflush(stdout); \
|
fflush(stdout); \
|
||||||
pthread_mutex_unlock(&debug_mutex);
|
pthread_mutex_unlock(&debug_mutex);
|
||||||
|
|
||||||
|
@ -180,7 +189,11 @@ static int debug_mutex_initialized = 1;
|
||||||
static rb_thread_lock_t debug_mutex;
|
static rb_thread_lock_t debug_mutex;
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_thread_debug(const char *fmt, ...)
|
rb_thread_debug(
|
||||||
|
#ifdef HAVE_VA_ARGS_MACRO
|
||||||
|
const char *file, int line,
|
||||||
|
#endif
|
||||||
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
char buf[BUFSIZ];
|
char buf[BUFSIZ];
|
||||||
|
|
Loading…
Reference in a new issue