Blame src/darwin-memory.c
|
Packit Service |
a1973e |
#include <string.h>
|
|
Packit Service |
a1973e |
#include <errno.h>
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include "papi.h"
|
|
Packit Service |
a1973e |
#include "papi_internal.h"
|
|
Packit Service |
a1973e |
#include "papi_memory.h" /* papi_calloc() */
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include "x86_cpuid_info.h"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include "darwin-lock.h"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
int
|
|
Packit Service |
a1973e |
_darwin_get_dmem_info( PAPI_dmem_info_t * d )
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
int mib[4];
|
|
Packit Service |
a1973e |
size_t len;
|
|
Packit Service |
a1973e |
char buffer[BUFSIZ];
|
|
Packit Service |
a1973e |
long long ll;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/**********/
|
|
Packit Service |
a1973e |
/* memory */
|
|
Packit Service |
a1973e |
/**********/
|
|
Packit Service |
a1973e |
len = 2;
|
|
Packit Service |
a1973e |
sysctlnametomib("hw.memsize", mib, &len;;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
len = 8;
|
|
Packit Service |
a1973e |
if (sysctl(mib, 2, &ll, &len, NULL, 0) == -1) {
|
|
Packit Service |
a1973e |
return PAPI_ESYS;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
d->size=ll;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
d->pagesize = getpagesize( );
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
return PAPI_OK;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/*
|
|
Packit Service |
a1973e |
* Architecture-specific cache detection code
|
|
Packit Service |
a1973e |
*/
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#if defined(__i386__)||defined(__x86_64__)
|
|
Packit Service |
a1973e |
static int
|
|
Packit Service |
a1973e |
x86_get_memory_info( PAPI_hw_info_t * hw_info )
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
int retval = PAPI_OK;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
switch ( hw_info->vendor ) {
|
|
Packit Service |
a1973e |
case PAPI_VENDOR_AMD:
|
|
Packit Service |
a1973e |
case PAPI_VENDOR_INTEL:
|
|
Packit Service |
a1973e |
retval = _x86_cache_info( &hw_info->mem_hierarchy );
|
|
Packit Service |
a1973e |
break;
|
|
Packit Service |
a1973e |
default:
|
|
Packit Service |
a1973e |
PAPIERROR( "Unknown vendor in memory information call for x86." );
|
|
Packit Service |
a1973e |
return PAPI_ENOIMPL;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
return retval;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
#endif
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
int
|
|
Packit Service |
a1973e |
_darwin_get_memory_info( PAPI_hw_info_t * hwinfo, int cpu_type )
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
( void ) cpu_type; /*unused */
|
|
Packit Service |
a1973e |
int retval = PAPI_OK;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
x86_get_memory_info( hwinfo );
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
return retval;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
int
|
|
Packit Service |
a1973e |
_darwin_update_shlib_info( papi_mdi_t *mdi )
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
return PAPI_OK;
|
|
Packit Service |
a1973e |
}
|