On 4/30/2010 1:15 AM, stephane eranian wrote: > Corey, > > Glad to see this patch. This functionality had been on my wishlist for some > time. This is needed to validate the multi-group support. I have a few > comments, > see below. > >> diff --git a/perf_examples/perf_util.c b/perf_examples/perf_util.c >> index 4de21a8..3853ddf 100644 >> --- a/perf_examples/perf_util.c >> +++ b/perf_examples/perf_util.c >> @@ -34,9 +34,11 @@ >> int >> perf_setup_argv_events(char **argv, perf_event_desc_t **fd) >> { >> - perf_event_desc_t *fdt = NULL; >> - int num = 0, max_fd = 0, new_max; >> + static perf_event_desc_t *fdt = NULL; >> + static int num = 0, max_fd = 0; > > I'd rather not have a static variable here.
Yeah, I don't like statics either, but it solved the problem with few code changes. > This can lead to error > if someone reuses that code in a multi-threaded app. See below > for an alternative. > > >> + for (grp = 0; grp < options.num_groups; grp++) { >> + num = perf_setup_list_events(options.events[grp], &fds); >> + if (num < 1) >> + exit(1); >> + } >> > To avoid the static in perf_setup_list_events(), I would rather have something > like: > > old_num = num; > num = perf_setup_list_events(options.events[grp], &fds, num); > if (num == old_num) > exit(1); > > That way the function is re-entrant. And in case the return value is bogus, > the caller can either decide to continue with fewer groups or fail. Ok, I will rework the patch and post it again. Thanks for the review! -- Regards, - Corey Corey Ashford Software Engineer IBM Linux Technology Center, Linux Toolchain Beaverton, OR 503-578-3507 cjash...@us.ibm.com ------------------------------------------------------------------------------ _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel