summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--configure.in18
-rw-r--r--process.c14
3 files changed, 34 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 8a1fdf5..7b1baf3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jul 6 22:21:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_times): use sysconf(_SC_CLK_TCK) value prior to
+ HZ and CLK_TCK. fixed: [ruby-talk:200293]
+
Thu Jul 6 22:17:21 2006 Minero Aoki <aamine@loveruby.net>
* ext/racc/cparse/cparse.c: sync with original code, rev 1.8.
@@ -11,9 +16,9 @@ Thu Jul 6 22:17:21 2006 Minero Aoki <aamine@loveruby.net>
Mon Jul 3 19:04:38 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tcltklib.c (ip_make_menu_embeddable): help to make a menu
- widget embeddable (pack, grid, and so on) like as a general widget.
+ widget embeddable (pack, grid, and so on) like as a general widget.
However, an embeddable menu may require to be definied some event
- bindings for general use.
+ bindings for general use.
* ext/tk/lib/tk/event.rb: [bug fix] Tk.callback_break and
Tk.callback_continue don't work on MultiTkIp.
diff --git a/configure.in b/configure.in
index dbc9eb1..ed0def7 100644
--- a/configure.in
+++ b/configure.in
@@ -483,7 +483,7 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync getcwd eaccess\
readlink setitimer setruid seteuid setreuid setresuid\
setproctitle setrgid setegid setregid setresgid issetugid pause\
lchown lchmod getpgrp setpgrp getpgid setpgid initgroups\
- getgroups setgroups getpriority getrlimit setrlimit\
+ getgroups setgroups getpriority getrlimit setrlimit sysconf\
dlopen sigprocmask\
sigaction _setjmp setsid telldir seekdir fchmod mktime timegm\
cosh sinh tanh setuid setgid setenv unsetenv)
@@ -749,6 +749,22 @@ if test $rb_cv_huge_st_ino = yes; then
AC_DEFINE(HUGE_ST_INO)
fi
+if test "$ac_cv_func_sysconf" = yes; then
+ AC_DEFUN(RUBY_CHECK_SYSCONF, [dnl
+ AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1),
+ [AC_TRY_COMPILE([#include <unistd.h>
+ ],
+ [_SC_$1 >= 0],
+ rb_cv_have_sc_[]m4_tolower($1)=yes,
+ rb_cv_have_sc_[]m4_tolower($1)=no)
+ ])
+ if test "$rb_cv_have_sc_[]m4_tolower($1)" = yes; then
+ AC_DEFINE(HAVE__SC_$1)
+ fi
+ ])
+ RUBY_CHECK_SYSCONF(CLK_TCK)
+fi
+
case "$target_cpu" in
m68*|i?86|ia64|sparc*|alpha*) rb_cv_stack_grow_dir=-1;;
hppa*) rb_cv_stack_grow_dir=+1;;
diff --git a/process.c b/process.c
index 63741f9..72e5c54 100644
--- a/process.c
+++ b/process.c
@@ -3432,6 +3432,10 @@ rb_proc_times(obj)
VALUE obj;
{
#if defined(HAVE_TIMES) && !defined(__CHECKER__)
+ const double hz =
+#ifdef HAVE__SC_CLK_TCK
+ (double)sysconf(_SC_CLK_TCK);
+#else
#ifndef HZ
# ifdef CLK_TCK
# define HZ CLK_TCK
@@ -3439,15 +3443,17 @@ rb_proc_times(obj)
# define HZ 60
# endif
#endif /* HZ */
+ HZ;
+#endif
struct tms buf;
volatile VALUE utime, stime, cutime, sctime;
times(&buf);
return rb_struct_new(S_Tms,
- utime = rb_float_new((double)buf.tms_utime / HZ),
- stime = rb_float_new((double)buf.tms_stime / HZ),
- cutime = rb_float_new((double)buf.tms_cutime / HZ),
- sctime = rb_float_new((double)buf.tms_cstime / HZ));
+ utime = rb_float_new(buf.tms_utime / hz),
+ stime = rb_float_new(buf.tms_stime / hz),
+ cutime = rb_float_new(buf.tms_cutime / hz),
+ sctime = rb_float_new(buf.tms_cstime / hz));
#else
rb_notimplement();
#endif