On Mon, Mar 17, 2014 at 04:13:53PM +0900, Namhyung Kim wrote: > On Fri, 14 Mar 2014 15:00:04 +0100, Jiri Olsa wrote: > > Moving towards sharing map groups within a process threads. > > > > Because of this we need the map groups to be dynamically > > allocated. No other functional change is intended in here. > > @@ -664,7 +664,7 @@ void thread__find_addr_map(struct thread *thread, > > al->cpumode = cpumode; > > al->filtered = false; > > > > - if (machine == NULL) { > > + if ((machine == NULL) || (mg == NULL)) { > > al->map = NULL; > > return; > > } > > What about the kernel threads? I guess they're not using thread->mg but > machine->kmaps instead?
The machine->kmaps is used to store kernel maps - core + modules. All threads (including kernel ones) are using thread->mg, kernel threads have empty /proc/x/maps file. In case the sample address is detected within kernel space, the machine->kmaps is used instead of thread->mg: --- void thread__find_addr_map(struct thread *thread, ... { struct map_groups *mg = thread__map_groups_get(thread); ... if (cpumode == PERF_RECORD_MISC_KERNEL && perf_host) { al->level = 'k'; mg = &machine->kmaps; ... al->map = map_groups__find(mg, type, al->addr); --- jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/