diff options
| author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2008-10-16 23:17:09 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-10-20 15:43:10 +0200 | 
| commit | c7e78cff6b7518212247fb20b1dc6411540dc9af (patch) | |
| tree | 4152afb3e00df125303c4c603e01addc19059ac7 /kernel/lockdep_proc.c | |
| parent | 7317d7b87edb41a9135e30be1ec3f7ef817c53dd (diff) | |
| download | olio-linux-3.10-c7e78cff6b7518212247fb20b1dc6411540dc9af.tar.xz olio-linux-3.10-c7e78cff6b7518212247fb20b1dc6411540dc9af.zip  | |
lockstat: contend with points
We currently only provide points that have to wait on contention, also
lists the points we have to wait for.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/lockdep_proc.c')
| -rw-r--r-- | kernel/lockdep_proc.c | 21 | 
1 files changed, 19 insertions, 2 deletions
diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c index 8d3a6eba8d5..13716b81389 100644 --- a/kernel/lockdep_proc.c +++ b/kernel/lockdep_proc.c @@ -557,7 +557,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)  	if (stats->read_holdtime.nr)  		namelen += 2; -	for (i = 0; i < ARRAY_SIZE(class->contention_point); i++) { +	for (i = 0; i < LOCKSTAT_POINTS; i++) {  		char sym[KSYM_SYMBOL_LEN];  		char ip[32]; @@ -574,6 +574,23 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)  				stats->contention_point[i],  				ip, sym);  	} +	for (i = 0; i < LOCKSTAT_POINTS; i++) { +		char sym[KSYM_SYMBOL_LEN]; +		char ip[32]; + +		if (class->contending_point[i] == 0) +			break; + +		if (!i) +			seq_line(m, '-', 40-namelen, namelen); + +		sprint_symbol(sym, class->contending_point[i]); +		snprintf(ip, sizeof(ip), "[<%p>]", +				(void *)class->contending_point[i]); +		seq_printf(m, "%40s %14lu %29s %s\n", name, +				stats->contending_point[i], +				ip, sym); +	}  	if (i) {  		seq_puts(m, "\n");  		seq_line(m, '.', 0, 40 + 1 + 10 * (14 + 1)); @@ -583,7 +600,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)  static void seq_header(struct seq_file *m)  { -	seq_printf(m, "lock_stat version 0.2\n"); +	seq_printf(m, "lock_stat version 0.3\n");  	seq_line(m, '-', 0, 40 + 1 + 10 * (14 + 1));  	seq_printf(m, "%40s %14s %14s %14s %14s %14s %14s %14s %14s "  			"%14s %14s\n",  |