On Mon, Nov 20, 2017 at 10:43:43PM +0800, Jin Yao wrote: SNIP
> diff --git a/tools/perf/util/target.h b/tools/perf/util/target.h > index 446aa7a..6ef01a8 100644 > --- a/tools/perf/util/target.h > +++ b/tools/perf/util/target.h > @@ -64,6 +64,11 @@ static inline bool target__none(struct target *target) > return !target__has_task(target) && !target__has_cpu(target); > } > > +static inline bool target__has_per_thread(struct target *target) > +{ > + return target->system_wide && target->per_thread; > +} this is confusing.. has_per_thread depends on system_wide? > + > static inline bool target__uses_dummy_map(struct target *target) > { > bool use_dummy = false; > @@ -73,6 +78,8 @@ static inline bool target__uses_dummy_map(struct target > *target) > else if (target__has_task(target) || > (!target__has_cpu(target) && !target->uses_mmap)) > use_dummy = true; > + else if (target__has_per_thread(target)) > + use_dummy = true; why do we need dummy_map for this? please comment thanks, jirka