Kaydet (Commit) 03824e45 authored tarafından Martin v. Löwis's avatar Martin v. Löwis

Issue #1040026: Fix os.times result on systems where HZ is incorrect.

üst 7af65568
...@@ -246,6 +246,8 @@ C-API ...@@ -246,6 +246,8 @@ C-API
Extension Modules Extension Modules
----------------- -----------------
- Issue #1040026: Fix os.times result on systems where HZ is incorrect.
- Issues #3167, #3682: Fix test_math failures for log, log10 on Solaris, - Issues #3167, #3682: Fix test_math failures for log, log10 on Solaris,
OpenBSD. OpenBSD.
......
...@@ -5957,10 +5957,6 @@ posix_symlink(PyObject *self, PyObject *args) ...@@ -5957,10 +5957,6 @@ posix_symlink(PyObject *self, PyObject *args)
#ifdef HAVE_TIMES #ifdef HAVE_TIMES
#ifndef HZ
#define HZ 60 /* Universal constant :-) */
#endif /* HZ */
#if defined(PYCC_VACPP) && defined(PYOS_OS2) #if defined(PYCC_VACPP) && defined(PYOS_OS2)
static long static long
system_uptime(void) system_uptime(void)
...@@ -5986,6 +5982,8 @@ posix_times(PyObject *self, PyObject *noargs) ...@@ -5986,6 +5982,8 @@ posix_times(PyObject *self, PyObject *noargs)
(double)system_uptime() / 1000); (double)system_uptime() / 1000);
} }
#else /* not OS2 */ #else /* not OS2 */
#define NEED_TICKS_PER_SECOND
static long ticks_per_second = -1;
static PyObject * static PyObject *
posix_times(PyObject *self, PyObject *noargs) posix_times(PyObject *self, PyObject *noargs)
{ {
...@@ -5996,11 +5994,11 @@ posix_times(PyObject *self, PyObject *noargs) ...@@ -5996,11 +5994,11 @@ posix_times(PyObject *self, PyObject *noargs)
if (c == (clock_t) -1) if (c == (clock_t) -1)
return posix_error(); return posix_error();
return Py_BuildValue("ddddd", return Py_BuildValue("ddddd",
(double)t.tms_utime / HZ, (double)t.tms_utime / ticks_per_second,
(double)t.tms_stime / HZ, (double)t.tms_stime / ticks_per_second,
(double)t.tms_cutime / HZ, (double)t.tms_cutime / ticks_per_second,
(double)t.tms_cstime / HZ, (double)t.tms_cstime / ticks_per_second,
(double)c / HZ); (double)c / ticks_per_second);
} }
#endif /* not OS2 */ #endif /* not OS2 */
#endif /* HAVE_TIMES */ #endif /* HAVE_TIMES */
...@@ -8962,6 +8960,15 @@ INITFUNC(void) ...@@ -8962,6 +8960,15 @@ INITFUNC(void)
statvfs_result_desc.name = MODNAME ".statvfs_result"; statvfs_result_desc.name = MODNAME ".statvfs_result";
PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc); PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc);
#ifdef NEED_TICKS_PER_SECOND
# if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
ticks_per_second = sysconf(_SC_CLK_TCK);
# elif defined(HZ)
ticks_per_second = HZ;
# else
ticks_per_second = 60; /* magic fallback value; may be bogus */
# endif
#endif
} }
Py_INCREF((PyObject*) &StatResultType); Py_INCREF((PyObject*) &StatResultType);
PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType); PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment