public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat
@ 2009-08-17  5:39 Li Zefan
  2009-08-17  5:39 ` [PATCH 2/5] lock_dep: Fix missing entries in /proc/lock_chains Li Zefan
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Li Zefan @ 2009-08-17  5:39 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, LKML

One entry is missing in the output of /proc/lock_stat.

The cause is, when ls_start() is called the 2nd time, we should start
from stats[@pos-1] but not stats[@pos], because pos == 0 is the header.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 kernel/lockdep_proc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 98cc796..0c39f18 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -634,7 +634,7 @@ static void *ls_start(struct seq_file *m, loff_t *pos)
 	if (*pos == 0)
 		return SEQ_START_TOKEN;
 
-	data->iter = data->stats + *pos;
+	data->iter = data->stats + (*pos - 1);
 	if (data->iter >= data->iter_end)
 		data->iter = NULL;
 
-- 
1.6.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/5] lock_dep: Fix missing entries in /proc/lock_chains
  2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
@ 2009-08-17  5:39 ` Li Zefan
  2009-08-17  8:01   ` [tip:core/locking] lockdep: " tip-bot for Li Zefan
  2009-08-17  5:40 ` [PATCH 3/5] lockdep: Simplify lockdep seqfile code Li Zefan
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Li Zefan @ 2009-08-17  5:39 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, LKML

Two entries are missing in the output of /proc/lock_chains.

One is chains[1]. When lc_next() is called the 1st time, chains[0] is
returned. And when it's called the 2nd time, chains[2] is returned.

The other missing ons is, when lc_start() is called the 2nd time, we
should start from chains[@pos-1] but not chains[@pos], because pos == 0
is the header.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 kernel/lockdep_proc.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 0c39f18..84c6b1e 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -160,8 +160,8 @@ static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
 	else {
 		chain = v;
 
-		if (*pos < nr_lock_chains)
-			chain = lock_chains + *pos;
+		if (*pos - 1 < nr_lock_chains)
+			chain = lock_chains + (*pos - 1);
 		else
 			chain = NULL;
 	}
@@ -174,8 +174,8 @@ static void *lc_start(struct seq_file *m, loff_t *pos)
 	if (*pos == 0)
 		return SEQ_START_TOKEN;
 
-	if (*pos < nr_lock_chains)
-		return lock_chains + *pos;
+	if (*pos - 1 < nr_lock_chains)
+		return lock_chains + (*pos - 1);
 
 	return NULL;
 }
-- 
1.6.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/5] lockdep: Simplify lockdep seqfile code
  2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
  2009-08-17  5:39 ` [PATCH 2/5] lock_dep: Fix missing entries in /proc/lock_chains Li Zefan
@ 2009-08-17  5:40 ` Li Zefan
  2009-08-17  8:02   ` [tip:core/locking] " tip-bot for Li Zefan
  2009-08-17  5:40 ` [PATCH 4/5] lockdep: Simplify lockdep_chains " Li Zefan
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Li Zefan @ 2009-08-17  5:40 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, LKML

Use seq_list_start_head() and seq_list_next().

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 kernel/lockdep_proc.c |   46 +++++-----------------------------------------
 1 files changed, 5 insertions(+), 41 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 84c6b1e..d0f53b0 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -25,38 +25,12 @@
 
 static void *l_next(struct seq_file *m, void *v, loff_t *pos)
 {
-	struct lock_class *class;
-
-	(*pos)++;
-
-	if (v == SEQ_START_TOKEN)
-		class = m->private;
-	else {
-		class = v;
-
-		if (class->lock_entry.next != &all_lock_classes)
-			class = list_entry(class->lock_entry.next,
-					   struct lock_class, lock_entry);
-		else
-			class = NULL;
-	}
-
-	return class;
+	return seq_list_next(v, &all_lock_classes, pos);
 }
 
 static void *l_start(struct seq_file *m, loff_t *pos)
 {
-	struct lock_class *class;
-	loff_t i = 0;
-
-	if (*pos == 0)
-		return SEQ_START_TOKEN;
-
-	list_for_each_entry(class, &all_lock_classes, lock_entry) {
-		if (++i == *pos)
-		return class;
-	}
-	return NULL;
+	return seq_list_start_head(&all_lock_classes, *pos);
 }
 
 static void l_stop(struct seq_file *m, void *v)
