static int match_field(char *map, jsmntok_t *field, int nz, char **event, jsmntok_t *val) { struct field *f; jsmntok_t newval = *val; for (f = fields; f->field; f++) if (json_streq(map, field, f->field) && nz) { cut_comma(map, &newval); addfield(map, event, ",", f->kernel, &newval); return 1; } return 0; }
static struct msrmap *lookup_msr(char *map, jsmntok_t *val) { jsmntok_t newval = *val; static bool warned = false; int i; cut_comma(map, &newval); for (i = 0; msrmap[i].num; i++) if (json_streq(map, &newval, msrmap[i].num)) return &msrmap[i]; if (!warned) { warned = true; fprintf(stderr, "Unknown MSR in event file %.*s\n", json_len(val), map + val->start); } return NULL; }
static struct msrmap *lookup_msr(char *map, jsmntok_t *val) { jsmntok_t newval = *val; static bool warned = false; int i; cut_comma(map, &newval); for (i = 0; msrmap[i].num; i++) if (json_streq(map, &newval, msrmap[i].num)) return &msrmap[i]; if (!warned && strncmp(map + val->start, "0x3F7", 5)) { /* no warning for Skylake PEBS Frontend MSR */ warned = true; fprintf(stderr, "Unknown MSR in event file %.*s\n", json_len(val), map + val->start); } return NULL; }