On Mon, May 25, 2020 at 11:23:00AM -0300, Arnaldo Carvalho de Melo wrote: > Em Mon, May 25, 2020 at 12:42:05AM +0200, Jiri Olsa escreveu: > > hi, > > changes for using metric result in another metric seem > > to change lot of core metric code, so it's better we > > have some more tests before we do that. > > > > Sending as RFC as it's still alive and you guys might > > have some other idea of how to do this. > > > > Also available in here: > > git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git > > perf/fixes > > I applied the first three patches, will wait a bit for Ian and others to > have some time to look at it, but one thing I thought was that instead > of having parse_state->fake_pmu as a bool, you could have it as a > pointer to the fake pmu, this way we would do away with that static > thing in the middle of the parsing code. > > +static int check_id(const char *id) > +{ > + struct parse_events_error error; > + struct evlist *evlist; > + int ret; > + > + /* Numbers are always valid. */ > + if (is_number(id)) > + return 0; > + > + evlist = evlist__new(); > + if (!evlist) > + return -1; > + > + memset(&error, 0, sizeof(error)); > + ret = parse_events_fake(evlist, id, &error); > + if (ret) { > + pr_debug("str : %s\n", error.str); > + pr_debug("help : %s\n", error.help); > + pr_debug("first_str : %s\n", error.first_str); > + pr_debug("first_help : %s\n", error.first_help); > + } > + > + evlist__delete(evlist); > + free(error.str); > + free(error.help); > + free(error.first_str); > + free(error.first_help); > + return ret; > +} > > > Would read: > > struct perf_pmu fake = { 0, }; > . > . > . > ret = parse_events_fake_pmu(evlist, id, &fake, &error);
hi, ok I'll check, but what I'd like to keep is to have the fake pmu defined in just one place, I was initialy thinking to put it on the list of pmus, but then it'd appear in other places we dont want, like perf list ;-) > . > . > . > > > That also renames parse_events_fake() to parse_events_fake_pmu(). ok, thanks, jirka