__cmd_report() => perf_session_open(),打开perf.data=>perf_session_read_header()根据perf.data的头部初始化session->evlist链表上的各个事件。
perf_session__process_events()首先把0号进程封装成一个thread结构体th->comm=”swapper”,初始化th->mg,并将这个thread结构体放到session->threads红黑树上。
接下来,到perf.data的data_offset处,fetch_mapped_event()得到一个perf_event,perf_session__process_event()处理这个事件,++session->hists->stats.nr_events[0]以及nr_events[event->header.type],对于内核事件,perf_session__parse_sample()根