aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2009-05-23 12:29:00 -0400
committerIngo Molnar <mingo@elte.hu>2009-05-24 02:24:08 -0400
commit082ff5a2767a0679ee543f14883adbafb631ffbe (patch)
tree5ddf792ed3f80b17bc427edea1dc1d4b4303b4f6 /include
parentaa9c67f53d1969cf1db4c9c2db3a78c4ceb96469 (diff)
perf_counter: Change pctrl() behaviour
Instead of en/dis-abling all counters acting on a particular task, en/dis- able all counters we created. [ v2: fix crash on first counter enable ] Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: John Kacur <jkacur@redhat.com> LKML-Reference: <20090523163012.916937244@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r--include/linux/init_task.h10
-rw-r--r--include/linux/perf_counter.h3
-rw-r--r--include/linux/sched.h2
3 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index d87247d2641f..353c0ac7723a 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -108,6 +108,15 @@ extern struct group_info init_groups;
108 108
109extern struct cred init_cred; 109extern struct cred init_cred;
110 110
111#ifdef CONFIG_PERF_COUNTERS
112# define INIT_PERF_COUNTERS(tsk) \
113 .perf_counter_mutex = \
114 __MUTEX_INITIALIZER(tsk.perf_counter_mutex), \
115 .perf_counter_list = LIST_HEAD_INIT(tsk.perf_counter_list),
116#else
117# define INIT_PERF_COUNTERS(tsk)
118#endif
119
111/* 120/*
112 * INIT_TASK is used to set up the first task table, touch at 121 * INIT_TASK is used to set up the first task table, touch at
113 * your own risk!. Base=0, limit=0x1fffff (=2MB) 122 * your own risk!. Base=0, limit=0x1fffff (=2MB)
@@ -171,6 +180,7 @@ extern struct cred init_cred;
171 }, \ 180 }, \
172 .dirties = INIT_PROP_LOCAL_SINGLE(dirties), \ 181 .dirties = INIT_PROP_LOCAL_SINGLE(dirties), \
173 INIT_IDS \ 182 INIT_IDS \
183 INIT_PERF_COUNTERS(tsk) \
174 INIT_TRACE_IRQFLAGS \ 184 INIT_TRACE_IRQFLAGS \
175 INIT_LOCKDEP \ 185 INIT_LOCKDEP \
176 INIT_FTRACE_GRAPH \ 186 INIT_FTRACE_GRAPH \
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
index 4ab8050eb9e8..4159ee5940f8 100644
--- a/include/linux/perf_counter.h
+++ b/include/linux/perf_counter.h
@@ -469,6 +469,9 @@ struct perf_counter {
469 int oncpu; 469 int oncpu;
470 int cpu; 470 int cpu;
471 471
472 struct list_head owner_entry;
473 struct task_struct *owner;
474
472 /* mmap bits */ 475 /* mmap bits */
473 struct mutex mmap_mutex; 476 struct mutex mmap_mutex;
474 atomic_t mmap_count; 477 atomic_t mmap_count;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 9714d450f417..bc9326dcdde1 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1389,6 +1389,8 @@ struct task_struct {
1389#endif 1389#endif
1390#ifdef CONFIG_PERF_COUNTERS 1390#ifdef CONFIG_PERF_COUNTERS
1391 struct perf_counter_context *perf_counter_ctxp; 1391 struct perf_counter_context *perf_counter_ctxp;
1392 struct mutex perf_counter_mutex;
1393 struct list_head perf_counter_list;
1392#endif 1394#endif
1393#ifdef CONFIG_NUMA 1395#ifdef CONFIG_NUMA
1394 struct mempolicy *mempolicy; 1396 struct mempolicy *mempolicy;