17#define MX_MAX_COUNTERS 100
18#define MX_MAX_COUNTER_TERMS MX_MAX_COUNTERS
22typedef struct MX_register
28typedef struct MX_native_event_entry
38typedef struct MX_reg_alloc
43typedef struct MX_control_state
52typedef struct MX_context
59 {{1, },
"LANAI_UPTIME",
"Lanai uptime (seconds)"},
60 {{2, },
"COUNTERS_UPTIME",
"Counters uptime (seconds)"},
61 {{3, },
"BAD_CRC8",
"Bad CRC8 (Port 0)"},
62 {{4, },
"BAD_CRC32",
"Bad CRC32 (Port 0)"},
63 {{5, },
"UNSTRIPPED_ROUTE",
"Unstripped route (Port 0)"},
64 {{6, },
"PKT_DESC_INVALID",
"pkt_desc_invalid (Port 0)"},
65 {{7, },
"RECV_PKT_ERRORS",
"recv_pkt_errors (Port 0)"},
66 {{8, },
"PKT_MISROUTED",
"pkt_misrouted (Port 0)"},
67 {{9, },
"DATA_SRC_UNKNOWN",
"data_src_unknown"},
68 {{10, },
"DATA_BAD_ENDPT",
"data_bad_endpt"},
69 {{11, },
"DATA_ENDPT_CLOSED",
"data_endpt_closed"},
70 {{12, },
"DATA_BAD_SESSION",
"data_bad_session"},
71 {{13, },
"PUSH_BAD_WINDOW",
"push_bad_window"},
72 {{14, },
"PUSH_DUPLICATE",
"push_duplicate"},
73 {{15, },
"PUSH_OBSOLETE",
"push_obsolete"},
74 {{16, },
"PUSH_RACE_DRIVER",
"push_race_driver"},
75 {{17, },
"PUSH_BAD_SEND_HANDLE_MAGIC",
"push_bad_send_handle_magic"},
76 {{18, },
"PUSH_BAD_SRC_MAGIC",
"push_bad_src_magic"},
77 {{19, },
"PULL_OBSOLETE",
"pull_obsolete"},
78 {{20, },
"PULL_NOTIFY_OBSOLETE",
"pull_notify_obsolete"},
79 {{21, },
"PULL_RACE_DRIVER",
"pull_race_driver"},
80 {{22, },
"ACK_BAD_TYPE",
"ack_bad_type"},
81 {{23, },
"ACK_BAD_MAGIC",
"ack_bad_magic"},
82 {{24, },
"ACK_RESEND_RACE",
"ack_resend_race"},
83 {{25, },
"LATE_ACK",
"Late ack"},
84 {{26, },
"ACK_NACK_FRAMES_IN_PIPE",
"ack_nack_frames_in_pipe"},
85 {{27, },
"NACK_BAD_ENDPT",
"nack_bad_endpt"},
86 {{28, },
"NACK_ENDPT_CLOSED",
"nack_endpt_closed"},
87 {{29, },
"NACK_BAD_SESSION",
"nack_bad_session"},
88 {{30, },
"NACK_BAD_RDMAWIN",
"nack_bad_rdmawin"},
89 {{31, },
"NACK_EVENTQ_FULL",
"nack_eventq_full"},
90 {{32, },
"SEND_BAD_RDMAWIN",
"send_bad_rdmawin"},
91 {{33, },
"CONNECT_TIMEOUT",
"connect_timeout"},
92 {{34, },
"CONNECT_SRC_UNKNOWN",
"connect_src_unknown"},
93 {{35, },
"QUERY_BAD_MAGIC",
"query_bad_magic"},
94 {{36, },
"QUERY_TIMED_OUT",
"query_timed_out"},
95 {{37, },
"QUERY_SRC_UNKNOWN",
"query_src_unknown"},
96 {{38, },
"RAW_SENDS",
"Raw sends (Port 0)"},
97 {{39, },
"RAW_RECEIVES",
"Raw receives (Port 0)"},
98 {{40, },
"RAW_OVERSIZED_PACKETS",
"Raw oversized packets (Port 0)"},
99 {{41, },
"RAW_RECV_OVERRUN",
"raw_recv_overrun"},
100 {{42, },
"RAW_DISABLED",
"raw_disabled"},
101 {{43, },
"CONNECT_SEND",
"connect_send"},
102 {{44, },
"CONNECT_RECV",
"connect_recv"},
103 {{45, },
"ACK_SEND",
"ack_send (Port 0)"},
104 {{46, },
"ACK_RECV",
"ack_recv (Port 0)"},
105 {{47, },
"PUSH_SEND",
"push_send (Port 0)"},
106 {{48, },
"PUSH_RECV",
"push_recv (Port 0)"},
107 {{49, },
"QUERY_SEND",
"query_send (Port 0)"},
108 {{50, },
"QUERY_RECV",
"query_recv (Port 0)"},
109 {{51, },
"REPLY_SEND",
"reply_send (Port 0)"},
110 {{52, },
"REPLY_RECV",
"reply_recv (Port 0)"},
111 {{53, },
"QUERY_UNKNOWN",
"query_unknown (Port 0)"},
113 {{55, },
"DATA_SEND_NULL",
"data_send_null (Port 0)"},
114 {{56, },
"DATA_SEND_SMALL",
"data_send_small (Port 0)"},
115 {{57, },
"DATA_SEND_MEDIUM",
"data_send_medium (Port 0)"},
116 {{58, },
"DATA_SEND_RNDV",
"data_send_rndv (Port 0)"},
117 {{59, },
"DATA_SEND_PULL",
"data_send_pull (Port 0)"},
118 {{60, },
"DATA_RECV_NULL",
"data_recv_null (Port 0)"},
119 {{61, },
"DATA_RECV_SMALL_INLINE",
"data_recv_small_inline (Port 0)"},
120 {{62, },
"DATA_RECV_SMALL_COPY",
"data_recv_small_copy (Port 0)"},
121 {{63, },
"DATA_RECV_MEDIUM",
"data_recv_medium (Port 0)"},
122 {{64, },
"DATA_RECV_RNDV",
"data_recv_rndv (Port 0)"},
123 {{65, },
"DATA_RECV_PULL",
"data_recv_pull (Port 0)"},
124 {{66, },
"ETHER_SEND_UNICAST_CNT",
"ether_send_unicast_cnt (Port 0)"},
125 {{67, },
"ETHER_SEND_MULTICAST_CNT",
"ether_send_multicast_cnt (Port 0)"},
126 {{68, },
"ETHER_RECV_SMALL_CNT",
"ether_recv_small_cnt (Port 0)"},
127 {{69, },
"ETHER_RECV_BIG_CNT",
"ether_recv_big_cnt (Port 0)"},
128 {{70, },
"ETHER_OVERRUN",
"ether_overrun"},
129 {{71, },
"ETHER_OVERSIZED",
"ether_oversized"},
130 {{72, },
"DATA_RECV_NO_CREDITS",
"data_recv_no_credits"},
131 {{73, },
"PACKETS_RECENT",
"Packets resent"},
132 {{74, },
"PACKETS_DROPPED",
"Packets dropped (data send side)"},
133 {{75, },
"MAPPER_ROUTES_UPDATE",
"Mapper routes update"},
134 {{76, },
"ROUTE_DISPERSION",
"Route dispersion (Port 0)"},
135 {{77, },
"OUT_OF_SEND_HANDLES",
"out_of_send_handles"},
136 {{78, },
"OUT_OF_PULL_HANDLES",
"out_of_pull_handles"},
137 {{79, },
"OUT_OF_PUSH_HANDLES",
"out_of_push_handles"},
138 {{80, },
"MEDIUM_CONT_RACE",
"medium_cont_race"},
139 {{81, },
"CMD_TYPE_UNKNOWN",
"cmd_type_unknown"},
140 {{82, },
"UREQ_TYPE_UNKNOWN",
"ureq_type_unknown"},
141 {{83, },
"INTERRUPTS_OVERRUN",
"Interrupts overrun"},
142 {{84, },
"WAITING_FOR_INTERRUPT_DMA",
"Waiting for interrupt DMA"},
143 {{85, },
"WAITING_FOR_INTERRUPT_ACK",
"Waiting for interrupt Ack"},
144 {{86, },
"WAITING_FOR_INTERRUPT_TIMER",
"Waiting for interrupt Timer"},
145 {{87, },
"SLABS_RECYCLING",
"Slabs recycling"},
146 {{88, },
"SLABS_PRESSURE",
"Slabs pressure"},
147 {{89, },
"SLABS_STARVATION",
"Slabs starvation"},
148 {{90, },
"OUT_OF_RDMA_HANDLES",
"out_of_rdma handles"},
149 {{91, },
"EVENTQ_FULL",
"eventq_full"},
150 {{92, },
"BUFFER_DROP",
"buffer_drop (Port 0)"},
151 {{93, },
"MEMORY_DROP",
"memory_drop (Port 0)"},
152 {{94, },
"HARDWARE_FLOW_CONTROL",
"Hardware flow control (Port 0)"},
153 {{95, },
"SIMULATED_PACKETS_LOST",
"(Devel) Simulated packets lost (Port 0)"},
154 {{96, },
"LOGGING_FRAMES_DUMPED",
"(Logging) Logging frames dumped"},
155 {{97, },
"WAKE_INTERRUPTS",
"Wake interrupts"},
156 {{98, },
"AVERTED_WAKEUP_RACE",
"Averted wakeup race"},
157 {{99, },
"DMA_METADATA_RACE",
"Dma metadata race"},
196 if (line[
i+1]!=
'\0') {
198 sscanf(&line[
i+1],
"%lld",&counters[linenum]);
228 int checklen, len, pathlen;
232 path = getenv(
"PATH");
233 pathlen = strlen(path);
235 len = strcspn(path,
":");
243 checklen = len + strlen(
"/mx_counters");
244 if (checklen < BUFSIZ) {
252 checklen = checklen + strlen(
" 2> /dev/null");
253 if (checklen < BUFSIZ) {
262 pathlen = pathlen - len - 1;
264 path = path + len + 1;
519 int index = *EventCode;
522 *EventCode = *EventCode + 1;
538 .description =
"Myricom MX (Myrinet Express) statistics",
547 .fast_real_timer = 0,
548 .fast_virtual_timer = 0,
550 .attach_must_ptrace = 0,
struct papi_vectors * _papi_hwd[]
char events[MAX_EVENTS][BUFSIZ]
static const MX_native_event_entry_t mx_native_table[]
static int _mx_ntv_code_to_name(unsigned int EventCode, char *name, int len)
static int _mx_shutdown_thread(hwd_context_t *ctx)
static int _mx_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _mx_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _mx_ctl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
static int _mx_ntv_enum_events(unsigned int *EventCode, int modifier)
static int _mx_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long long **events, int flags)
static int _mx_set_domain(hwd_control_state_t *cntrl, int domain)
static int _mx_init_component(int cidx)
static int _mx_init_thread(hwd_context_t *ctx)
static char mx_counters_exe[BUFSIZ]
static int _mx_shutdown_component(void)
static int _mx_ntv_code_to_descr(unsigned int EventCode, char *name, int len)
static int _mx_init_control_state(hwd_control_state_t *ctl)
static int _mx_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
static int read_mx_counters(long long *counters)
static int _mx_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl)
Return codes and api definitions.
int fclose(FILE *__stream)
long long difference[MX_MAX_COUNTERS]
int which_counter[MX_MAX_COUNTERS]
long long current_count[MX_MAX_COUNTERS]
long long start_count[MX_MAX_COUNTERS]
char name[PAPI_MAX_STR_LEN]
char disabled_reason[PAPI_HUGE_STR_LEN]
PAPI_component_info_t cmp_info