| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| |
| | |
getentropy() is used (OpenBSD 5.6+).
|
| |
| |
| |
| | |
(OpenBSD 5.6+).
|
| |
| |
| |
| | |
implementation is used.
|
| |
| |
| |
| | |
using the C volatile keyword.
|
| |
| |
| |
| | |
Add _Py_fstat_noraise() function when a Python exception is not welcome.
|
| |
| |
| |
| | |
Use _PyTime_ROUND_FLOOR and _PyTime_ROUND_CEILING instead.
|
| |
| |
| |
| | |
Add also more tests for ROUNd_FLOOR.
|
| |
| |
| |
| | |
check that microseconds and nanoseconds fits into the specified range.
|
| |
| |
| |
| |
| | |
Add _PyTime_AsTimeval_noraise() function. Call it when it's not possible (or
not useful) to raise a Python exception on overflow.
|
| |
| |
| |
| |
| |
| | |
- _PyTime_ObjectToTime_t()
- _PyTime_ObjectToTimespec()
- _PyTime_ObjectToTimeval()
|
| | |
|
| |
| |
| |
| |
| | |
* Remove _PyTime_gettimeofday()
* Add _PyTime_GetSystemClock()
|
| |
| |
| |
| |
| | |
_PyTime_GetSystemClockWithInfo() to not raise an exception and return 0 on
error (it should never occur)
|
| |
| |
| |
| |
| | |
module. time.clock_settime() now uses this rounding method instead of
_PyTime_ROUND_DOWN to handle correctly dates before 1970.
|
| |
| |
| |
| | |
Remove also the now unused _PyTime_AddDouble() function.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add also a new _PyTime_AsMicroseconds() function.
threading.TIMEOUT_MAX is now be smaller: only 292 years instead of 292,271
years on 64-bit system for example. Sorry, your threads will hang a *little
bit* shorter. Call me if you want to ensure that your locks wait longer, I can
share some tricks with you.
|
| |
| |
| |
| |
| |
| |
| | |
* _PyTime_AsTimeval() now ensures that tv_usec is always positive
* _PyTime_AsTimespec() now ensures that tv_nsec is always positive
* _PyTime_AsTimeval() now returns an integer on overflow instead of raising an
exception
|
| |
| |
| |
| |
| | |
* Add _PyTime_AsTimespec()
* Add unit tests for _PyTime_AsTimespec()
|
| |
| |
| |
| | |
* Add _PyTime_GetSystemClockWithInfo()
|
| |
| |
| |
| |
| |
| | |
* Add _PyTime_FromNanoseconds()
* Add _PyTime_AsSecondsDouble()
* Add unit tests for _PyTime_AsSecondsDouble()
|
| |
| |
| |
| |
| |
| | |
* Rename _PyTime_FromObject() to _PyTime_FromSecondsObject()
* Add _PyTime_AsNanosecondsObject() and _testcapi.pytime_fromsecondsobject()
* Add unit tests
|
| |
| |
| |
| | |
GetTickCount64() is now always available.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In practice, _PyTime_t is a number of nanoseconds. Its C type is a 64-bit
signed number. It's integer value is in the range [-2^63; 2^63-1]. In seconds,
the range is around [-292 years; +292 years]. In term of Epoch timestamp
(1970-01-01), it can store a date between 1677-09-21 and 2262-04-11.
The API has a resolution of 1 nanosecond and use integer number. With a
resolution on 1 nanosecond, 64-bit IEEE 754 floating point numbers loose
precision after 194 days. It's not the case with this API. The drawback is
overflow for values outside [-2^63; 2^63-1], but these values are unlikely for
most Python modules, except of the datetime module.
New functions:
- _PyTime_GetMonotonicClock()
- _PyTime_FromObject()
- _PyTime_AsMilliseconds()
- _PyTime_AsTimeval()
This change uses these new functions in time.sleep() to avoid rounding issues.
The new API will be extended step by step, and the old API will be removed step
by step. Currently, some code is duplicated just to be able to move
incrementally, instead of pushing a large change at once.
|
|\ \
| |/ |
|
| |
| |
| |
| | |
close the binary file to fix a resource warning.
|
|\ \
| |/
| |
| |
| |
| | |
Flushing sys.stdout and sys.stderr in Py_FatalError() can call again
Py_FatalError(). Add a reentrant flag to detect this case and just abort at the
second call.
|
| |
| |
| |
| |
| |
| | |
Flushing sys.stdout and sys.stderr in Py_FatalError() can call again
Py_FatalError(). Add a reentrant flag to detect this case and just abort at the
second call.
|
|\ \
| |/
| |
| |
| |
| |
| | |
sys.stderr
It should help to see exceptions when stderr if buffered: PyErr_Display() calls
sys.stderr.write(), it doesn't write into stderr file descriptor directly.
|
| |
| |
| |
| |
| | |
It should help to see exceptions when stderr if buffered: PyErr_Display() calls
sys.stderr.write(), it doesn't write into stderr file descriptor directly.
|
| |
| |
| |
| |
| | |
current exception because they can run arbitrary Python code and so no
exception must be set.
|
| |
| |
| |
| |
| |
| |
| | |
I expected more users of _Py_wstat(), but in practice it's only used by
Modules/getpath.c. Move the function because it's not needed on Windows.
Windows uses PC/getpathp.c which uses the Win32 API (ex: GetFileAttributesW())
not the POSIX API.
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| | |
* Display the current Python stack if an exception was raised but the exception
has no traceback
* Disable faulthandler if an exception was raised (before it was only disabled
if no exception was raised)
* To display the current Python stack, call PyGILState_GetThisThreadState()
which works even if the GIL was released
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Display the current Python stack if an exception was raised but the exception
has no traceback
* Disable faulthandler if an exception was raised (before it was only disabled
if no exception was raised)
* To display the current Python stack, call PyGILState_GetThisThreadState()
which works even if the GIL was released
|
| |
| |
| |
| |
| |
| |
| | |
fstat(), these functions are always required.
Remove HAVE_STAT and HAVE_FSTAT defines, and stop supporting DONT_HAVE_STAT and
DONT_HAVE_FSTAT.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
which returned an invalid result (result+error or no result without error) in
the exception message.
Add also unit test to check that the exception contains the name of the
function.
Special case: the final _PyEval_EvalFrameEx() check doesn't mention the
function since it didn't execute a single function but a whole frame.
|
| |
| |
| |
| |
| | |
Save and then restore errno because PyErr_CheckSignals() and
PyErr_SetFromErrno() can modify it.
|
| |
| |
| |
| | |
_Py_write() to know which test failed on the buildbot "AMD64 Snow Leop 3.x".
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
interrupted by a signal
Add a new _PyTime_AddDouble() function and remove _PyTime_ADD_SECONDS() macro.
The _PyTime_ADD_SECONDS only supported an integer number of seconds, the
_PyTime_AddDouble() has subsecond resolution.
|
| |
| |
| |
| | |
Fix typo: self->fd => fd
|
| |
| |
| |
| |
| |
| |
| | |
read() is interrupted by a signal.
dev_urandom_python() now calls _Py_read() helper instead of calling directly
read().
|
| |
| |
| |
| | |
opening /dev/urandom.
|
| |
| |
| |
| |
| |
| |
| |
| | |
EINTR error and special cases for Windows.
These functions now truncate the length to PY_SSIZE_T_MAX to have a portable
and reliable behaviour. For example, read() result is undefined if counter is
greater than PY_SSIZE_T_MAX on Linux.
|
| |
| |
| |
| |
| |
| | |
and stored in pyconfig.h as the new HAVE_GETRANDOM_SYSCALL define.
Fix os.urandom() tests using file descriptors if os.urandom() uses getrandom().
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
available, syscall introduced in the Linux kernel 3.17. It is more reliable
and more secure, because it avoids the need of a file descriptor and waits
until the kernel has enough entropy.
|