All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.