[Python-checkins] r68019 - in python/branches/release26-maint: Misc/NEWS Modules/posixmodule.c

martin.v.loewis python-checkins at python.org
Mon Dec 29 19:20:49 CET 2008


Author: martin.v.loewis
Date: Mon Dec 29 19:20:48 2008
New Revision: 68019

Log:
Merged revisions 68018 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r68018 | martin.v.loewis | 2008-12-29 19:17:34 +0100 (Mo, 29 Dez 2008) | 2 lines
  
  Issue #1040026: Fix os.times result on systems where HZ is incorrect.
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Misc/NEWS
   python/branches/release26-maint/Modules/posixmodule.c

Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Mon Dec 29 19:20:48 2008
@@ -78,6 +78,11 @@
 
 - FileIO's mode attribute now always includes ``"b"``.
 
+Extension Modules
+-----------------
+
+- Issue #1040026: Fix os.times result on systems where HZ is incorrect.
+
 
 What's New in Python 2.6.1
 ==========================

Modified: python/branches/release26-maint/Modules/posixmodule.c
==============================================================================
--- python/branches/release26-maint/Modules/posixmodule.c	(original)
+++ python/branches/release26-maint/Modules/posixmodule.c	Mon Dec 29 19:20:48 2008
@@ -5961,10 +5961,6 @@
 
 
 #ifdef HAVE_TIMES
-#ifndef HZ
-#define HZ 60 /* Universal constant :-) */
-#endif /* HZ */
-
 #if defined(PYCC_VACPP) && defined(PYOS_OS2)
 static long
 system_uptime(void)
@@ -5990,6 +5986,8 @@
 			     (double)system_uptime() / 1000);
 }
 #else /* not OS2 */
+#define NEED_TICKS_PER_SECOND
+static long ticks_per_second = -1;
 static PyObject *
 posix_times(PyObject *self, PyObject *noargs)
 {
@@ -6000,11 +5998,11 @@
 	if (c == (clock_t) -1)
 		return posix_error();
 	return Py_BuildValue("ddddd",
-			     (double)t.tms_utime / HZ,
-			     (double)t.tms_stime / HZ,
-			     (double)t.tms_cutime / HZ,
-			     (double)t.tms_cstime / HZ,
-			     (double)c / HZ);
+			     (double)t.tms_utime / ticks_per_second,
+			     (double)t.tms_stime / ticks_per_second,
+			     (double)t.tms_cutime / ticks_per_second,
+			     (double)t.tms_cstime / ticks_per_second,
+			     (double)c / ticks_per_second);
 }
 #endif /* not OS2 */
 #endif /* HAVE_TIMES */
@@ -8966,6 +8964,15 @@
 
 		statvfs_result_desc.name = MODNAME ".statvfs_result";
 		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);
 	PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType);


More information about the Python-checkins mailing list