* terminates. Use the wait4 values in that case.
         */
        if (err && cpu_map_idx == 0 &&
-           (counter->tool_event == PERF_TOOL_USER_TIME ||
-            counter->tool_event == PERF_TOOL_SYSTEM_TIME)) {
+           (evsel__tool_event(counter) == PERF_TOOL_USER_TIME ||
+            evsel__tool_event(counter) == PERF_TOOL_SYSTEM_TIME)) {
                u64 val, *start_time;
                struct perf_counts_values *count =
                        perf_counts(counter->counts, cpu_map_idx, thread);
 
                start_time = xyarray__entry(counter->start_times, cpu_map_idx, thread);
-               if (counter->tool_event == PERF_TOOL_USER_TIME)
+               if (evsel__tool_event(counter) == PERF_TOOL_USER_TIME)
                        val = ru_stats.ru_utime_usec_stat.mean;
                else
                        val = ru_stats.ru_stime_usec_stat.mean;
 
 
        case PERF_TYPE_SOFTWARE:
                if (evsel__is_tool(evsel))
-                       evsel__tool_name(evsel->tool_event, bf, sizeof(bf));
+                       evsel__tool_name(evsel__tool_event(evsel), bf, sizeof(bf));
                else
                        evsel__sw_name(evsel, bf, sizeof(bf));
                break;
                return evsel->metric_id;
 
        if (evsel__is_tool(evsel))
-               return perf_tool_event__to_str(evsel->tool_event);
+               return perf_tool_event__to_str(evsel__tool_event(evsel));
 
        return "unknown";
 }
        evsel->per_pkg_mask = NULL;
        zfree(&evsel->metric_events);
        perf_evsel__object.fini(evsel);
-       if (evsel->tool_event == PERF_TOOL_SYSTEM_TIME ||
-           evsel->tool_event == PERF_TOOL_USER_TIME)
+       if (evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME ||
+           evsel__tool_event(evsel) == PERF_TOOL_USER_TIME)
                xyarray__delete(evsel->start_times);
 }
 
 
        count = perf_counts(evsel->counts, cpu_map_idx, thread);
 
-       switch (evsel->tool_event) {
+       switch (evsel__tool_event(evsel)) {
        case PERF_TOOL_DURATION_TIME:
                /*
                 * Pretend duration_time is only on the first CPU and thread, or
                break;
        case PERF_TOOL_USER_TIME:
        case PERF_TOOL_SYSTEM_TIME: {
-               bool system = evsel->tool_event == PERF_TOOL_SYSTEM_TIME;
+               bool system = evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME;
 
                start_time = xyarray__entry(evsel->start_times, cpu_map_idx, thread);
                fd = FD(evsel, cpu_map_idx, thread);
            perf_evsel__alloc_fd(&evsel->core, perf_cpu_map__nr(cpus), nthreads) < 0)
                return -ENOMEM;
 
-       if ((evsel->tool_event == PERF_TOOL_SYSTEM_TIME ||
-            evsel->tool_event == PERF_TOOL_USER_TIME) &&
+       if ((evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME ||
+            evsel__tool_event(evsel) == PERF_TOOL_USER_TIME) &&
            !evsel->start_times) {
                evsel->start_times = xyarray__new(perf_cpu_map__nr(cpus), nthreads, sizeof(__u64));
                if (!evsel->start_times)
        int pid = -1, err, old_errno;
        enum rlimit_action set_rlimit = NO_CHANGE;
 
-       if (evsel->tool_event == PERF_TOOL_DURATION_TIME) {
+       if (evsel__tool_event(evsel) == PERF_TOOL_DURATION_TIME) {
                if (evsel->core.attr.sample_period) /* no sampling */
                        return -EINVAL;
                evsel->start_time = rdclock();
                        if (!evsel->cgrp && !evsel->core.system_wide)
                                pid = perf_thread_map__pid(threads, thread);
 
-                       if (evsel->tool_event == PERF_TOOL_USER_TIME ||
-                           evsel->tool_event == PERF_TOOL_SYSTEM_TIME) {
-                               bool system = evsel->tool_event == PERF_TOOL_SYSTEM_TIME;
+                       if (evsel__tool_event(evsel) == PERF_TOOL_USER_TIME ||
+                           evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME) {
+                               bool system = evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME;
                                __u64 *start_time = NULL;
 
                                if (evsel->core.attr.sample_period) {