Cross Reference: timing.h
xref: /src/sys/external/bsd/compiler_rt/dist/test/builtins/timing/timing.h
  • Home
  • History
  • AnnotateAnnotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /src/sys/external/bsd/compiler_rt/dist/test/builtins/timing/
11.1Sjoerg#include <mach/mach_time.h>
21.1Sjoerg#include <stdint.h>
31.1Sjoerg#include <stdlib.h>
41.1Sjoerg
51.1Sjoergdouble intervalInCycles( uint64_t startTime, uint64_t endTime )
61.1Sjoerg{
71.1Sjoerg	uint64_t rawTime = endTime - startTime;
81.1Sjoerg	static double conversion = 0.0;
91.1Sjoerg
101.1Sjoerg	if( 0.0 == conversion )
111.1Sjoerg	{
121.1Sjoerg		mach_timebase_info_data_t	info;
131.1Sjoerg		kern_return_t err = mach_timebase_info( &info );
141.1Sjoerg		if( 0 != err )
151.1Sjoerg			return 0;
161.1Sjoerg
171.1Sjoerg		uint64_t freq = 0;
181.1Sjoerg		size_t freqSize = sizeof( freq );
191.1Sjoerg		int err2 = sysctlbyname( "hw.cpufrequency", &freq, &freqSize, NULL, 0L );
201.1Sjoerg		if( 0 != err2 )
211.1Sjoerg			return 0;
221.1Sjoerg
231.1Sjoerg		conversion = (double) freq * (1e-9 * (double) info.numer / (double) info.denom);
241.1Sjoerg	}
251.1Sjoerg
261.1Sjoerg	return (double) rawTime * conversion;
271.1Sjoerg}
281.1Sjoerg
29

Indexes created Mon Nov 10 17:20:41 GMT 2025