netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 2/8] Make some network-related proc files use seq_list_xxx helpers
@ 2007-07-09 18:51 akpm
  2007-07-09 20:15 ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: akpm @ 2007-07-09 18:51 UTC (permalink / raw)
  To: davem; +Cc: netdev, akpm, xemul, xemul

From: Pavel Emelianov <xemul@sw.ru>

This includes /proc/net/protocols, /proc/net/rxrpc_calls and
/proc/net/rxrpc_connections files.

All three need seq_list_start_head to show some header.

Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 net/core/sock.c     |   39 +++-------------------------------
 net/rxrpc/ar-proc.c |   48 +++++-------------------------------------
 2 files changed, 10 insertions(+), 77 deletions(-)

diff -puN net/core/sock.c~make-some-network-related-proc-files-use-seq_list_xxx net/core/sock.c
--- a/net/core/sock.c~make-some-network-related-proc-files-use-seq_list_xxx
+++ a/net/core/sock.c
@@ -1851,46 +1851,15 @@ void proto_unregister(struct proto *prot
 EXPORT_SYMBOL(proto_unregister);
 
 #ifdef CONFIG_PROC_FS
-static inline struct proto *__proto_head(void)
-{
-	return list_entry(proto_list.next, struct proto, node);
-}
-
-static inline struct proto *proto_head(void)
-{
-	return list_empty(&proto_list) ? NULL : __proto_head();
-}
-
-static inline struct proto *proto_next(struct proto *proto)
-{
-	return proto->node.next == &proto_list ? NULL :
-		list_entry(proto->node.next, struct proto, node);
-}
-
-static inline struct proto *proto_get_idx(loff_t pos)
-{
-	struct proto *proto;
-	loff_t i = 0;
-
-	list_for_each_entry(proto, &proto_list, node)
-		if (i++ == pos)
-			goto out;
-
-	proto = NULL;
-out:
-	return proto;
-}
-
 static void *proto_seq_start(struct seq_file *seq, loff_t *pos)
 {
 	read_lock(&proto_list_lock);
-	return *pos ? proto_get_idx(*pos - 1) : SEQ_START_TOKEN;
+	return seq_list_start_head(&proto_list, *pos);
 }
 
 static void *proto_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-	++*pos;
-	return v == SEQ_START_TOKEN ? proto_head() : proto_next(v);
+	return seq_list_next(v, &proto_list, pos);
 }
 
 static void proto_seq_stop(struct seq_file *seq, void *v)
