[PATCH 5/8] 2.5.74 - seq_file conversion of /proc/net/atm (vc)

From: Francois Romieu (romieu@fr.zoreil.com)
Date: Tue Jul 08 2003 - 19:29:46 EST


seq_file support for /proc/net/atm/vc:

Same comments as for pvc and svc.

 net/atm/proc.c | 80 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 43 insertions(+), 37 deletions(-)

diff -puN net/atm/proc.c~atm-proc-seq-vc-conversion net/atm/proc.c
--- linux-2.5.74-1.1360.1.1-to-1.1384/net/atm/proc.c~atm-proc-seq-vc-conversion Wed Jul 9 01:43:00 2003
+++ linux-2.5.74-1.1360.1.1-to-1.1384-fr/net/atm/proc.c Wed Jul 9 01:43:00 2003
@@ -301,29 +301,27 @@ static const char *vcc_state(struct atm_
         return map[ATM_VF2VS(vcc->flags)];
 }
 
-
-static void vc_info(struct atm_vcc *vcc,char *buf)
+static void vc_info(struct seq_file *seq, struct atm_vcc *vcc)
 {
- char *here;
-
- here = buf+sprintf(buf,"%p ",vcc);
- if (!vcc->dev) here += sprintf(here,"Unassigned ");
- else here += sprintf(here,"%3d %3d %5d ",vcc->dev->number,vcc->vpi,
- vcc->vci);
+ seq_printf(seq, "%p ", vcc);
+ if (!vcc->dev)
+ seq_printf(seq, "Unassigned ");
+ else
+ seq_printf(seq, "%3d %3d %5d ", vcc->dev->number, vcc->vpi,
+ vcc->vci);
         switch (vcc->sk->sk_family) {
                 case AF_ATMPVC:
- here += sprintf(here,"PVC");
+ seq_printf(seq, "PVC");
                         break;
                 case AF_ATMSVC:
- here += sprintf(here,"SVC");
+ seq_printf(seq, "SVC");
                         break;
                 default:
- here += sprintf(here, "%3d", vcc->sk->sk_family);
+ seq_printf(seq, "%3d", vcc->sk->sk_family);
         }
- here += sprintf(here," %04lx %5d %7d/%7d %7d/%7d\n",vcc->flags,
- vcc->reply,
- atomic_read(&vcc->sk->sk_wmem_alloc), vcc->sk->sk_sndbuf,
- atomic_read(&vcc->sk->sk_rmem_alloc), vcc->sk->sk_rcvbuf);
+ seq_printf(seq, " %04lx %5d %7d/%7d %7d/%7d\n", vcc->flags, vcc->reply,
+ atomic_read(&vcc->sk->sk_wmem_alloc),vcc->sk->sk_sndbuf,
+ atomic_read(&vcc->sk->sk_rmem_alloc),vcc->sk->sk_rcvbuf);
 }
 
 static void svc_info(struct seq_file *seq, struct atm_vcc *vcc)
@@ -496,32 +494,33 @@ static struct file_operations atm_seq_pv
         .release = atm_vc_common_seq_release,
 };
 
-static int atm_vc_info(loff_t pos,char *buf)
+static int atm_vc_seq_show(struct seq_file *seq, void *v)
 {
- struct atm_vcc *vcc;
- struct hlist_node *node;
- struct sock *s;
- int left;
-
- if (!pos)
- return sprintf(buf,sizeof(void *) == 4 ? "%-8s%s" : "%-16s%s",
- "Address"," Itf VPI VCI Fam Flags Reply Send buffer"
- " Recv buffer\n");
- left = pos-1;
- read_lock(&vcc_sklist_lock);
- sk_for_each(s, node, &vcc_sklist) {
- vcc = atm_sk(s);
- if (!left--) {
- vc_info(vcc,buf);
- read_unlock(&vcc_sklist_lock);
- return strlen(buf);
- }
- }
- read_unlock(&vcc_sklist_lock);
+ if (v == (void *)1) {
+ seq_printf(seq, sizeof(void *) == 4 ? "%-8s%s" : "%-16s%s",
+ "Address ", "Itf VPI VCI Fam Flags Reply "
+ "Send buffer Recv buffer\n");
+ } else {
+ struct atm_vc_state *state = seq->private;
+ struct atm_vcc *vcc = atm_sk(state->sk);
 
+ vc_info(seq, vcc);
+ }
         return 0;
 }
 
+static struct seq_operations atm_vc_seq_ops = {
+ .start = atm_vc_common_seq_start,
+ .next = atm_vc_common_seq_next,
+ .stop = atm_vc_common_seq_stop,
+ .show = atm_vc_seq_show,
+};
+
+static int atm_vc_seq_open(struct inode *inode, struct file *file)
+{
+ return atm_vc_common_seq_open(inode, file, 0, &atm_vc_seq_ops);
+}
+
 static int atm_svc_seq_show(struct seq_file *seq, void *v)
 {
         static char atm_svc_banner[] =
@@ -538,6 +537,13 @@ static int atm_svc_seq_show(struct seq_f
         return 0;
 }
 
+static struct file_operations atm_seq_vc_fops = {
+ .open = atm_vc_seq_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = atm_vc_common_seq_release,
+};
+
 static struct seq_operations atm_svc_seq_ops = {
         .start = atm_vc_common_seq_start,
         .next = atm_vc_common_seq_next,
@@ -803,7 +809,7 @@ int __init atm_proc_init(void)
         CREATE_SEQ_ENTRY(devices);
         CREATE_SEQ_ENTRY(pvc);
         CREATE_SEQ_ENTRY(svc);
- CREATE_ENTRY(vc);
+ CREATE_SEQ_ENTRY(vc);
 #if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE)
         CREATE_ENTRY(arp);
 #endif

_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jul 15 2003 - 22:00:29 EST