From dd20ee1e5588af84162c9eeeab93a555f1f5d50e Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 6 Jul 2006 13:22:23 +0000 Subject: * process.c (rb_proc_times): use sysconf(_SC_CLK_TCK) value prior to HZ and CLK_TCK. fixed: [ruby-talk:200293] git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@10475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++-- configure.in | 18 +++++++++++++++++- process.c | 14 ++++++++++---- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a1fdf537..7b1baf3af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jul 6 22:21:57 2006 Nobuyoshi Nakada + + * 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 * 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 Mon Jul 3 19:04:38 2006 Hidetoshi NAGAI * 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 dbc9eb148..ed0def7f8 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 + ], + [_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 63741f9ed..72e5c5473 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 -- cgit