bpo-31904: Port the time module on VxWorks (GH-12305)
time.clock() is not available on VxWorks.
This commit is contained in:
parent
236d0b75c4
commit
f1464f4d2e
|
@ -153,6 +153,8 @@ Functions
|
|||
:c:func:`QueryPerformanceCounter`. The resolution is typically better than one
|
||||
microsecond.
|
||||
|
||||
.. availability:: Windows, Unix. Not available on VxWorks.
|
||||
|
||||
.. deprecated:: 3.3
|
||||
The behaviour of this function depends on the platform: use
|
||||
:func:`perf_counter` or :func:`process_time` instead, depending on your
|
||||
|
|
|
@ -88,6 +88,8 @@ class TimeTestCase(unittest.TestCase):
|
|||
check_ns(time.clock_gettime(time.CLOCK_REALTIME),
|
||||
time.clock_gettime_ns(time.CLOCK_REALTIME))
|
||||
|
||||
@unittest.skipUnless(hasattr(time, 'clock'),
|
||||
'need time.clock()')
|
||||
def test_clock(self):
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
time.clock()
|
||||
|
@ -549,7 +551,9 @@ class TimeTestCase(unittest.TestCase):
|
|||
self.assertRaises(ValueError, time.ctime, float("nan"))
|
||||
|
||||
def test_get_clock_info(self):
|
||||
clocks = ['clock', 'monotonic', 'perf_counter', 'process_time', 'time']
|
||||
clocks = ['monotonic', 'perf_counter', 'process_time', 'time']
|
||||
if hasattr(time, 'clock'):
|
||||
clocks.append('clock')
|
||||
|
||||
for name in clocks:
|
||||
if name == 'clock':
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Add time module support and fix test_time faiures for VxWorks.
|
|
@ -145,7 +145,7 @@ perf_counter(_Py_clock_info_t *info)
|
|||
return _PyFloat_FromPyTime(t);
|
||||
}
|
||||
|
||||
#if defined(MS_WINDOWS) || defined(HAVE_CLOCK)
|
||||
#if (defined(MS_WINDOWS) || defined(HAVE_CLOCK)) && !defined(__VXWORKS__)
|
||||
#define PYCLOCK
|
||||
static PyObject*
|
||||
pyclock(_Py_clock_info_t *info)
|
||||
|
@ -765,7 +765,7 @@ time_strftime(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX)
|
||||
#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) || defined(__VXWORKS__)
|
||||
if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"strftime() requires year in [1; 9999]");
|
||||
|
@ -1001,18 +1001,21 @@ time_mktime(PyObject *self, PyObject *tm_tuple)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef _AIX
|
||||
#if defined(_AIX) || (defined(__VXWORKS__) && !defined(_WRS_CONFIG_LP64))
|
||||
/* bpo-19748: AIX mktime() valid range is 00:00:00 UTC, January 1, 1970
|
||||
to 03:14:07 UTC, January 19, 2038. Thanks to the workaround below,
|
||||
it is possible to support years in range [1902; 2037] */
|
||||
if (tm.tm_year < 2 || tm.tm_year > 137) {
|
||||
/* bpo-19748: On AIX, mktime() does not report overflow error
|
||||
for timestamp < -2^31 or timestamp > 2**31-1. */
|
||||
for timestamp < -2^31 or timestamp > 2**31-1. VxWorks has the
|
||||
same issue when working in 32 bit mode. */
|
||||
PyErr_SetString(PyExc_OverflowError,
|
||||
"mktime argument out of range");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _AIX
|
||||
/* bpo-34373: AIX mktime() has an integer overflow for years in range
|
||||
[1902; 1969]. Workaround the issue by using a year greater or equal than
|
||||
1970 (tm_year >= 70): mktime() behaves correctly in that case
|
||||
|
|
Loading…
Reference in New Issue