Commit 6e18fe71 authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #15413: os.times() had disappeared under Windows.

parent a1e2ce4a
...@@ -52,6 +52,8 @@ Core and Builtins ...@@ -52,6 +52,8 @@ Core and Builtins
Library Library
------- -------
- Issue #15413: os.times() had disappeared under Windows.
- Issue #15402: An issue in the struct module that caused sys.getsizeof to - Issue #15402: An issue in the struct module that caused sys.getsizeof to
return incorrect results for struct.Struct instances has been fixed. return incorrect results for struct.Struct instances has been fixed.
Initial patch by Serhiy Storchaka. Initial patch by Serhiy Storchaka.
......
...@@ -7453,8 +7453,11 @@ static PyStructSequence_Desc times_result_desc = { ...@@ -7453,8 +7453,11 @@ static PyStructSequence_Desc times_result_desc = {
static PyTypeObject TimesResultType; static PyTypeObject TimesResultType;
#ifdef MS_WINDOWS
#define HAVE_TIMES /* mandatory, for the method table */
#endif
#if defined(HAVE_TIMES) || defined(MS_WINDOWS) #ifdef HAVE_TIMES
static PyObject * static PyObject *
build_times_result(double user, double system, build_times_result(double user, double system,
...@@ -7492,10 +7495,6 @@ Return an object containing floating point numbers indicating process\n\ ...@@ -7492,10 +7495,6 @@ Return an object containing floating point numbers indicating process\n\
times. The object behaves like a named tuple with these fields:\n\ times. The object behaves like a named tuple with these fields:\n\
(utime, stime, cutime, cstime, elapsed_time)"); (utime, stime, cutime, cstime, elapsed_time)");
#endif
#ifdef HAVE_TIMES
#if defined(PYCC_VACPP) && defined(PYOS_OS2) #if defined(PYCC_VACPP) && defined(PYOS_OS2)
static long static long
system_uptime(void) system_uptime(void)
...@@ -7520,26 +7519,6 @@ posix_times(PyObject *self, PyObject *noargs) ...@@ -7520,26 +7519,6 @@ posix_times(PyObject *self, PyObject *noargs)
(double)0 /* t.tms_cstime / HZ */, (double)0 /* t.tms_cstime / HZ */,
(double)system_uptime() / 1000); (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)
{
struct tms t;
clock_t c;
errno = 0;
c = times(&t);
if (c == (clock_t) -1)
return posix_error();
return build_times_result(
(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 */
#elif defined(MS_WINDOWS) #elif defined(MS_WINDOWS)
static PyObject * static PyObject *
posix_times(PyObject *self, PyObject *noargs) posix_times(PyObject *self, PyObject *noargs)
...@@ -7562,8 +7541,29 @@ posix_times(PyObject *self, PyObject *noargs) ...@@ -7562,8 +7541,29 @@ posix_times(PyObject *self, PyObject *noargs)
(double)0, (double)0,
(double)0); (double)0);
} }
#else /* Neither Windows nor OS/2 */
#define NEED_TICKS_PER_SECOND
static long ticks_per_second = -1;
static PyObject *
posix_times(PyObject *self, PyObject *noargs)
{
struct tms t;
clock_t c;
errno = 0;
c = times(&t);
if (c == (clock_t) -1)
return posix_error();
return build_times_result(
(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 #endif
#endif /* HAVE_TIMES */
#ifdef HAVE_GETSID #ifdef HAVE_GETSID
PyDoc_STRVAR(posix_getsid__doc__, PyDoc_STRVAR(posix_getsid__doc__,
......
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