* process.c (rb_proc_times): use sysconf(_SC_CLK_TCK) value prior to

HZ and CLK_TCK.  fixed: [ruby-talk:200293]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2006-07-06 14:30:20 +00:00
parent 69aeed5065
commit ac2348271a
3 changed files with 35 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Thu Jul 6 23:30:04 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 21:50:06 2006 Minero Aoki <aamine@loveruby.net>
* ext/racc/cparse/cparse.c: sync with original code, rev 1.8.

View File

@ -510,7 +510,7 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall chroot fsync getcwd
setitimer setruid seteuid setreuid setresuid setproctitle socketpair\
setrgid setegid setregid setresgid issetugid pause lchown lchmod\
getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\
getpriority getrlimit setrlimit\
getpriority getrlimit setrlimit sysconf\
dlopen sigprocmask sigaction _setjmp vsnprintf snprintf\
setsid telldir seekdir fchmod mktime timegm cosh sinh tanh log2\
setuid setgid daemon select_large_fdset setenv unsetenv)
@ -728,6 +728,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;;

View File

@ -3516,6 +3516,10 @@ VALUE
rb_proc_times(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
@ -3523,15 +3527,17 @@ rb_proc_times(VALUE 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