Alexey Budankov writes:
>>> +static void
>>> +perf_event_groups_insert(struct perf_event_groups *groups,
>>> + struct perf_event *event)
>>> +{
>>> + struct rb_node **node;
>>> + struct rb_node *parent;
>>> + struct perf_event *node_event;
>>> +
Alexey Budankov writes:
>>> +static void
>>> +perf_event_groups_insert(struct perf_event_groups *groups,
>>> + struct perf_event *event)
>>> +{
>>> + struct rb_node **node;
>>> + struct rb_node *parent;
>>> + struct perf_event *node_event;
>>> +
>>> + WARN_ON_ONCE(!groups ||
Hi,
On 18.07.2017 15:29, Alexander Shishkin wrote:
> Alexey Budankov writes:
>
>> +/*
>> + * Helper function to test if event groups are empty;
>> + */
>> +static int
>> +perf_event_groups_empty(struct perf_event_groups *groups)
>> +{
>> +return
Hi,
On 18.07.2017 15:29, Alexander Shishkin wrote:
> Alexey Budankov writes:
>
>> +/*
>> + * Helper function to test if event groups are empty;
>> + */
>> +static int
>> +perf_event_groups_empty(struct perf_event_groups *groups)
>> +{
>> +return list_empty(>list);
>> +}
>
> This doesn't
Hi,
On 18.07.2017 15:02, Alexander Shishkin wrote:
> Alexey Budankov writes:
>
>> +static void
>> +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu)
>> +{
>> +struct rb_node *node;
>> +struct perf_event *node_event;
>> +
>> +
Hi,
On 18.07.2017 15:02, Alexander Shishkin wrote:
> Alexey Budankov writes:
>
>> +static void
>> +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu)
>> +{
>> +struct rb_node *node;
>> +struct perf_event *node_event;
>> +
>> +WARN_ON_ONCE(!groups);
>
> This seems
Alexey Budankov writes:
> +/*
> + * Helper function to test if event groups are empty;
> + */
> +static int
> +perf_event_groups_empty(struct perf_event_groups *groups)
> +{
> + return list_empty(>list);
> +}
This doesn't seem useful, it's only used once.
Alexey Budankov writes:
> +/*
> + * Helper function to test if event groups are empty;
> + */
> +static int
> +perf_event_groups_empty(struct perf_event_groups *groups)
> +{
> + return list_empty(>list);
> +}
This doesn't seem useful, it's only used once. Also, it's not clear how
access to
Alexey Budankov writes:
> +static void
> +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu)
> +{
> + struct rb_node *node;
> + struct perf_event *node_event;
> +
> + WARN_ON_ONCE(!groups);
This seems redundant.
> +
> +
Alexey Budankov writes:
> +static void
> +perf_event_groups_rotate(struct perf_event_groups *groups, int cpu)
> +{
> + struct rb_node *node;
> + struct perf_event *node_event;
> +
> + WARN_ON_ONCE(!groups);
This seems redundant.
> +
> + list_rotate_left(>list);
> +
> + /*
perf/core: use rb trees for pinned/flexible groups
By default, the userspace perf tool opens per-cpu task-bound events
when sampling, so for N logical events requested by the user, the tool
will open N * NR_CPUS events.
In the kernel, we mux events with a hrtimer, periodically rotating the
perf/core: use rb trees for pinned/flexible groups
By default, the userspace perf tool opens per-cpu task-bound events
when sampling, so for N logical events requested by the user, the tool
will open N * NR_CPUS events.
In the kernel, we mux events with a hrtimer, periodically rotating the
12 matches
Mail list logo