Loading drivers/char/cyclades.c +20 −34 Original line number Diff line number Diff line Loading @@ -657,6 +657,7 @@ #include <linux/stat.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> static void cy_throttle(struct tty_struct *tty); static void cy_send_xchar(struct tty_struct *tty, char ch); Loading Loading @@ -868,8 +869,6 @@ static int cyz_issue_cmd(struct cyclades_card *, __u32, __u8, __u32); static unsigned detect_isa_irq(void __iomem *); #endif /* CONFIG_ISA */ static int cyclades_get_proc_info(char *, char **, off_t, int, int *, void *); #ifndef CONFIG_CYZ_INTR static void cyz_poll(unsigned long); Loading Loading @@ -5216,31 +5215,22 @@ static struct pci_driver cy_pci_driver = { }; #endif static int cyclades_get_proc_info(char *buf, char **start, off_t offset, int length, int *eof, void *data) static int cyclades_proc_show(struct seq_file *m, void *v) { struct cyclades_port *info; unsigned int i, j; int len = 0; off_t begin = 0; off_t pos = 0; int size; __u32 cur_jifs = jiffies; size = sprintf(buf, "Dev TimeOpen BytesOut IdleOut BytesIn " seq_puts(m, "Dev TimeOpen BytesOut IdleOut BytesIn " "IdleIn Overruns Ldisc\n"); pos += size; len += size; /* Output one line for each known port */ for (i = 0; i < NR_CARDS; i++) for (j = 0; j < cy_card[i].nports; j++) { info = &cy_card[i].ports[j]; if (info->port.count) size = sprintf(buf + len, "%3d %8lu %10lu %8lu " seq_printf(m, "%3d %8lu %10lu %8lu " "%10lu %8lu %9lu %6ld\n", info->line, (cur_jifs - info->idle_stats.in_use) / HZ, info->idle_stats.xmit_bytes, Loading @@ -5251,30 +5241,26 @@ cyclades_get_proc_info(char *buf, char **start, off_t offset, int length, /* FIXME: double check locking */ (long)info->port.tty->ldisc.ops->num); else size = sprintf(buf + len, "%3d %8lu %10lu %8lu " seq_printf(m, "%3d %8lu %10lu %8lu " "%10lu %8lu %9lu %6ld\n", info->line, 0L, 0L, 0L, 0L, 0L, 0L, 0L); len += size; pos = begin + len; if (pos < offset) { len = 0; begin = pos; } if (pos > offset + length) goto done; return 0; } *eof = 1; done: *start = buf + (offset - begin); /* Start of wanted data */ len -= (offset - begin); /* Start slop */ if (len > length) len = length; /* Ending slop */ if (len < 0) len = 0; return len; static int cyclades_proc_open(struct inode *inode, struct file *file) { return single_open(file, cyclades_proc_show, NULL); } static const struct file_operations cyclades_proc_fops = { .owner = THIS_MODULE, .open = cyclades_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; /* The serial driver boot-time initialization code! Hardware I/O ports are mapped to character special devices on a first found, first allocated manner. That is, this code searches Loading Loading @@ -5311,9 +5297,9 @@ static const struct tty_operations cy_ops = { .hangup = cy_hangup, .break_ctl = cy_break, .wait_until_sent = cy_wait_until_sent, .read_proc = cyclades_get_proc_info, .tiocmget = cy_tiocmget, .tiocmset = cy_tiocmset, .proc_fops = &cyclades_proc_fops, }; static int __init cy_init(void) Loading Loading
drivers/char/cyclades.c +20 −34 Original line number Diff line number Diff line Loading @@ -657,6 +657,7 @@ #include <linux/stat.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> static void cy_throttle(struct tty_struct *tty); static void cy_send_xchar(struct tty_struct *tty, char ch); Loading Loading @@ -868,8 +869,6 @@ static int cyz_issue_cmd(struct cyclades_card *, __u32, __u8, __u32); static unsigned detect_isa_irq(void __iomem *); #endif /* CONFIG_ISA */ static int cyclades_get_proc_info(char *, char **, off_t, int, int *, void *); #ifndef CONFIG_CYZ_INTR static void cyz_poll(unsigned long); Loading Loading @@ -5216,31 +5215,22 @@ static struct pci_driver cy_pci_driver = { }; #endif static int cyclades_get_proc_info(char *buf, char **start, off_t offset, int length, int *eof, void *data) static int cyclades_proc_show(struct seq_file *m, void *v) { struct cyclades_port *info; unsigned int i, j; int len = 0; off_t begin = 0; off_t pos = 0; int size; __u32 cur_jifs = jiffies; size = sprintf(buf, "Dev TimeOpen BytesOut IdleOut BytesIn " seq_puts(m, "Dev TimeOpen BytesOut IdleOut BytesIn " "IdleIn Overruns Ldisc\n"); pos += size; len += size; /* Output one line for each known port */ for (i = 0; i < NR_CARDS; i++) for (j = 0; j < cy_card[i].nports; j++) { info = &cy_card[i].ports[j]; if (info->port.count) size = sprintf(buf + len, "%3d %8lu %10lu %8lu " seq_printf(m, "%3d %8lu %10lu %8lu " "%10lu %8lu %9lu %6ld\n", info->line, (cur_jifs - info->idle_stats.in_use) / HZ, info->idle_stats.xmit_bytes, Loading @@ -5251,30 +5241,26 @@ cyclades_get_proc_info(char *buf, char **start, off_t offset, int length, /* FIXME: double check locking */ (long)info->port.tty->ldisc.ops->num); else size = sprintf(buf + len, "%3d %8lu %10lu %8lu " seq_printf(m, "%3d %8lu %10lu %8lu " "%10lu %8lu %9lu %6ld\n", info->line, 0L, 0L, 0L, 0L, 0L, 0L, 0L); len += size; pos = begin + len; if (pos < offset) { len = 0; begin = pos; } if (pos > offset + length) goto done; return 0; } *eof = 1; done: *start = buf + (offset - begin); /* Start of wanted data */ len -= (offset - begin); /* Start slop */ if (len > length) len = length; /* Ending slop */ if (len < 0) len = 0; return len; static int cyclades_proc_open(struct inode *inode, struct file *file) { return single_open(file, cyclades_proc_show, NULL); } static const struct file_operations cyclades_proc_fops = { .owner = THIS_MODULE, .open = cyclades_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; /* The serial driver boot-time initialization code! Hardware I/O ports are mapped to character special devices on a first found, first allocated manner. That is, this code searches Loading Loading @@ -5311,9 +5297,9 @@ static const struct tty_operations cy_ops = { .hangup = cy_hangup, .break_ctl = cy_break, .wait_until_sent = cy_wait_until_sent, .read_proc = cyclades_get_proc_info, .tiocmget = cy_tiocmget, .tiocmset = cy_tiocmset, .proc_fops = &cyclades_proc_fops, }; static int __init cy_init(void) Loading