37#define PFNECLIB_MAX_PMDS 32
47 "smir %0, %pmmr":
"=r"(pmmr));
48 if (pmmr != 0x0000000000001000) {
49 fprintf(
stderr,
"PMMR is not expected: 0x%lx\n", pmmr);
55static uint64_t
diff56(uint64_t after, uint64_t before)
57 return 0x00ffffffffffffff & (after - before);
60static uint64_t
diff52(uint64_t after, uint64_t before)
62 return 0x000fffffffffffff & (after - before);
66#define MAX_COUNTERS PFMLIB_MAX_PMCS
67#define MAX_COUNTER_TERMS PFMLIB_MAX_PMCS
126#define PFM_MAX_PMCDS 20
160 unsigned long *timeout_ns )
222 fprintf(
stderr,
"Placeholder: component disabled, error in check_pmmr\n");
288 long long **
events,
int flags )
330 long long curr_val = 0;
336 SUBDBG(
"%d, current value %lld\n",
i, curr_val);
337 control->
count[
c]=curr_val;
346int _papi_hwd_start_create_context = 0;
383 unsigned int *native_index,
int *profile_index )
388#define BPL (sizeof(uint64_t)<<3)
486 switch ( modifier ) {
553 .description =
"Linux perfnec CPU counters for NEC architecture",
562 .kernel_multiplex = 1,
567 .fast_real_timer = 1,
568 .fast_virtual_timer = 0,
570 .attach_must_ptrace = 1,
575 .context =
sizeof (
int ),
577 .reg_value =
sizeof (
int ),
578 .reg_alloc =
sizeof (
int )
605 .ntv_code_to_descr = NULL,
606 .ntv_code_to_bits = NULL
#define PAPI_DATATYPE_INT64
char events[MAX_EVENTS][BUFSIZ]
static double c[MATRIX_SIZE][MATRIX_SIZE]
static char * _local_strlcpy(char *dst, const char *src, size_t size)
#define PAPI_NATIVE_AND_MASK
Return codes and api definitions.
#define SUBDBG(format, args...)
static void dump_smpl_hdr(pfnec_dfl_smpl_hdr_t *hdr)
static int _papi_pfnec_write(hwd_context_t *ctx, hwd_control_state_t *ctl, long long *from)
static int process_smpl_entry(unsigned int native_pfnec_index, int flags, pfnec_dfl_smpl_entry_t **ent, vptr_t *pc)
static int setup_ear_event(unsigned int native_index, pfarg_pmd_t *pd, int flags)
static void dump_pmd(pfnec_control_state_t *ctl)
static int set_domain(hwd_control_state_t *ctl, int domain)
static int _perfnec_ntv_name_to_code(const char *name, unsigned int *EventCode)
static int _papi_pfnec_init_thread(hwd_context_t *thr_ctx)
static int find_profile_index(EventSetInfo_t *ESI, int pmd, int *flags, unsigned int *native_index, int *profile_index)
static int attach(hwd_control_state_t *ctl, unsigned long tid)
static int _papi_pfnec_write_pmcs(pfnec_context_t *ctx, pfnec_control_state_t *ctl)
static int _papi_pfnec_read_pmds(pfnec_context_t *ctx, pfnec_control_state_t *ctl)
static void dump_pmc(pfnec_control_state_t *ctl)
static void dump_smpl(pfnec_dfl_smpl_entry_t *entry)
#define PFNECLIB_MAX_PMDS
static int detect_timeout_and_unavail_pmu_regs(pfneclib_regmask_t *r_pmcs, pfneclib_regmask_t *r_pmds, unsigned long *timeout_ns)
static int compute_kernel_args(hwd_control_state_t *ctl0)
pfnec_context_t cmp_context_t
static int set_granularity(hwd_control_state_t *this_state, int domain)
static int _papi_pfnec_stop_profiling(ThreadInfo_t *thread, EventSetInfo_t *ESI)
static int _papi_pfnec_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long long **events, int flags)
static void dump_setinfo(pfarg_setinfo_t *setinfo, int num_sets)
papi_vector_t _perfnec_vector
static int check_multiplex_timeout(int ctx_fd, unsigned long *timeout_ns)
static uint64_t diff56(uint64_t after, uint64_t before)
static int process_smpl_buf(int num_smpl_pmds, int entry_size, ThreadInfo_t **thr)
static int _papi_pfnec_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
static int set_inherit(int arg)
static void _papi_pfnec_dispatch_timer(int n, hwd_siginfo_t *info, void *uc)
static int _papi_pfnec_allocate_registers(EventSetInfo_t *ESI)
pfnec_control_state_t cmp_control_state_t
static int _papi_pfnec_set_overflow(EventSetInfo_t *ESI, int EventIndex, int threshold)
static int _papi_pfnec_write_pmds(pfnec_context_t *ctx, pfnec_control_state_t *ctl)
static int _papi_pfnec_set_profile(EventSetInfo_t *ESI, int EventIndex, int threshold)
static int _papi_pfnec_init_component(int cidx)
static int round_requested_ns(int ns)
static int _papi_pfnec_init_control_state(hwd_control_state_t *ctl)
static int _papi_pfnec_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
static void pfnec_bv_set(uint64_t *bv, uint16_t rnum)
static void dump_sets(pfarg_setdesc_t *set, int num_sets)
static int _papi_pfnec_stop(hwd_context_t *ctx0, hwd_control_state_t *ctl0)
static int _papi_pfnec_shutdown(hwd_context_t *ctx0)
static int detach(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _papi_pfnec_ctl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
static void dump_smpl_arg(pfnec_dfl_smpl_arg_t *arg)
static int _perfnec_ntv_code_to_name(unsigned int EventCode, char *name, int len)
static int _perfnec_ntv_enum_events(unsigned int *EventCode, int modifier)
static int get_string_from_file(char *file, char *str, int len)
static int _perfnec_ntv_code_to_info(unsigned int EventCode, PAPI_event_info_t *info)
static int _papi_pfnec_start(hwd_context_t *ctx0, hwd_control_state_t *ctl0)
static uint64_t diff52(uint64_t after, uint64_t before)
static int check_pmmr(void)
static int _perfnec_pfnec_pmu_type
static int _papi_pfnec_shutdown_component()
int pfnec_dfl_smpl_entry_t
static _perfnec_native_event_entry_t perfnec_ntv_events[PKG_NUM_EVENTS]
static const char * pkg_event_descs[PKG_NUM_EVENTS]
static int pkg_events[PKG_NUM_EVENTS]
static const char * pkg_units[PKG_NUM_EVENTS]
static const char * pkg_event_names[PKG_NUM_EVENTS]
char units[MAX_EVENTS][BUFSIZ]
char name[PAPI_MAX_STR_LEN]
char units[PAPI_MIN_STR_LEN]
char symbol[PAPI_HUGE_STR_LEN]
char long_descr[PAPI_HUGE_STR_LEN]
char units[PAPI_MIN_STR_LEN]
_perfnec_register_t resources
char name[PAPI_MAX_STR_LEN]
char description[PAPI_MAX_STR_LEN]
PAPI_component_info_t cmp_info
long long count[PFNECLIB_MAX_PMDS]
long long which_counter[PKG_NUM_EVENTS]