Re: [RFC PATCH v2 3/7] libperf: Add perf_evsel__{refresh, period}() functions
From: Jiri Olsa
Date: Wed Mar 30 2022 - 09:50:34 EST
On Fri, Mar 25, 2022 at 01:38:25PM +0900, Shunsuke Nakamura wrote:
SNIP
> +int perf_evsel__refresh_cpu(struct perf_evsel *evsel, int refresh, int cpu_map_idx)
> +{
> + return perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_REFRESH, refresh, cpu_map_idx);
> +}
> +
> +int perf_evsel__refresh(struct perf_evsel *evsel, int refresh)
> +{
> + int i;
> + int err = 0;
> +
> + for (i = 0; i < xyarray__max_x(evsel->fd) && !err; i++)
> + err = perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_REFRESH, refresh, i);
> + return err;
> +}
> +
> +int perf_evsel__period_cpu(struct perf_evsel *evsel, __u64 period, int cpu_map_idx)
> +{
> + struct perf_event_attr *attr;
> + int err = 0;
> +
> + attr = perf_evsel__attr(evsel);
> + if (!attr)
> + return -EINVAL;
> +
> + err = perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_PERIOD,
> + (unsigned long)&period, cpu_map_idx);
> + if (err)
> + return err;
> +
> + attr->sample_period = period;
what's the point in updating attr? this will be used after
event is created right?
> +
> + return err;
> +}
> +
> +int perf_evsel__period(struct perf_evsel *evsel, __u64 period)
> +{
> + struct perf_event_attr *attr;
> + int i;
> + int err = 0;
> +
> + attr = perf_evsel__attr(evsel);
> + if (!attr)
> + return -EINVAL;
> +
> + for (i = 0; i < xyarray__max_x(evsel->fd); i++) {
> + err = perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_PERIOD,
> + (unsigned long)&period, i);
> + if (err)
> + return err;
> + }
> +
> + attr->sample_period = period;
same as above
thanks,
jirka
> +
> return err;
> }
>
SNIP