@@ -1938,7 +1907,7 @@ static void proto_seq_printf(struct seq_
 
 static int proto_seq_show(struct seq_file *seq, void *v)
 {
-	if (v == SEQ_START_TOKEN)
+	if (v == &proto_list)
 		seq_printf(seq, "%-9s %-4s %-8s %-6s %-5s %-7s %-4s %-10s %s",
 			   "protocol",
 			   "size",
@@ -1950,7 +1919,7 @@ static int proto_seq_show(struct seq_fil
 			   "module",
 			   "cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n");
 	else
-		proto_seq_printf(seq, v);
+		proto_seq_printf(seq, list_entry(v, struct proto, node));
 	return 0;
 }
 
diff -puN net/rxrpc/ar-proc.c~make-some-network-related-proc-files-use-seq_list_xxx net/rxrpc/ar-proc.c
--- a/net/rxrpc/ar-proc.c~make-some-network-related-proc-files-use-seq_list_xxx
+++ a/net/rxrpc/ar-proc.c
@@ -30,31 +30,13 @@ static const char *rxrpc_conn_states[] =
  */
 static void *rxrpc_call_seq_start(struct seq_file *seq, loff_t *_pos)
 {
-	struct list_head *_p;
-	loff_t pos = *_pos;
-
 	read_lock(&rxrpc_call_lock);
-	if (!pos)
-		return SEQ_START_TOKEN;
-	pos--;
-
-	list_for_each(_p, &rxrpc_calls)
-		if (!pos--)
-			break;
-
-	return _p != &rxrpc_calls ? _p : NULL;
+	return seq_list_start_head(&rxrpc_calls, *_pos);
 }
 
 static void *rxrpc_call_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-	struct list_head *_p;
-
-	(*pos)++;
-
-	_p = v;
-	_p = (v == SEQ_START_TOKEN) ? rxrpc_calls.next : _p->next;
-
-	return _p != &rxrpc_calls ? _p : NULL;
+	return seq_list_next(v, &rxrpc_calls, pos);
 }
 
 static void rxrpc_call_seq_stop(struct seq_file *seq, void *v)
@@ -68,7 +50,7 @@ static int rxrpc_call_seq_show(struct se
 	struct rxrpc_call *call;
 	char lbuff[4 + 4 + 4 + 4 + 5 + 1], rbuff[4 + 4 + 4 + 4 + 5 + 1];
 
-	if (v == SEQ_START_TOKEN) {
+	if (v == &rxrpc_calls) {
 		seq_puts(seq,
 			 "Proto Local                  Remote                "
 			 " SvID ConnID   CallID   End Use State    Abort   "
@@ -129,32 +111,14 @@ struct file_operations rxrpc_call_seq_fo
  */
 static void *rxrpc_connection_seq_start(struct seq_file *seq, loff_t *_pos)
 {
-	struct list_head *_p;
-	loff_t pos = *_pos;
-
 	read_lock(&rxrpc_connection_lock);
-	if (!pos)
-		return SEQ_START_TOKEN;
-	pos--;
-
-	list_for_each(_p, &rxrpc_connections)
-		if (!pos--)
-			break;
-
-	return _p != &rxrpc_connections ? _p : NULL;
+	return seq_list_start_head(&rxrpc_connections, *_pos);
 }
 
 static void *rxrpc_connection_seq_next(struct seq_file *seq, void *v,
 				       loff_t *pos)
 {
-	struct list_head *_p;
-
-	(*pos)++;
-
-	_p = v;
-	_p = (v == SEQ_START_TOKEN) ? rxrpc_connections.next : _p->next;
-
-	return _p != &rxrpc_connections ? _p : NULL;
+	return seq_list_next(v, &rxrpc_connections, pos);
 }
 
 static void rxrpc_connection_seq_stop(struct seq_file *seq, void *v)
@@ -168,7 +132,7 @@ static int rxrpc_connection_seq_show(str
 	struct rxrpc_transport *trans;
 	char lbuff[4 + 4 + 4 + 4 + 5 + 1], rbuff[4 + 4 + 4 + 4 + 5 + 1];
 
-	if (v == SEQ_START_TOKEN) {
+	if (v == &rxrpc_connections) {
 		seq_puts(seq,
 			 "Proto Local                  Remote                "
 			 " SvID ConnID   Calls    End Use State    Key     "
_

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

* Re: [patch 2/8] Make some network-related proc files use seq_list_xxx helpers
  2007-07-09 18:51 [patch 2/8] Make some network-related proc files use seq_list_xxx helpers akpm
@ 2007-07-09 20:15 ` David Miller
  2007-07-11  0:05   ` Yasuyuki KOZAKAI
       [not found]   ` <200707110005.l6B05EWo024030@toshiba.co.jp>
  0 siblings, 2 replies; 5+ messages in thread
From: David Miller @ 2007-07-09 20:15 UTC (permalink / raw)
  To: akpm; +Cc: netdev, xemul, xemul

From: akpm@linux-foundation.org
Date: Mon, 09 Jul 2007 11:51:10 -0700

> From: Pavel Emelianov <xemul@sw.ru>
> 
> This includes /proc/net/protocols, /proc/net/rxrpc_calls and
> /proc/net/rxrpc_connections files.
> 
> All three need seq_list_start_head to show some header.
> 
> Signed-off-by: Pavel Emelianov <xemul@openvz.org>
> Acked-by: David S. Miller <davem@davemloft.net>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Applied, thanks.

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

* Re: [patch 2/8] Make some network-related proc files use seq_list_xxx helpers
  2007-07-09 20:15 ` David Miller
@ 2007-07-11  0:05   ` Yasuyuki KOZAKAI
       [not found]   ` <200707110005.l6B05EWo024030@toshiba.co.jp>
  1 sibling, 0 replies; 5+ messages in thread
From: Yasuyuki KOZAKAI @ 2007-07-11  0:05 UTC (permalink / raw)
  To: davem; +Cc: akpm, netdev, xemul, xemul


I've met compile error on net-2.6.23 tree.

net/built-in.o: In function `proto_seq_next':
sock.c:(.text+0x3008): undefined reference to `seq_list_next'
net/built-in.o: In function `proto_seq_start':
sock.c:(.text+0x3079): undefined reference to `seq_list_start_head'
make: *** [.tmp_vmlinux1] Error 1

-- Yasuyuki Kozakai

From: David Miller <davem@davemloft.net>
Date: Mon, 09 Jul 2007 13:15:23 -0700 (PDT)

> From: akpm@linux-foundation.org
> Date: Mon, 09 Jul 2007 11:51:10 -0700
> 
> > From: Pavel Emelianov <xemul@sw.ru>
> > 
> > This includes /proc/net/protocols, /proc/net/rxrpc_calls and
> > /proc/net/rxrpc_connections files.
> > 
> > All three need seq_list_start_head to show some header.
> > 
> > Signed-off-by: Pavel Emelianov <xemul@openvz.org>
> > Acked-by: David S. Miller <davem@davemloft.net>
> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> 
> Applied, thanks.
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [patch 2/8] Make some network-related proc files use seq_list_xxx helpers
       [not found]   ` <200707110005.l6B05EWo024030@toshiba.co.jp>
@ 2007-07-11  0:20     ` Andrew Morton
  2007-07-11  5:42       ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2007-07-11  0:20 UTC (permalink / raw)
  To: Yasuyuki KOZAKAI; +Cc: davem, netdev, xemul, xemul, Linus Torvalds

On Wed, 11 Jul 2007 09:05:13 +0900 (JST)
Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp> wrote:

> 
> I've met compile error on net-2.6.23 tree.
> 
> net/built-in.o: In function `proto_seq_next':
> sock.c:(.text+0x3008): undefined reference to `seq_list_next'
> net/built-in.o: In function `proto_seq_start':
> sock.c:(.text+0x3079): undefined reference to `seq_list_start_head'
> make: *** [.tmp_vmlinux1] Error 1
> 

crap, that's my fault, sorry.  Sending David patches which depend on things
which are in -mm.

Let me send
make-common-helpers-for-seq_files-that-work-with-list_head-s.patch
Linuswards and it all should come good.


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

* Re: [patch 2/8] Make some network-related proc files use seq_list_xxx helpers
  2007-07-11  0:20     ` Andrew Morton
@ 2007-07-11  5:42       ` David Miller
  0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2007-07-11  5:42 UTC (permalink / raw)
  To: akpm; +Cc: yasuyuki.kozakai, netdev, xemul, xemul, torvalds

From: Andrew Morton <akpm@linux-foundation.org>
Date: Tue, 10 Jul 2007 17:20:52 -0700

> On Wed, 11 Jul 2007 09:05:13 +0900 (JST)
> Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp> wrote:
> 
> > 
> > I've met compile error on net-2.6.23 tree.
> > 
> > net/built-in.o: In function `proto_seq_next':
> > sock.c:(.text+0x3008): undefined reference to `seq_list_next'
> > net/built-in.o: In function `proto_seq_start':
> > sock.c:(.text+0x3079): undefined reference to `seq_list_start_head'
> > make: *** [.tmp_vmlinux1] Error 1
> > 
> 
> crap, that's my fault, sorry.  Sending David patches which depend on things
> which are in -mm.
> 
> Let me send
> make-common-helpers-for-seq_files-that-work-with-list_head-s.patch
> Linuswards and it all should come good.

I've rebased my tree at:

	kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git

now that this has been sorted out.

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

end of thread, other threads:[~2007-07-11  5:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-09 18:51 [patch 2/8] Make some network-related proc files use seq_list_xxx helpers akpm
2007-07-09 20:15 ` David Miller
2007-07-11  0:05   ` Yasuyuki KOZAKAI
     [not found]   ` <200707110005.l6B05EWo024030@toshiba.co.jp>
2007-07-11  0:20     ` Andrew Morton
2007-07-11  5:42       ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).