@@ -236,18 +236,25 @@ cdef uint64_t get_ticks_per_sec() except -1:
236
236
cdef char buffer [128 ]
237
237
cdef size_t buffer_size
238
238
239
+ # XXX - Need to find a way to get ticks per sec on Linux, fake it for now
239
240
IF UNAME_SYSNAME == " Linux" :
240
241
return 2793008320
241
242
242
243
buffer_size = sizeof(buffer )
243
244
244
- if sysctlbyname(" machdep.tsc_freq_new" , < void * > & buffer [0 ], & buffer_size, NULL , 0 ) == - 1 :
245
- if sysctlbyname(" machdep.tsc_freq" , < void * > & buffer [0 ], & buffer_size, NULL , 0 ) == - 1 :
246
- # Not all systems have this sysctl that we can build on
247
- if libc.getenv(" BUILDING" ) == NULL :
248
- raise SystemError
249
- else :
250
- return 2793008320
245
+ IF UNAME_SYSNAME == " Darwin" :
246
+ if sysctlbyname(" machdep.tsc.frequency" , < void * > & buffer [0 ], & buffer_size, NULL , 0 ) == - 1 :
247
+ raise SystemError
248
+ ELSE :
249
+ # Leave this for backwards compatibility with 32/64-bit legacy systems
250
+ if sysctlbyname(" machdep.tsc_freq_new" , < void * > & buffer [0 ], & buffer_size, NULL , 0 ) == - 1 :
251
+ if sysctlbyname(" machdep.tsc_freq" , < void * > & buffer [0 ], & buffer_size, NULL , 0 ) == - 1 :
252
+ # Not all systems have this sysctl that we can build on
253
+ if libc.getenv(" BUILDING" ) == NULL :
254
+ raise SystemError
255
+ else :
256
+ return 2793008320
257
+
251
258
if buffer_size == 4 :
252
259
value = (< uint32_t * > buffer )[0 ];
253
260
else :
0 commit comments