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
}