netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: "Rémi Denis-Courmont" <remi.denis-courmont@nokia.com>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH] Phonet: sockets list through proc_fs
Date: Mon, 20 Jul 2009 10:36:55 +0200	[thread overview]
Message-ID: <1248079015.4549.101.camel@violet> (raw)
In-Reply-To: <1248078849-7343-1-git-send-email-remi.denis-courmont@nokia.com>

Hi Remi,

> From: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>

isn't there are proper explaining commit message missing here?

> Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
> ---
>  include/net/phonet/pn_dev.h |    2 +
>  net/phonet/pn_dev.c         |    7 +++
>  net/phonet/socket.c         |   97 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 106 insertions(+), 0 deletions(-)
> 
> diff --git a/include/net/phonet/pn_dev.h b/include/net/phonet/pn_dev.h
> index 29d1267..44c923c 100644
> --- a/include/net/phonet/pn_dev.h
> +++ b/include/net/phonet/pn_dev.h
> @@ -49,4 +49,6 @@ void phonet_address_notify(int event, struct net_device *dev, u8 addr);
>  
>  #define PN_NO_ADDR	0xff
>  
> +extern const struct file_operations pn_sock_seq_fops;
> +
>  #endif
> diff --git a/net/phonet/pn_dev.c b/net/phonet/pn_dev.c
> index b0d6ddd..5107b79 100644
> --- a/net/phonet/pn_dev.c
> +++ b/net/phonet/pn_dev.c
> @@ -218,6 +218,11 @@ static int phonet_init_net(struct net *net)
>  	if (!pnn)
>  		return -ENOMEM;
>  
> +	if (!proc_net_fops_create(net, "phonet", 0, &pn_sock_seq_fops)) {
> +		kfree(pnn);
> +		return -ENOMEM;
> +	}
> +
>  	INIT_LIST_HEAD(&pnn->pndevs.list);
>  	spin_lock_init(&pnn->pndevs.lock);
>  	net_assign_generic(net, phonet_net_id, pnn);
> @@ -233,6 +238,8 @@ static void phonet_exit_net(struct net *net)
>  	for_each_netdev(net, dev)
>  		phonet_device_destroy(dev);
>  	rtnl_unlock();
> +
> +	proc_net_remove(net, "phonet");
>  	kfree(pnn);
>  }
>  
> diff --git a/net/phonet/socket.c b/net/phonet/socket.c
> index ada2a35..2a99851 100644
> --- a/net/phonet/socket.c
> +++ b/net/phonet/socket.c
> @@ -412,3 +412,100 @@ found:
>  	return 0;
>  }
>  EXPORT_SYMBOL(pn_sock_get_port);
> +
> +static struct sock *pn_sock_get_idx(struct seq_file *seq, loff_t pos)
> +{
> +	struct net *net = seq_file_net(seq);
> +	struct hlist_node *node;
> +	struct sock *sknode;
> +
> +	sk_for_each(sknode, node, &pnsocks.hlist) {
> +		if (!net_eq(net, sock_net(sknode)))
> +			continue;
> +		if (!pos)
> +			return sknode;
> +		pos--;
> +	}
> +	return NULL;
> +}
> +
> +static struct sock *pn_sock_get_next(struct seq_file *seq, struct sock *sk)
> +{
> +	struct net *net = seq_file_net(seq);
> +
> +	do
> +		sk = sk_next(sk);
> +	while (sk && !net_eq(net, sock_net(sk)));
> +
> +	return sk;
> +}
> +
> +static void *pn_sock_seq_start(struct seq_file *seq, loff_t *pos)
> +	__acquires(pnsocks.lock)
> +{
> +	spin_lock_bh(&pnsocks.lock);
> +	return *pos ? pn_sock_get_idx(seq, *pos - 1) : SEQ_START_TOKEN;
> +}
> +
> +static void *pn_sock_seq_next(struct seq_file *seq, void *v, loff_t *pos)
> +{
> +	struct sock *sk;
> +
> +	if (v == SEQ_START_TOKEN)
> +		sk = pn_sock_get_idx(seq, 0);
> +	else
> +		sk = pn_sock_get_next(seq, v);
> +	(*pos)++;
> +	return sk;
> +}
> +
> +static void pn_sock_seq_stop(struct seq_file *seq, void *v)
> +	__releases(pnsocks.lock)
> +{
> +	spin_unlock_bh(&pnsocks.lock);
> +}
> +
> +static int pn_sock_seq_show(struct seq_file *seq, void *v)
> +{
> +	int len;
> +
> +	if (v == SEQ_START_TOKEN)
> +		seq_printf(seq, "%s%n", "pt  loc  rem rs st tx_queue rx_queue "
> +			"  uid inode ref pointer drops", &len);
> +	else {
> +		struct sock *sk = v;
> +		struct pn_sock *pn = pn_sk(sk);
> +
> +		seq_printf(seq, "%2d %04X:%04X:%02X %02X %08X:%08X %5d %lu "
> +			"%d %p %d%n",
> +			sk->sk_protocol, pn->sobject, 0, pn->resource,
> +			sk->sk_state,
> +			atomic_read(&sk->sk_wmem_alloc),
> +			atomic_read(&sk->sk_rmem_alloc),
> +			sock_i_uid(sk), sock_i_ino(sk),
> +			atomic_read(&sk->sk_refcnt), sk,
> +			atomic_read(&sk->sk_drops), &len);
> +	}
> +	seq_printf(seq, "%*s\n", 127 - len, "");
> +	return 0;
> +}

The more appropriate place for this would be debugfs.

Regards

Marcel



  reply	other threads:[~2009-07-20  8:37 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-20  8:34 [PATCH] Phonet: sockets list through proc_fs Rémi Denis-Courmont
2009-07-20  8:36 ` Marcel Holtmann [this message]
2009-07-20  9:28   ` Rémi Denis-Courmont
2009-07-20  9:34     ` Marcel Holtmann
2009-07-20  9:47       ` Rémi Denis-Courmont
2009-07-20 10:21         ` Marcel Holtmann
2009-07-20 10:31           ` Eric Dumazet
2009-08-03  2:42             ` Arnaldo Carvalho de Melo
2009-07-20 10:32           ` Rémi Denis-Courmont
2009-07-20 10:43             ` David Miller
2009-07-20 12:07               ` Marcel Holtmann
2009-07-20 12:49                 ` Rémi Denis-Courmont
2009-07-20 13:00                   ` Marcel Holtmann
2009-07-20 14:09                     ` David Miller
2009-07-20 14:25                       ` Marcel Holtmann
2009-07-20 14:05                 ` David Miller
2009-07-20  9:05 ` Eric Dumazet
  -- strict thread matches above, loose matches on Subject: below --
2009-07-21 11:57 Rémi Denis-Courmont
2009-07-21 19:34 ` David Miller
2009-08-12 11:02   ` Rémi Denis-Courmont
2009-08-12 18:06     ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1248079015.4549.101.camel@violet \
    --to=marcel@holtmann.org \
    --cc=netdev@vger.kernel.org \
    --cc=remi.denis-courmont@nokia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).