perf/core: Split context's event group list into pinned and non-pinned lists
authorFrederic Weisbecker <fweisbec@gmail.com>
Sat, 9 Jan 2010 19:04:47 +0000 (20:04 +0100)
committerFrederic Weisbecker <fweisbec@gmail.com>
Sat, 16 Jan 2010 11:27:42 +0000 (12:27 +0100)
commit889ff0150661512d79484219612b7e2e024b6c07
tree6343ad7386aa3aefa7fe3f8ab9389f6abec1d141
parent881516eb828a3f7276c378bcef96b7788fc99016
perf/core: Split context's event group list into pinned and non-pinned lists

Split-up struct perf_event_context::group_list into pinned_groups
and flexible_groups (non-pinned).

This first appears to be useless as it duplicates various loops around
the group list handlings.

But it scales better in the fast-path in perf_sched_in(). We don't
anymore iterate twice through the entire list to separate pinned and
non-pinned scheduling. Instead we interate through two distinct lists.

The another desired effect is that it makes easier to define distinct
scheduling rules on both.

Changes in v2:
- Respectively rename pinned_grp_list and
  volatile_grp_list into pinned_groups and flexible_groups as per
  Ingo suggestion.
- Various cleanups

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
include/linux/perf_event.h
kernel/perf_event.c