@@ -82,11 +56,11 @@ static void print_name(struct seq_file *m, struct lock_class *class)
 
 static int l_show(struct seq_file *m, void *v)
 {
-	struct lock_class *class = v;
+	struct lock_class *class = list_entry(v, struct lock_class, lock_entry);
 	struct lock_list *entry;
 	char usage[LOCK_USAGE_CHARS];
 
-	if (v == SEQ_START_TOKEN) {
+	if (v == &all_lock_classes) {
 		seq_printf(m, "all lock classes:\n");
 		return 0;
 	}
@@ -128,17 +102,7 @@ static const struct seq_operations lockdep_ops = {
 
 static int lockdep_open(struct inode *inode, struct file *file)
 {
-	int res = seq_open(file, &lockdep_ops);
-	if (!res) {
-		struct seq_file *m = file->private_data;
-
-		if (!list_empty(&all_lock_classes))
-			m->private = list_entry(all_lock_classes.next,
-					struct lock_class, lock_entry);
-		else
-			m->private = NULL;
-	}
-	return res;
+	return seq_open(file, &lockdep_ops);
 }
 
 static const struct file_operations proc_lockdep_operations = {
-- 
1.6.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 4/5] lockdep: Simplify lockdep_chains seqfile code
  2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
  2009-08-17  5:39 ` [PATCH 2/5] lock_dep: Fix missing entries in /proc/lock_chains Li Zefan
  2009-08-17  5:40 ` [PATCH 3/5] lockdep: Simplify lockdep seqfile code Li Zefan
@ 2009-08-17  5:40 ` Li Zefan
  2009-08-17  8:02   ` [tip:core/locking] " tip-bot for Li Zefan
  2009-08-17  5:40 ` [PATCH 5/5] lockdep: Simplify lock_stat " Li Zefan
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Li Zefan @ 2009-08-17  5:40 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, LKML

- make lc_next() call lc_start()
- use lock_chains directly instead of storing it in m->private

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 kernel/lockdep_proc.c |   37 +++++++------------------------------
 1 files changed, 7 insertions(+), 30 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index d0f53b0..cd5ed35 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -113,26 +113,6 @@ static const struct file_operations proc_lockdep_operations = {
 };
 
 #ifdef CONFIG_PROVE_LOCKING
-static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
-{
-	struct lock_chain *chain;
-
-	(*pos)++;
-
-	if (v == SEQ_START_TOKEN)
-		chain = m->private;
-	else {
-		chain = v;
-
-		if (*pos - 1 < nr_lock_chains)
-			chain = lock_chains + (*pos - 1);
-		else
-			chain = NULL;
-	}
-
-	return chain;
-}
-
 static void *lc_start(struct seq_file *m, loff_t *pos)
 {
 	if (*pos == 0)
@@ -144,6 +124,12 @@ static void *lc_start(struct seq_file *m, loff_t *pos)
 	return NULL;
 }
 
+static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
+{
+	(*pos)++;
+	return lc_start(m, pos);
+}
+
 static void lc_stop(struct seq_file *m, void *v)
 {
 }
@@ -184,16 +170,7 @@ static const struct seq_operations lockdep_chains_ops = {
 
 static int lockdep_chains_open(struct inode *inode, struct file *file)
 {
-	int res = seq_open(file, &lockdep_chains_ops);
-	if (!res) {
-		struct seq_file *m = file->private_data;
-
-		if (nr_lock_chains)
-			m->private = lock_chains;
-		else
-			m->private = NULL;
-	}
-	return res;
+	return seq_open(file, &lockdep_chains_ops);
 }
 
 static const struct file_operations proc_lockdep_chains_operations = {
-- 
1.6.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 5/5] lockdep: Simplify lock_stat seqfile code
  2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
                   ` (2 preceding siblings ...)
  2009-08-17  5:40 ` [PATCH 4/5] lockdep: Simplify lockdep_chains " Li Zefan
@ 2009-08-17  5:40 ` Li Zefan
  2009-08-17  8:02   ` [tip:core/locking] " tip-bot for Li Zefan
  2009-08-17  7:55 ` [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Ingo Molnar
  2009-08-17  8:01 ` [tip:core/locking] lockdep: " tip-bot for Li Zefan
  5 siblings, 1 reply; 11+ messages in thread
From: Li Zefan @ 2009-08-17  5:40 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, LKML

- make ls_next() call ls_start()
- remove redundant code in lock_stat_release()

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 kernel/lockdep_proc.c |   29 +++++++----------------------
 1 files changed, 7 insertions(+), 22 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index cd5ed35..37b6ddc 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -383,7 +383,6 @@ struct lock_stat_data {
 };
 
 struct lock_stat_seq {
-	struct lock_stat_data *iter;
 	struct lock_stat_data *iter_end;
 	struct lock_stat_data stats[MAX_LOCKDEP_KEYS];
 };
@@ -571,34 +570,22 @@ static void seq_header(struct seq_file *m)
 static void *ls_start(struct seq_file *m, loff_t *pos)
 {
 	struct lock_stat_seq *data = m->private;
+	struct lock_stat_data *iter;
 
 	if (*pos == 0)
 		return SEQ_START_TOKEN;
 
-	data->iter = data->stats + (*pos - 1);
-	if (data->iter >= data->iter_end)
-		data->iter = NULL;
+	iter = data->stats + (*pos - 1);
+	if (iter >= data->iter_end)
+		iter = NULL;
 
-	return data->iter;
+	return iter;
 }
 
 static void *ls_next(struct seq_file *m, void *v, loff_t *pos)
 {
-	struct lock_stat_seq *data = m->private;
-
 	(*pos)++;
-
-	if (v == SEQ_START_TOKEN)
-		data->iter = data->stats;
-	else {
-		data->iter = v;
-		data->iter++;
-	}
-
-	if (data->iter == data->iter_end)
-		data->iter = NULL;
-
-	return data->iter;
+	return ls_start(m, pos);
 }
 
 static void ls_stop(struct seq_file *m, void *v)
@@ -636,7 +623,6 @@ static int lock_stat_open(struct inode *inode, struct file *file)
 		struct lock_stat_data *iter = data->stats;
 		struct seq_file *m = file->private_data;
 
-		data->iter = iter;
 		list_for_each_entry(class, &all_lock_classes, lock_entry) {
 			iter->class = class;
 			iter->stats = lock_stats(class);
@@ -644,7 +630,7 @@ static int lock_stat_open(struct inode *inode, struct file *file)
 		}
 		data->iter_end = iter;
 
-		sort(data->stats, data->iter_end - data->iter,
+		sort(data->stats, data->iter_end - data->stats,
 				sizeof(struct lock_stat_data),
 				lock_stat_cmp, NULL);
 
@@ -679,7 +665,6 @@ static int lock_stat_release(struct inode *inode, struct file *file)
 	struct seq_file *seq = file->private_data;
 
 	vfree(seq->private);
-	seq->private = NULL;
 	return seq_release(inode, file);
 }
 
-- 
1.6.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat
  2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
                   ` (3 preceding siblings ...)
  2009-08-17  5:40 ` [PATCH 5/5] lockdep: Simplify lock_stat " Li Zefan
@ 2009-08-17  7:55 ` Ingo Molnar
  2009-08-17  8:01 ` [tip:core/locking] lockdep: " tip-bot for Li Zefan
  5 siblings, 0 replies; 11+ messages in thread
From: Ingo Molnar @ 2009-08-17  7:55 UTC (permalink / raw)
  To: Li Zefan; +Cc: Peter Zijlstra, LKML


Nice fixes and cleanups - i've applied them to tip:core/locking.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [tip:core/locking] lockdep: Fix missing entry in /proc/lock_stat
  2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
                   ` (4 preceding siblings ...)
  2009-08-17  7:55 ` [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Ingo Molnar
@ 2009-08-17  8:01 ` tip-bot for Li Zefan
  5 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Li Zefan @ 2009-08-17  8:01 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, lizf, peterz, tglx, mingo

Commit-ID:  212274347fc4d2a7c56bf6c953b02c809e7e0be1
Gitweb:     http://git.kernel.org/tip/212274347fc4d2a7c56bf6c953b02c809e7e0be1
Author:     Li Zefan <lizf@cn.fujitsu.com>
AuthorDate: Mon, 17 Aug 2009 13:39:33 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 17 Aug 2009 09:54:39 +0200

lockdep: Fix missing entry in /proc/lock_stat

One entry is missing in the output of /proc/lock_stat.

The cause is, when ls_start() is called the 2nd time, we should
start from stats[@pos-1] but not stats[@pos], because pos == 0
is the header.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <4A88ED15.20800@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep_proc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index fba81f1..5dbe30b 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -634,7 +634,7 @@ static void *ls_start(struct seq_file *m, loff_t *pos)
 	if (*pos == 0)
 		return SEQ_START_TOKEN;
 
-	data->iter = data->stats + *pos;
+	data->iter = data->stats + (*pos - 1);
 	if (data->iter >= data->iter_end)
 		data->iter = NULL;
 

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [tip:core/locking] lockdep: Fix missing entries in /proc/lock_chains
  2009-08-17  5:39 ` [PATCH 2/5] lock_dep: Fix missing entries in /proc/lock_chains Li Zefan
@ 2009-08-17  8:01   ` tip-bot for Li Zefan
  0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Li Zefan @ 2009-08-17  8:01 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, lizf, peterz, tglx, mingo

Commit-ID:  e9d65725bdf5954283625ca4d770bfc34f2ae56a
Gitweb:     http://git.kernel.org/tip/e9d65725bdf5954283625ca4d770bfc34f2ae56a
Author:     Li Zefan <lizf@cn.fujitsu.com>
AuthorDate: Mon, 17 Aug 2009 13:39:49 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 17 Aug 2009 09:54:40 +0200

lockdep: Fix missing entries in /proc/lock_chains

Two entries are missing in the output of /proc/lock_chains.

One is chains[1]. When lc_next() is called the 1st time,
chains[0] is returned. And when it's called the 2nd time,
chains[2] is returned.

The other missing ons is, when lc_start() is called the 2nd
time, we should start from chains[@pos-1] but not chains[@pos],
because pos == 0 is the header.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <4A88ED25.2040306@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep_proc.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 5dbe30b..9a7996e 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -160,8 +160,8 @@ static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
 	else {
 		chain = v;
 
-		if (*pos < nr_lock_chains)
-			chain = lock_chains + *pos;
+		if (*pos - 1 < nr_lock_chains)
+			chain = lock_chains + (*pos - 1);
 		else
 			chain = NULL;
 	}
@@ -174,8 +174,8 @@ static void *lc_start(struct seq_file *m, loff_t *pos)
 	if (*pos == 0)
 		return SEQ_START_TOKEN;
 
-	if (*pos < nr_lock_chains)
-		return lock_chains + *pos;
+	if (*pos - 1 < nr_lock_chains)
+		return lock_chains + (*pos - 1);
 
 	return NULL;
 }

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [tip:core/locking] lockdep: Simplify lockdep seqfile code
  2009-08-17  5:40 ` [PATCH 3/5] lockdep: Simplify lockdep seqfile code Li Zefan
@ 2009-08-17  8:02   ` tip-bot for Li Zefan
  0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Li Zefan @ 2009-08-17  8:02 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, lizf, peterz, tglx, mingo

Commit-ID:  8109e1de8502421f9efff1359f2779b1adcc0724
Gitweb:     http://git.kernel.org/tip/8109e1de8502421f9efff1359f2779b1adcc0724
Author:     Li Zefan <lizf@cn.fujitsu.com>
AuthorDate: Mon, 17 Aug 2009 13:40:17 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 17 Aug 2009 09:54:40 +0200

lockdep: Simplify lockdep seqfile code

Use seq_list_start_head() and seq_list_next().

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <4A88ED41.5000000@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep_proc.c |   46 +++++-----------------------------------------
 1 files changed, 5 insertions(+), 41 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 9a7996e..05fb5fd 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -25,38 +25,12 @@
 
 static void *l_next(struct seq_file *m, void *v, loff_t *pos)
 {
-	struct lock_class *class;
-
-	(*pos)++;
-
-	if (v == SEQ_START_TOKEN)
-		class = m->private;
-	else {
-		class = v;
-
-		if (class->lock_entry.next != &all_lock_classes)
-			class = list_entry(class->lock_entry.next,
-					   struct lock_class, lock_entry);
-		else
-			class = NULL;
-	}
-
-	return class;
+	return seq_list_next(v, &all_lock_classes, pos);
 }
 
 static void *l_start(struct seq_file *m, loff_t *pos)
 {
-	struct lock_class *class;
-	loff_t i = 0;
-
-	if (*pos == 0)
-		return SEQ_START_TOKEN;
-
-	list_for_each_entry(class, &all_lock_classes, lock_entry) {
-		if (++i == *pos)
-		return class;
-	}
-	return NULL;
+	return seq_list_start_head(&all_lock_classes, *pos);
 }
 
 static void l_stop(struct seq_file *m, void *v)
@@ -82,11 +56,11 @@ static void print_name(struct seq_file *m, struct lock_class *class)
 
 static int l_show(struct seq_file *m, void *v)
 {
-	struct lock_class *class = v;
+	struct lock_class *class = list_entry(v, struct lock_class, lock_entry);
 	struct lock_list *entry;
 	char usage[LOCK_USAGE_CHARS];
 
-	if (v == SEQ_START_TOKEN) {
+	if (v == &all_lock_classes) {
 		seq_printf(m, "all lock classes:\n");
 		return 0;
 	}
@@ -128,17 +102,7 @@ static const struct seq_operations lockdep_ops = {
 
 static int lockdep_open(struct inode *inode, struct file *file)
 {
-	int res = seq_open(file, &lockdep_ops);
-	if (!res) {
-		struct seq_file *m = file->private_data;
-
-		if (!list_empty(&all_lock_classes))
-			m->private = list_entry(all_lock_classes.next,
-					struct lock_class, lock_entry);
-		else
-			m->private = NULL;
-	}
-	return res;
+	return seq_open(file, &lockdep_ops);
 }
 
 static const struct file_operations proc_lockdep_operations = {

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [tip:core/locking] lockdep: Simplify lockdep_chains seqfile code
  2009-08-17  5:40 ` [PATCH 4/5] lockdep: Simplify lockdep_chains " Li Zefan
@ 2009-08-17  8:02   ` tip-bot for Li Zefan
  0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Li Zefan @ 2009-08-17  8:02 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, lizf, peterz, tglx, mingo

Commit-ID:  12aac19d4ba41019a1748f49d3c5d259b1bfb26d
Gitweb:     http://git.kernel.org/tip/12aac19d4ba41019a1748f49d3c5d259b1bfb26d
Author:     Li Zefan <lizf@cn.fujitsu.com>
AuthorDate: Mon, 17 Aug 2009 13:40:39 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 17 Aug 2009 09:54:41 +0200

lockdep: Simplify lockdep_chains seqfile code

- make lc_next() call lc_start()
- use lock_chains directly instead of storing it in m->private

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <4A88ED57.5060609@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep_proc.c |   37 +++++++------------------------------
 1 files changed, 7 insertions(+), 30 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 05fb5fd..2bbe25f 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -113,26 +113,6 @@ static const struct file_operations proc_lockdep_operations = {
 };
 
 #ifdef CONFIG_PROVE_LOCKING
-static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
-{
-	struct lock_chain *chain;
-
-	(*pos)++;
-
-	if (v == SEQ_START_TOKEN)
-		chain = m->private;
-	else {
-		chain = v;
-
-		if (*pos - 1 < nr_lock_chains)
-			chain = lock_chains + (*pos - 1);
-		else
-			chain = NULL;
-	}
-
-	return chain;
-}
-
 static void *lc_start(struct seq_file *m, loff_t *pos)
 {
 	if (*pos == 0)
@@ -144,6 +124,12 @@ static void *lc_start(struct seq_file *m, loff_t *pos)
 	return NULL;
 }
 
+static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
+{
+	(*pos)++;
+	return lc_start(m, pos);
+}
+
 static void lc_stop(struct seq_file *m, void *v)
 {
 }
@@ -184,16 +170,7 @@ static const struct seq_operations lockdep_chains_ops = {
 
 static int lockdep_chains_open(struct inode *inode, struct file *file)
 {
-	int res = seq_open(file, &lockdep_chains_ops);
-	if (!res) {
-		struct seq_file *m = file->private_data;
-
-		if (nr_lock_chains)
-			m->private = lock_chains;
-		else
-			m->private = NULL;
-	}
-	return res;
+	return seq_open(file, &lockdep_chains_ops);
 }
 
 static const struct file_operations proc_lockdep_chains_operations = {

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [tip:core/locking] lockdep: Simplify lock_stat seqfile code
  2009-08-17  5:40 ` [PATCH 5/5] lockdep: Simplify lock_stat " Li Zefan
@ 2009-08-17  8:02   ` tip-bot for Li Zefan
  0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Li Zefan @ 2009-08-17  8:02 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, lizf, peterz, tglx, mingo

Commit-ID:  96004bb2a1e4ccad2b1eeb92e51031d1e8e609e3
Gitweb:     http://git.kernel.org/tip/96004bb2a1e4ccad2b1eeb92e51031d1e8e609e3
Author:     Li Zefan <lizf@cn.fujitsu.com>
AuthorDate: Mon, 17 Aug 2009 13:40:59 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 17 Aug 2009 09:54:41 +0200

lockdep: Simplify lock_stat seqfile code

- make ls_next() call ls_start()
- remove redundant code in lock_stat_release()

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <4A88ED6B.6030602@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep_proc.c |   29 +++++++----------------------
 1 files changed, 7 insertions(+), 22 deletions(-)

diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index 2bbe25f..8dac840 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -383,7 +383,6 @@ struct lock_stat_data {
 };
 
 struct lock_stat_seq {
-	struct lock_stat_data *iter;
 	struct lock_stat_data *iter_end;
 	struct lock_stat_data stats[MAX_LOCKDEP_KEYS];
 };
@@ -571,34 +570,22 @@ static void seq_header(struct seq_file *m)
 static void *ls_start(struct seq_file *m, loff_t *pos)
 {
 	struct lock_stat_seq *data = m->private;
+	struct lock_stat_data *iter;
 
 	if (*pos == 0)
 		return SEQ_START_TOKEN;
 
-	data->iter = data->stats + (*pos - 1);
-	if (data->iter >= data->iter_end)
-		data->iter = NULL;
+	iter = data->stats + (*pos - 1);
+	if (iter >= data->iter_end)
+		iter = NULL;
 
-	return data->iter;
+	return iter;
 }
 
 static void *ls_next(struct seq_file *m, void *v, loff_t *pos)
 {
-	struct lock_stat_seq *data = m->private;
-
 	(*pos)++;
-
-	if (v == SEQ_START_TOKEN)
-		data->iter = data->stats;
-	else {
-		data->iter = v;
-		data->iter++;
-	}
-
-	if (data->iter == data->iter_end)
-		data->iter = NULL;
-
-	return data->iter;
+	return ls_start(m, pos);
 }
 
 static void ls_stop(struct seq_file *m, void *v)
@@ -636,7 +623,6 @@ static int lock_stat_open(struct inode *inode, struct file *file)
 		struct lock_stat_data *iter = data->stats;
 		struct seq_file *m = file->private_data;
 
-		data->iter = iter;
 		list_for_each_entry(class, &all_lock_classes, lock_entry) {
 			iter->class = class;
 			iter->stats = lock_stats(class);
@@ -644,7 +630,7 @@ static int lock_stat_open(struct inode *inode, struct file *file)
 		}
 		data->iter_end = iter;
 
-		sort(data->stats, data->iter_end - data->iter,
+		sort(data->stats, data->iter_end - data->stats,
 				sizeof(struct lock_stat_data),
 				lock_stat_cmp, NULL);
 
@@ -679,7 +665,6 @@ static int lock_stat_release(struct inode *inode, struct file *file)
 	struct seq_file *seq = file->private_data;
 
 	vfree(seq->private);
-	seq->private = NULL;
 	return seq_release(inode, file);
 }
 

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2009-08-17  8:04 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-17  5:39 [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Li Zefan
2009-08-17  5:39 ` [PATCH 2/5] lock_dep: Fix missing entries in /proc/lock_chains Li Zefan
2009-08-17  8:01   ` [tip:core/locking] lockdep: " tip-bot for Li Zefan
2009-08-17  5:40 ` [PATCH 3/5] lockdep: Simplify lockdep seqfile code Li Zefan
2009-08-17  8:02   ` [tip:core/locking] " tip-bot for Li Zefan
2009-08-17  5:40 ` [PATCH 4/5] lockdep: Simplify lockdep_chains " Li Zefan
2009-08-17  8:02   ` [tip:core/locking] " tip-bot for Li Zefan
2009-08-17  5:40 ` [PATCH 5/5] lockdep: Simplify lock_stat " Li Zefan
2009-08-17  8:02   ` [tip:core/locking] " tip-bot for Li Zefan
2009-08-17  7:55 ` [PATCH 1/5] lock_dep: Fix missing entry in /proc/lock_stat Ingo Molnar
2009-08-17  8:01 ` [tip:core/locking] lockdep: " tip-bot for Li Zefan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox