9 #include <sys/utsname.h> 13 #include <sys/times.h> 29 #if defined(USE_PTHREAD_MUTEXES) 41 #if defined(USE_PTHREAD_MUTEXES) 57 #if defined(__i386__)||defined(__x86_64__) 60 (void) virtual_vendor_name;
67 #define _PATH_SYS_SYSTEM "/sys/devices/system" 68 #define _PATH_SYS_CPU0 _PATH_SYS_SYSTEM "/cpu/cpu0" 80 while ( fgets( line, 256,
f ) != NULL ) {
81 if ( strstr( line, search_str ) != NULL ) {
83 for (
s = line; *
s && ( *
s !=
':' ); ++
s );
108 sysctlnametomib(
"machdep.cpu.vendor", mib, &len);
111 if (sysctl(mib, 3, &
buffer, &len, NULL, 0) == -1) {
123 sysctlnametomib(
"machdep.cpu.brand_string", mib, &len);
126 if (sysctl(mib, 3, &
buffer, &len, NULL, 0) == -1) {
135 sysctlnametomib(
"machdep.cpu.stepping", mib, &len);
138 if (sysctl(mib, 3, &
buffer, &len, NULL, 0) == -1) {
149 sysctlnametomib(
"machdep.cpu.family", mib, &len);
152 if (sysctl(mib, 3, &
buffer, &len, NULL, 0) == -1) {
162 sysctlnametomib(
"machdep.cpu.model", mib, &len);
165 if (sysctl(mib, 3, &
buffer, &len, NULL, 0) == -1) {
176 sysctlnametomib(
"hw.cpufrequency_max", mib, &len);
179 if (sysctl(mib, 2, &ll, &len, NULL, 0) == -1) {
186 sysctlnametomib(
"hw.cpufrequency_min", mib, &len);
189 if (sysctl(mib, 2, &ll, &len, NULL, 0) == -1) {
199 sysctlnametomib(
"hw.ncpu", mib, &len);
202 if (sysctl(mib, 2, &
buffer, &len, NULL, 0) == -1) {
221 int cpuinfo_mhz,sys_min_khz,sys_max_khz;
235 sprintf( maxargs,
"/proc/%d/exe", (
int )
pid );
237 PAPIERROR(
"readlink(%s) returned < 0", maxargs );
252 SUBDBG(
"Text: Start %p, End %p, length %d\n",
257 SUBDBG(
"Data: Start %p, End %p, length %d\n",
262 SUBDBG(
"Bss: Start %p, End %p, length %d\n",
288 SUBDBG(
"Found %d %s(%d) %s(%d) CPUs at %d Mhz.\n",
305 int major=0,minor=0,sub=0;
307 struct utsname uname_buffer;
313 uname(&uname_buffer);
315 SUBDBG(
"Native kernel version %s\n",uname_buffer.release);
322 if (ptr!=NULL) major=
atoi(ptr);
324 ptr=strtok(NULL,
".");
325 if (ptr!=NULL) minor=
atoi(ptr);
327 ptr=strtok(NULL,
".");
328 if (ptr!=NULL) sub=
atoi(ptr);
345 static inline long long 352 asm volatile (
"rdtsc":
"=a" (
a ),
"=d"( d ) );
353 (
ret ) = ( (
long long )
a ) | ( ( (
long long ) d ) << 32 );
357 __asm__ __volatile__(
"rdtsc":
"=A"(
ret ): );
381 retval = (
long long )
buffer.tv_sec * (
long long ) 1000000;
398 SUBDBG(
"user %d system %d\n", (
int )
buffer.tms_utime,
399 (
int )
buffer.tms_stime );
401 1000000 / sysconf( _SC_CLK_TCK ));
long long _darwin_get_real_usec_gettimeofday(void)
int _darwin_detect_hypervisor(char *virtual_vendor_name)
#define PAPI_INT_MPX_DEF_US
long long _darwin_get_real_cycles(void)
PAPI_preload_info_t preload_info
long long _darwin_get_virt_usec_times(void)
int _papi_hwi_init_os(void)
Return codes and api definitions.
int _darwin_update_shlib_info(papi_mdi_t *mdi)
char name[PAPI_MAX_STR_LEN]
static int _darwin_init_locks(void)
int _darwin_get_system_info(papi_mdi_t *mdi)
PAPI_address_map_t address_info
#define PAPI_HUGE_STR_LEN
papi_os_vector_t _papi_os_vector
char model_string[PAPI_MAX_STR_LEN]
int _darwin_get_cpu_info(PAPI_hw_info_t *hwinfo, int *cpuinfo_mhz)
static char * search_cpu_info(FILE *f, char *search_str, char *line)
volatile unsigned int _papi_hwd_lock_data[PAPI_MAX_LOCK]
#define SUBDBG(format, args...)
void PAPIERROR(char *format,...)
PAPI_os_info_t _papi_os_info
char version[PAPI_MAX_STR_LEN]
#define PAPI_INT_MPX_SIGNAL
papi_mdi_t _papi_hwi_system_info
char vendor_string[PAPI_MAX_STR_LEN]
#define PAPI_VENDOR_INTEL
int _x86_detect_hypervisor(char *vendor_name)
int gettimeofday(void *ptr1, void *ptr2)
static long long get_cycles(void)
char lib_dir_env[PAPI_MAX_STR_LEN]
int(* get_memory_info)(PAPI_hw_info_t *, int)
char virtual_vendor_string[PAPI_MAX_STR_LEN]
char fullname[PAPI_HUGE_STR_LEN]
char lib_preload_env[PAPI_MAX_STR_LEN]
int _darwin_get_memory_info(PAPI_hw_info_t *hwinfo, int cpu_type)
char name[PAPI_HUGE_STR_LEN]
static double a[MATRIX_SIZE][MATRIX_SIZE]
int _darwin_get_dmem_info(PAPI_dmem_info_t *d)
static char pathbuf[PATH_MAX]