Skip to content

Commit 3f8e780

Browse files
Move ticks_per_second to _PyRuntimeState.
1 parent 97d51f0 commit 3f8e780

File tree

3 files changed

+35
-15
lines changed

3 files changed

+35
-15
lines changed

Include/internal/pycore_os.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,28 @@ extern "C" {
2121
# define dup3_works_INIT
2222
#endif
2323

24+
#ifndef MS_WINDOWS
25+
#define _OS_NEED_TICKS_PER_SECOND
26+
# define need_ticks_per_second_STATE \
27+
long ticks_per_second;
28+
# define need_ticks_per_second_INIT \
29+
.ticks_per_second = -1,
30+
#else
31+
# define need_ticks_per_second_STATE
32+
# define need_ticks_per_second_INIT
33+
#endif /* MS_WINDOWS */
34+
2435

2536
struct _os_runtime_state {
2637
int _not_used;
2738
dup3_works_STATE
39+
need_ticks_per_second_STATE
2840
};
2941
# define _OS_RUNTIME_INIT \
3042
{ \
3143
._not_used = 0, \
3244
dup3_works_INIT \
45+
need_ticks_per_second_INIT \
3346
}
3447

3548

Modules/posixmodule.c

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9061,10 +9061,23 @@ build_times_result(PyObject *module, double user, double system,
90619061
}
90629062

90639063

9064-
#ifndef MS_WINDOWS
9065-
#define NEED_TICKS_PER_SECOND
9066-
static long ticks_per_second = -1;
9067-
#endif /* MS_WINDOWS */
9064+
#ifdef _OS_NEED_TICKS_PER_SECOND
9065+
#define ticks_per_second _PyRuntime.os.ticks_per_second
9066+
static void
9067+
ticks_per_second_init(void)
9068+
{
9069+
if (ticks_per_second != -1) {
9070+
return;
9071+
}
9072+
# if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
9073+
ticks_per_second = sysconf(_SC_CLK_TCK);
9074+
# elif defined(HZ)
9075+
ticks_per_second = HZ;
9076+
# else
9077+
ticks_per_second = 60; /* magic fallback value; may be bogus */
9078+
# endif
9079+
}
9080+
#endif
90689081

90699082
/*[clinic input]
90709083
os.times
@@ -9099,10 +9112,10 @@ os_times_impl(PyObject *module)
90999112
(double)0,
91009113
(double)0);
91019114
}
9115+
#elif !defined(_OS_NEED_TICKS_PER_SECOND)
9116+
# error "missing ticks_per_second"
91029117
#else /* MS_WINDOWS */
91039118
{
9104-
9105-
91069119
struct tms t;
91079120
clock_t c;
91089121
errno = 0;
@@ -15928,14 +15941,9 @@ posixmodule_exec(PyObject *m)
1592815941
}
1592915942
PyModule_AddObject(m, "statvfs_result", Py_NewRef(StatVFSResultType));
1593015943
state->StatVFSResultType = StatVFSResultType;
15931-
#ifdef NEED_TICKS_PER_SECOND
15932-
# if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
15933-
ticks_per_second = sysconf(_SC_CLK_TCK);
15934-
# elif defined(HZ)
15935-
ticks_per_second = HZ;
15936-
# else
15937-
ticks_per_second = 60; /* magic fallback value; may be bogus */
15938-
# endif
15944+
15945+
#ifdef _OS_NEED_TICKS_PER_SECOND
15946+
ticks_per_second_init();
1593915947
#endif
1594015948

1594115949
#if defined(HAVE_SCHED_SETPARAM) || defined(HAVE_SCHED_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDPARAM)

Tools/c-analyzer/cpython/globals-to-fix.tsv

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,6 @@ Modules/faulthandler.c - old_stack -
399399
# initialized once
400400

401401
Modules/_io/bufferedio.c _PyIO_trap_eintr eintr_int -
402-
Modules/posixmodule.c - ticks_per_second -
403402
Modules/timemodule.c _PyTime_GetClockWithInfo initialized -
404403
Modules/timemodule.c _PyTime_GetProcessTimeWithInfo ticks_per_second -
405404

0 commit comments

Comments
 (0)