Commit 3ae02d6b authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Linus Torvalds

proc: switch /proc/irda/irnet to seq_file interface

Probably interface misuse, because of the way iterating over hashbin is done.
However! Printing of socket number ("IrNET socket %d - ", i++") made conversion
to proper ->start/->next difficult enough to do blindly without hardware.
Said that, please apply.

Remove useless comment while I am it.
Signed-off-by: default avatarAlexey Dobriyan <adobriyan@sw.ru>
Cc: Samuel Ortiz <samuel@sortiz.org>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4bd61f76
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include "irnet_irda.h" /* Private header */ #include "irnet_irda.h" /* Private header */
#include <linux/seq_file.h>
/* /*
* PPP disconnect work: we need to make sure we're in * PPP disconnect work: we need to make sure we're in
...@@ -1717,34 +1718,23 @@ irnet_expiry_indication(discinfo_t * expiry, ...@@ -1717,34 +1718,23 @@ irnet_expiry_indication(discinfo_t * expiry,
*/ */
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
/*------------------------------------------------------------------*/
/*
* Function irnet_proc_read (buf, start, offset, len, unused)
*
* Give some info to the /proc file system
*/
static int static int
irnet_proc_read(char * buf, irnet_proc_show(struct seq_file *m, void *v)
char ** start,
off_t offset,
int len)
{ {
irnet_socket * self; irnet_socket * self;
char * state; char * state;
int i = 0; int i = 0;
len = 0;
/* Get the IrNET server information... */ /* Get the IrNET server information... */
len += sprintf(buf+len, "IrNET server - "); seq_printf(m, "IrNET server - ");
len += sprintf(buf+len, "IrDA state: %s, ", seq_printf(m, "IrDA state: %s, ",
(irnet_server.running ? "running" : "dead")); (irnet_server.running ? "running" : "dead"));
len += sprintf(buf+len, "stsap_sel: %02x, ", irnet_server.s.stsap_sel); seq_printf(m, "stsap_sel: %02x, ", irnet_server.s.stsap_sel);
len += sprintf(buf+len, "dtsap_sel: %02x\n", irnet_server.s.dtsap_sel); seq_printf(m, "dtsap_sel: %02x\n", irnet_server.s.dtsap_sel);
/* Do we need to continue ? */ /* Do we need to continue ? */
if(!irnet_server.running) if(!irnet_server.running)
return len; return 0;
/* Protect access to the instance list */ /* Protect access to the instance list */
spin_lock_bh(&irnet_server.spinlock); spin_lock_bh(&irnet_server.spinlock);
...@@ -1754,23 +1744,23 @@ irnet_proc_read(char * buf, ...@@ -1754,23 +1744,23 @@ irnet_proc_read(char * buf,
while(self != NULL) while(self != NULL)
{ {
/* Start printing info about the socket. */ /* Start printing info about the socket. */
len += sprintf(buf+len, "\nIrNET socket %d - ", i++); seq_printf(m, "\nIrNET socket %d - ", i++);
/* First, get the requested configuration */ /* First, get the requested configuration */
len += sprintf(buf+len, "Requested IrDA name: \"%s\", ", self->rname); seq_printf(m, "Requested IrDA name: \"%s\", ", self->rname);
len += sprintf(buf+len, "daddr: %08x, ", self->rdaddr); seq_printf(m, "daddr: %08x, ", self->rdaddr);
len += sprintf(buf+len, "saddr: %08x\n", self->rsaddr); seq_printf(m, "saddr: %08x\n", self->rsaddr);
/* Second, get all the PPP info */ /* Second, get all the PPP info */
len += sprintf(buf+len, " PPP state: %s", seq_printf(m, " PPP state: %s",
(self->ppp_open ? "registered" : "unregistered")); (self->ppp_open ? "registered" : "unregistered"));
if(self->ppp_open) if(self->ppp_open)
{ {
len += sprintf(buf+len, ", unit: ppp%d", seq_printf(m, ", unit: ppp%d",
ppp_unit_number(&self->chan)); ppp_unit_number(&self->chan));
len += sprintf(buf+len, ", channel: %d", seq_printf(m, ", channel: %d",
ppp_channel_index(&self->chan)); ppp_channel_index(&self->chan));
len += sprintf(buf+len, ", mru: %d", seq_printf(m, ", mru: %d",
self->mru); self->mru);
/* Maybe add self->flags ? Later... */ /* Maybe add self->flags ? Later... */
} }
...@@ -1789,10 +1779,10 @@ irnet_proc_read(char * buf, ...@@ -1789,10 +1779,10 @@ irnet_proc_read(char * buf,
state = "weird"; state = "weird";
else else
state = "idle"; state = "idle";
len += sprintf(buf+len, "\n IrDA state: %s, ", state); seq_printf(m, "\n IrDA state: %s, ", state);
len += sprintf(buf+len, "daddr: %08x, ", self->daddr); seq_printf(m, "daddr: %08x, ", self->daddr);
len += sprintf(buf+len, "stsap_sel: %02x, ", self->stsap_sel); seq_printf(m, "stsap_sel: %02x, ", self->stsap_sel);
len += sprintf(buf+len, "dtsap_sel: %02x\n", self->dtsap_sel); seq_printf(m, "dtsap_sel: %02x\n", self->dtsap_sel);
/* Next socket, please... */ /* Next socket, please... */
self = (irnet_socket *) hashbin_get_next(irnet_server.list); self = (irnet_socket *) hashbin_get_next(irnet_server.list);
...@@ -1801,8 +1791,21 @@ irnet_proc_read(char * buf, ...@@ -1801,8 +1791,21 @@ irnet_proc_read(char * buf,
/* Spin lock end */ /* Spin lock end */
spin_unlock_bh(&irnet_server.spinlock); spin_unlock_bh(&irnet_server.spinlock);
return len; return 0;
} }
static int irnet_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, irnet_proc_show, NULL);
}
static const struct file_operations irnet_proc_fops = {
.owner = THIS_MODULE,
.open = irnet_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
#endif /* PROC_FS */ #endif /* PROC_FS */
...@@ -1841,7 +1844,7 @@ irda_irnet_init(void) ...@@ -1841,7 +1844,7 @@ irda_irnet_init(void)
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
/* Add a /proc file for irnet infos */ /* Add a /proc file for irnet infos */
create_proc_info_entry("irnet", 0, proc_irda, irnet_proc_read); proc_create("irnet", 0, proc_irda, &irnet_proc_fops);
#endif /* CONFIG_PROC_FS */ #endif /* CONFIG_PROC_FS */
/* Setup the IrNET server */ /* Setup the IrNET server */
......
...@@ -159,14 +159,6 @@ static void ...@@ -159,14 +159,6 @@ static void
DISCOVERY_MODE, DISCOVERY_MODE,
void *); void *);
#endif #endif
/* -------------------------- PROC ENTRY -------------------------- */
#ifdef CONFIG_PROC_FS
static int
irnet_proc_read(char *,
char **,
off_t,
int);
#endif /* CONFIG_PROC_FS */
/**************************** VARIABLES ****************************/ /**************************** VARIABLES ****************************/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment