<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic perf_even_open (multiple events together) in Software Tuning, Performance Optimization &amp; Platform Monitoring</title>
    <link>https://community.intel.com/t5/Software-Tuning-Performance/perf-even-open-multiple-events-together/m-p/1108797#M5999</link>
    <description>&lt;P&gt;Hi, I'm new to use PEBS and &amp;nbsp;perf_event_open. Now, I'm trying to collect two events which are MEM_TRANS_RETIRED:LOAD_LATENCY:ldlat=3 &amp;nbsp;and MEM_UOPS_RETIRED:ALL_STORES. According to &lt;A href="http://man7.org/linux/man-pages/man2/perf_event_open.2.html" target="_blank"&gt;http://man7.org/linux/man-pages/man2/perf_event_open.2.html&lt;/A&gt;, I use perf_event_open to open first event and I can get a handle, &amp;nbsp;then I use this haddle as group id to open second event. But after I check result, it seems first event's result is overwrite by second event, I can only get second event's result. &amp;nbsp;My code is like bellow. Can anyone give me some advice? Thanks.&lt;/P&gt;

&lt;P&gt;struct perf_event_attr pe_attr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;memset(&amp;amp;pe_attr, 0, sizeof(pe_attr));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.size = sizeof(pe_attr);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pfm_perf_encode_arg_t arg;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;memset(&amp;amp;arg, 0, sizeof(arg));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;arg.size = sizeof(pfm_perf_encode_arg_t);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;arg.attr = &amp;amp;pe_attr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;char *fstr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;arg.fstr = &amp;amp;fstr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;curr_err = pfm_get_os_event_encoding(current_archi-&amp;gt;sampling_read_event, PFM_PLM0 | PFM_PLM3, PFM_OS_PERF_EVENT, &amp;amp;arg);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;if (curr_err != PFM_SUCCESS) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;return ERROR_PFM;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.sample_period = 1000;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_ADDR | PERF_SAMPLE_DATA_SRC; &amp;nbsp;//PERF_SAMPLE_WEIGHT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.mmap = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.task = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.precise_ip = 2;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;// Other parameters &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.disabled = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.exclude_kernel = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.exclude_hv = 1;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; long first_event_tid = perf_event_open(&amp;amp;pe_attr, 0, -1, -1, 0);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (first_event_tid == -1) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; return ERROR_PERF_EVENT_OPEN;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; pe_attr.disabled = 0; // The group leader will start/stop us &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; curr_err = pfm_get_os_event_encoding(current_archi-&amp;gt;sampling_write_event, PFM_PLM0 | PFM_PLM3, PFM_OS_PERF_EVENT, &amp;amp;arg); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (curr_err != PFM_SUCCESS) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ERROR_PFM; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; long second_event_fd = perf_event_open(&amp;amp;pe_attr_w, 0, -1, first_event_tid, 0); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (second_event_fd == -1) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; return ERROR_PERF_EVENT_OPEN; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; ioctl(first_event_tid, PERF_EVENT_IOC_ENABLE, 0);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 08 Dec 2016 21:47:37 GMT</pubDate>
    <dc:creator>kai_w_</dc:creator>
    <dc:date>2016-12-08T21:47:37Z</dc:date>
    <item>
      <title>perf_even_open (multiple events together)</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/perf-even-open-multiple-events-together/m-p/1108797#M5999</link>
      <description>&lt;P&gt;Hi, I'm new to use PEBS and &amp;nbsp;perf_event_open. Now, I'm trying to collect two events which are MEM_TRANS_RETIRED:LOAD_LATENCY:ldlat=3 &amp;nbsp;and MEM_UOPS_RETIRED:ALL_STORES. According to &lt;A href="http://man7.org/linux/man-pages/man2/perf_event_open.2.html" target="_blank"&gt;http://man7.org/linux/man-pages/man2/perf_event_open.2.html&lt;/A&gt;, I use perf_event_open to open first event and I can get a handle, &amp;nbsp;then I use this haddle as group id to open second event. But after I check result, it seems first event's result is overwrite by second event, I can only get second event's result. &amp;nbsp;My code is like bellow. Can anyone give me some advice? Thanks.&lt;/P&gt;

&lt;P&gt;struct perf_event_attr pe_attr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;memset(&amp;amp;pe_attr, 0, sizeof(pe_attr));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.size = sizeof(pe_attr);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pfm_perf_encode_arg_t arg;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;memset(&amp;amp;arg, 0, sizeof(arg));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;arg.size = sizeof(pfm_perf_encode_arg_t);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;arg.attr = &amp;amp;pe_attr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;char *fstr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;arg.fstr = &amp;amp;fstr;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;curr_err = pfm_get_os_event_encoding(current_archi-&amp;gt;sampling_read_event, PFM_PLM0 | PFM_PLM3, PFM_OS_PERF_EVENT, &amp;amp;arg);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;if (curr_err != PFM_SUCCESS) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;return ERROR_PFM;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.sample_period = 1000;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_ADDR | PERF_SAMPLE_DATA_SRC; &amp;nbsp;//PERF_SAMPLE_WEIGHT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.mmap = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.task = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.precise_ip = 2;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;// Other parameters &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.disabled = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.exclude_kernel = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;pe_attr.exclude_hv = 1;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; long first_event_tid = perf_event_open(&amp;amp;pe_attr, 0, -1, -1, 0);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (first_event_tid == -1) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; return ERROR_PERF_EVENT_OPEN;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; pe_attr.disabled = 0; // The group leader will start/stop us &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; curr_err = pfm_get_os_event_encoding(current_archi-&amp;gt;sampling_write_event, PFM_PLM0 | PFM_PLM3, PFM_OS_PERF_EVENT, &amp;amp;arg); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (curr_err != PFM_SUCCESS) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ERROR_PFM; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; long second_event_fd = perf_event_open(&amp;amp;pe_attr_w, 0, -1, first_event_tid, 0); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (second_event_fd == -1) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; return ERROR_PERF_EVENT_OPEN; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; ioctl(first_event_tid, PERF_EVENT_IOC_ENABLE, 0);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 08 Dec 2016 21:47:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/perf-even-open-multiple-events-together/m-p/1108797#M5999</guid>
      <dc:creator>kai_w_</dc:creator>
      <dc:date>2016-12-08T21:47:37Z</dc:date>
    </item>
  </channel>
</rss>

