gh-112567: Add _Py_GetTicksPerSecond() function (#112587)

* Move _PyRuntimeState.time to _posixstate.ticks_per_second and
  time_module_state.ticks_per_second.
* Add time_module_state.clocks_per_second.
* Rename _PyTime_GetClockWithInfo() to py_clock().
* Rename _PyTime_GetProcessTimeWithInfo() to py_process_time().
* Add process_time_times() helper function, called by
  py_process_time().
* os.times() is now always built: no longer rely on HAVE_TIMES.
This commit is contained in:
Victor Stinner 2023-12-01 17:05:56 +01:00 committed by GitHub
parent a9073564ee
commit 05a370abd6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 142 additions and 125 deletions

View file

@ -2943,3 +2943,27 @@ _Py_closerange(int first, int last)
#endif /* USE_FDWALK */
_Py_END_SUPPRESS_IPH
}
#ifndef MS_WINDOWS
// Ticks per second used by clock() and times() functions.
// See os.times() and time.process_time() implementations.
int
_Py_GetTicksPerSecond(long *ticks_per_second)
{
#if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
long value = sysconf(_SC_CLK_TCK);
if (value < 1) {
return -1;
}
*ticks_per_second = value;
#elif defined(HZ)
assert(HZ >= 1);
*ticks_per_second = HZ;
#else
// Magic fallback value; may be bogus
*ticks_per_second = 60;
#endif
return 0;
}
#endif