Exemple #1
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;
}
Exemple #2
0
static void addfield(char *map, char **dst, const char *sep,
		     const char *a, jsmntok_t *bt)
{
	unsigned len = strlen(a) + 1 + strlen(sep);
	int olen = *dst ? strlen(*dst) : 0;
	int blen = bt ? json_len(bt) : 0;

	*dst = realloc(*dst, len + olen + blen);
	if (!*dst)
		exit(ENOMEM);
	if (!olen)
		*(*dst) = 0;
	else
		strcat(*dst, sep);
	strcat(*dst, a);
	if (bt)
		strncat(*dst, map + bt->start, blen);
}
Exemple #3
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 && 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;
}
Exemple #4
0
static void addfield(char *map, char **dst, const char *sep,
		     const char *a, jsmntok_t *bt)
{
	unsigned int len = strlen(a) + 1 + strlen(sep);
	int olen = *dst ? strlen(*dst) : 0;
	int blen = bt ? json_len(bt) : 0;
	char *out;

	out = realloc(*dst, len + olen + blen);
	if (!out) {
		/* Don't add field in this case */
		return;
	}
	*dst = out;

	if (!olen)
		*(*dst) = 0;
	else
		strcat(*dst, sep);
	strcat(*dst, a);
	if (bt)
		strncat(*dst, map + bt->start, blen);
}