|
Packit Service |
a1973e |
#ifndef _PAPI_SOLARIS_ULTRA_H
|
|
Packit Service |
a1973e |
#define _PAPI_SOLARIS_ULTRA_H
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include <stdio.h>
|
|
Packit Service |
a1973e |
#include <stdlib.h>
|
|
Packit Service |
a1973e |
#include <fcntl.h>
|
|
Packit Service |
a1973e |
#include <unistd.h>
|
|
Packit Service |
a1973e |
#include <assert.h>
|
|
Packit Service |
a1973e |
#include <string.h>
|
|
Packit Service |
a1973e |
#include <libgen.h>
|
|
Packit Service |
a1973e |
#include <limits.h>
|
|
Packit Service |
a1973e |
#include <synch.h>
|
|
Packit Service |
a1973e |
#include <procfs.h>
|
|
Packit Service |
a1973e |
#include <libcpc.h>
|
|
Packit Service |
a1973e |
#include <libgen.h>
|
|
Packit Service |
a1973e |
#include <ctype.h>
|
|
Packit Service |
a1973e |
#include <errno.h>
|
|
Packit Service |
a1973e |
#include <sys/times.h>
|
|
Packit Service |
a1973e |
#include <sys/time.h>
|
|
Packit Service |
a1973e |
#include <sys/types.h>
|
|
Packit Service |
a1973e |
#include <sys/processor.h>
|
|
Packit Service |
a1973e |
#include <sys/procset.h>
|
|
Packit Service |
a1973e |
#include <syms.h>
|
|
Packit Service |
a1973e |
#include <dlfcn.h>
|
|
Packit Service |
a1973e |
#include <sys/stat.h>
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include "papi_defines.h"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#define MAX_COUNTERS 2
|
|
Packit Service |
a1973e |
#define MAX_COUNTER_TERMS MAX_COUNTERS
|
|
Packit Service |
a1973e |
#define PAPI_MAX_NATIVE_EVENTS 71
|
|
Packit Service |
a1973e |
#define MAX_NATIVE_EVENT PAPI_MAX_NATIVE_EVENTS
|
|
Packit Service |
a1973e |
#define MAX_NATIVE_EVENT_USII 22
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/* Defines in papi_internal.h cause compile warnings on solaris because typedefs are done here */
|
|
Packit Service |
a1973e |
#undef hwd_context_t
|
|
Packit Service |
a1973e |
#undef hwd_control_state_t
|
|
Packit Service |
a1973e |
#undef hwd_reg_alloc_t
|
|
Packit Service |
a1973e |
#undef hwd_register_t
|
|
Packit Service |
a1973e |
#undef hwd_siginfo_t
|
|
Packit Service |
a1973e |
#undef hwd_ucontext_t
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef int hwd_reg_alloc_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef struct US_register
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
int event[MAX_COUNTERS];
|
|
Packit Service |
a1973e |
} hwd_register_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef struct papi_cpc_event
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
/* Structure to libcpc */
|
|
Packit Service |
a1973e |
cpc_event_t cmd;
|
|
Packit Service |
a1973e |
/* Flags to kernel */
|
|
Packit Service |
a1973e |
int flags;
|
|
Packit Service |
a1973e |
} papi_cpc_event_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef struct hwd_control_state
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
/* Buffer to pass to the kernel to control the counters */
|
|
Packit Service |
a1973e |
papi_cpc_event_t counter_cmd;
|
|
Packit Service |
a1973e |
/* overflow event counter */
|
|
Packit Service |
a1973e |
int overflow_num;
|
|
Packit Service |
a1973e |
} hwd_control_state_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef int hwd_register_map_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef struct _native_info
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
/* native name */
|
|
Packit Service |
a1973e |
char name[40];
|
|
Packit Service |
a1973e |
/* Buffer to pass to the kernel to control the counters */
|
|
Packit Service |
a1973e |
int encoding[MAX_COUNTERS];
|
|
Packit Service |
a1973e |
} native_info_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include "solaris-context.h"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
typedef int hwd_context_t;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/* Assembler prototypes */
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
extern void cpu_sync( void );
|
|
Packit Service |
a1973e |
extern unsigned long long get_tick( void );
|
|
Packit Service |
a1973e |
extern caddr_t _start, _end, _etext, _edata;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
extern rwlock_t lock[PAPI_MAX_LOCK];
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#define _papi_hwd_lock(lck) rw_wrlock(&lock[lck]);
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#define _papi_hwd_unlock(lck) rw_unlock(&lock[lck]);
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#endif
|