From: Jesper Nilsson <Jesper.Nilsson@axis.com>
To: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
"linux-next@vger.kernel.org" <linux-next@vger.kernel.org>,
Alexey Dobriyan <adobriyan@gmail.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: linux-next: origin tree build failure
Date: Tue, 14 Apr 2009 09:58:53 +0200 [thread overview]
Message-ID: <20090414075853.GA21811@axis.com> (raw)
In-Reply-To: <20090414173423.2b9ab235.sfr@canb.auug.org.au>
On Tue, Apr 14, 2009 at 09:34:23AM +0200, Stephen Rothwell wrote:
> Hi all,
>
> Today's linux-next build (cris etrax-100lx_defconfig) failed like this:
>
> drivers/serial/crisv10.c:4428: error: unknown field 'read_proc' specified in initializer
>
> Caused by commit 0f043a81ebe84be3576667f04fdda481609e3816 ("proc tty:
> remove struct tty_operations::read_proc").
Hi,
I have the following patch (sent Wed 8 Apr) for this failure:
CRISv10: Change serial driver proc-usage.
Commit 0f043a81ebe84be3576667f04fdda481609e3816 removes the
read_proc entry from struct tty_operations.
Rework the proc handling in the CRISv10 serial driver to use
proc_fops instead.
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
--
crisv10.c | 173 +++++++++++++++++++++++++++-----------------------------------
1 file changed, 78 insertions(+), 95 deletions(-)
diff --git a/drivers/serial/crisv10.c b/drivers/serial/crisv10.c
index e642c22..4719935 100644
--- a/drivers/serial/crisv10.c
+++ b/drivers/serial/crisv10.c
@@ -23,16 +23,18 @@ static char *serial_version = "$Revision: 1.25 $";
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/init.h>
-#include <asm/uaccess.h>
#include <linux/kernel.h>
#include <linux/mutex.h>
#include <linux/bitops.h>
+#include <linux/seq_file.h>
+#include <linux/delay.h>
+#include <linux/module.h>
+#include <linux/uaccess.h>
+#include <linux/io.h>
-#include <asm/io.h>
#include <asm/irq.h>
#include <asm/dma.h>
#include <asm/system.h>
-#include <linux/delay.h>
#include <arch/svinto.h>
@@ -456,7 +458,6 @@ static struct e100_serial rs_table[] = {
#define NR_PORTS (sizeof(rs_table)/sizeof(struct e100_serial))
-static struct ktermios *serial_termios[NR_PORTS];
#ifdef CONFIG_ETRAX_SERIAL_FAST_TIMER
static struct fast_timer fast_timers[NR_PORTS];
#endif
@@ -4220,151 +4221,132 @@ rs_open(struct tty_struct *tty, struct file * filp)
return 0;
}
+#ifdef CONFIG_PROC_FS
/*
* /proc fs routines....
*/
-static int line_info(char *buf, struct e100_serial *info)
+static void seq_line_info(struct seq_file *m, struct e100_serial *info)
{
- char stat_buf[30];
- int ret;
unsigned long tmp;
- ret = sprintf(buf, "%d: uart:E100 port:%lX irq:%d",
- info->line, (unsigned long)info->ioport, info->irq);
+ seq_printf(m, "%d: uart:E100 port:%lX irq:%d",
+ info->line, (unsigned long)info->ioport, info->irq);
if (!info->ioport || (info->type == PORT_UNKNOWN)) {
- ret += sprintf(buf+ret, "\n");
- return ret;
+ seq_printf(m, "\n");
+ return;
}
- stat_buf[0] = 0;
- stat_buf[1] = 0;
- if (!E100_RTS_GET(info))
- strcat(stat_buf, "|RTS");
- if (!E100_CTS_GET(info))
- strcat(stat_buf, "|CTS");
- if (!E100_DTR_GET(info))
- strcat(stat_buf, "|DTR");
- if (!E100_DSR_GET(info))
- strcat(stat_buf, "|DSR");
- if (!E100_CD_GET(info))
- strcat(stat_buf, "|CD");
- if (!E100_RI_GET(info))
- strcat(stat_buf, "|RI");
-
- ret += sprintf(buf+ret, " baud:%d", info->baud);
-
- ret += sprintf(buf+ret, " tx:%lu rx:%lu",
+ seq_printf(m, " baud:%d", info->baud);
+ seq_printf(m, " tx:%lu rx:%lu",
(unsigned long)info->icount.tx,
(unsigned long)info->icount.rx);
tmp = CIRC_CNT(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE);
- if (tmp) {
- ret += sprintf(buf+ret, " tx_pend:%lu/%lu",
- (unsigned long)tmp,
- (unsigned long)SERIAL_XMIT_SIZE);
- }
+ if (tmp)
+ seq_printf(m, " tx_pend:%lu/%lu",
+ (unsigned long)tmp,
+ (unsigned long)SERIAL_XMIT_SIZE);
- ret += sprintf(buf+ret, " rx_pend:%lu/%lu",
- (unsigned long)info->recv_cnt,
- (unsigned long)info->max_recv_cnt);
+ seq_printf(m, " rx_pend:%lu/%lu",
+ (unsigned long)info->recv_cnt,
+ (unsigned long)info->max_recv_cnt);
#if 1
if (info->port.tty) {
-
if (info->port.tty->stopped)
- ret += sprintf(buf+ret, " stopped:%i",
- (int)info->port.tty->stopped);
+ seq_printf(m, " stopped:%i",
+ (int)info->port.tty->stopped);
if (info->port.tty->hw_stopped)
- ret += sprintf(buf+ret, " hw_stopped:%i",
- (int)info->port.tty->hw_stopped);
+ seq_printf(m, " hw_stopped:%i",
+ (int)info->port.tty->hw_stopped);
}
{
unsigned char rstat = info->ioport[REG_STATUS];
- if (rstat & IO_MASK(R_SERIAL0_STATUS, xoff_detect) )
- ret += sprintf(buf+ret, " xoff_detect:1");
+ if (rstat & IO_MASK(R_SERIAL0_STATUS, xoff_detect))
+ seq_printf(m, " xoff_detect:1");
}
#endif
-
-
-
if (info->icount.frame)
- ret += sprintf(buf+ret, " fe:%lu",
- (unsigned long)info->icount.frame);
+ seq_printf(m, " fe:%lu", (unsigned long)info->icount.frame);
if (info->icount.parity)
- ret += sprintf(buf+ret, " pe:%lu",
- (unsigned long)info->icount.parity);
+ seq_printf(m, " pe:%lu", (unsigned long)info->icount.parity);
if (info->icount.brk)
- ret += sprintf(buf+ret, " brk:%lu",
- (unsigned long)info->icount.brk);
+ seq_printf(m, " brk:%lu", (unsigned long)info->icount.brk);
if (info->icount.overrun)
- ret += sprintf(buf+ret, " oe:%lu",
- (unsigned long)info->icount.overrun);
+ seq_printf(m, " oe:%lu", (unsigned long)info->icount.overrun);
/*
* Last thing is the RS-232 status lines
*/
- ret += sprintf(buf+ret, " %s\n", stat_buf+1);
- return ret;
+ if (!E100_RTS_GET(info))
+ seq_puts(m, "|RTS");
+ if (!E100_CTS_GET(info))
+ seq_puts(m, "|CTS");
+ if (!E100_DTR_GET(info))
+ seq_puts(m, "|DTR");
+ if (!E100_DSR_GET(info))
+ seq_puts(m, "|DSR");
+ if (!E100_CD_GET(info))
+ seq_puts(m, "|CD");
+ if (!E100_RI_GET(info))
+ seq_puts(m, "|RI");
+ seq_puts(m, "\n");
}
-int rs_read_proc(char *page, char **start, off_t off, int count,
- int *eof, void *data)
+
+static int crisv10_proc_show(struct seq_file *m, void *v)
{
- int i, len = 0, l;
- off_t begin = 0;
+ int i;
- len += sprintf(page, "serinfo:1.0 driver:%s\n",
- serial_version);
- for (i = 0; i < NR_PORTS && len < 4000; i++) {
+ seq_printf(m, "serinfo:1.0 driver:%s\n", serial_version);
+
+ for (i = 0; i < NR_PORTS; i++) {
if (!rs_table[i].enabled)
continue;
- l = line_info(page + len, &rs_table[i]);
- len += l;
- if (len+begin > off+count)
- goto done;
- if (len+begin < off) {
- begin += len;
- len = 0;
- }
+ seq_line_info(m, &rs_table[i]);
}
#ifdef DEBUG_LOG_INCLUDED
for (i = 0; i < debug_log_pos; i++) {
- len += sprintf(page + len, "%-4i %lu.%lu ", i, debug_log[i].time, timer_data_to_ns(debug_log[i].timer_data));
- len += sprintf(page + len, debug_log[i].string, debug_log[i].value);
- if (len+begin > off+count)
- goto done;
- if (len+begin < off) {
- begin += len;
- len = 0;
- }
+ seq_printf(m, "%-4i %lu.%lu ",
+ i, debug_log[i].time,
+ timer_data_to_ns(debug_log[i].timer_data));
+ seq_printf(m, debug_log[i].string, debug_log[i].value);
}
- len += sprintf(page + len, "debug_log %i/%i %li bytes\n",
- i, DEBUG_LOG_SIZE, begin+len);
+ seq_printf(m, "debug_log %i/%i\n", i, DEBUG_LOG_SIZE);
debug_log_pos = 0;
#endif
+ return 0;
+}
- *eof = 1;
-done:
- if (off >= len+begin)
- return 0;
- *start = page + (off-begin);
- return ((count < begin+len-off) ? count : begin+len-off);
+static int crisv10_proc_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, crisv10_proc_show, NULL);
}
+static const struct file_operations crisv10_proc_fops = {
+ .owner = THIS_MODULE,
+ .open = crisv10_proc_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+#endif
+
+
/* Finally, routines used to initialize the serial driver. */
-static void
-show_serial_version(void)
+static void show_serial_version(void)
{
printk(KERN_INFO
- "ETRAX 100LX serial-driver %s, (c) 2000-2004 Axis Communications AB\r\n",
+ "ETRAX 100LX serial-driver %s, "
+ "(c) 2000-2004 Axis Communications AB\r\n",
&serial_version[11]); /* "$Revision: x.yy" */
}
@@ -4388,13 +4370,14 @@ static const struct tty_operations rs_ops = {
.break_ctl = rs_break,
.send_xchar = rs_send_xchar,
.wait_until_sent = rs_wait_until_sent,
- .read_proc = rs_read_proc,
.tiocmget = rs_tiocmget,
- .tiocmset = rs_tiocmset
+ .tiocmset = rs_tiocmset,
+#ifdef CONFIG_PROC_FS
+ .proc_fops = &crisv10_proc_fops,
+#endif
};
-static int __init
-rs_init(void)
+static int __init rs_init(void)
{
int i;
struct e100_serial *info;
/^JN - Jesper Nilsson
--
Jesper Nilsson -- jesper.nilsson@axis.com
next prev parent reply other threads:[~2009-04-14 7:58 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-14 7:34 linux-next: origin tree build failure Stephen Rothwell
2009-04-14 7:58 ` Jesper Nilsson [this message]
-- strict thread matches above, loose matches on Subject: below --
2010-01-12 1:14 Stephen Rothwell
2010-01-12 1:26 ` Linus Torvalds
2010-01-12 2:32 ` Stephen Rothwell
2010-01-12 2:39 ` Stephen Rothwell
2010-01-13 0:14 ` Phillip Lougher
2010-01-13 2:55 ` Stephen Rothwell
2010-01-11 23:58 Stephen Rothwell
2010-01-11 23:58 ` Stephen Rothwell
2010-01-11 23:58 ` Stephen Rothwell
2010-01-12 0:29 ` Joakim Tjernlund
2010-01-12 0:29 ` Joakim Tjernlund
2010-01-12 12:38 ` Joakim Tjernlund
2010-01-12 12:38 ` Joakim Tjernlund
2009-12-24 0:54 Stephen Rothwell
2009-12-15 5:41 Stephen Rothwell
2009-12-15 5:41 ` Stephen Rothwell
2009-12-15 8:07 ` Ingo Molnar
2009-12-15 13:01 ` Peter Ujfalusi
2009-12-15 13:01 ` Peter Ujfalusi
2009-12-15 14:53 ` Mark Brown
2009-12-15 17:27 ` Tony Lindgren
2009-12-15 22:45 ` Stephen Rothwell
2009-12-15 23:02 ` Linus Torvalds
2009-12-15 23:37 ` Stephen Rothwell
2009-12-16 9:30 ` Samuel Ortiz
2009-12-09 23:57 Stephen Rothwell
2009-11-30 23:10 Stephen Rothwell
2009-11-12 0:23 Stephen Rothwell
2009-10-09 7:50 Stephen Rothwell
2009-07-09 0:28 Stephen Rothwell
2009-06-25 1:13 Stephen Rothwell
2009-06-25 3:24 ` Baruch Siach
2009-06-25 4:12 ` Paul Mundt
2009-06-23 6:22 Stephen Rothwell
2009-06-23 10:13 ` Mark Brown
2009-06-19 6:30 Stephen Rothwell
2009-06-19 6:30 ` Stephen Rothwell
2009-06-12 0:46 Stephen Rothwell
2009-06-12 0:24 Stephen Rothwell
2009-06-12 0:24 ` Stephen Rothwell
2009-06-12 0:53 ` Paul Mackerras
2009-06-12 0:53 ` Paul Mackerras
2009-06-12 1:00 ` Benjamin Herrenschmidt
2009-06-12 1:00 ` Benjamin Herrenschmidt
2009-06-12 9:20 ` Ingo Molnar
2009-06-12 9:20 ` Ingo Molnar
2009-06-12 9:33 ` Benjamin Herrenschmidt
2009-06-12 9:33 ` Benjamin Herrenschmidt
2009-06-12 9:43 ` Peter Zijlstra
2009-06-12 9:43 ` Peter Zijlstra
2009-06-12 9:55 ` Ingo Molnar
2009-06-12 9:55 ` Ingo Molnar
2009-06-12 9:57 ` Benjamin Herrenschmidt
2009-06-12 9:57 ` Benjamin Herrenschmidt
2009-06-12 12:53 ` Ingo Molnar
2009-06-12 12:53 ` Ingo Molnar
2009-06-12 13:10 ` Benjamin Herrenschmidt
2009-06-12 13:10 ` Benjamin Herrenschmidt
2009-06-12 13:29 ` Benjamin Herrenschmidt
2009-06-12 13:29 ` Benjamin Herrenschmidt
2009-06-12 13:49 ` Ingo Molnar
2009-06-12 13:49 ` Ingo Molnar
2009-06-12 14:06 ` Benjamin Herrenschmidt
2009-06-12 14:06 ` Benjamin Herrenschmidt
2009-06-12 14:11 ` Ingo Molnar
2009-06-12 14:11 ` Ingo Molnar
2009-06-12 14:23 ` Benjamin Herrenschmidt
2009-06-12 14:23 ` Benjamin Herrenschmidt
2009-06-13 5:06 ` Stephen Rothwell
2009-06-13 5:06 ` Stephen Rothwell
2009-06-13 5:06 ` Stephen Rothwell
2009-06-12 13:44 ` Ingo Molnar
2009-06-12 13:44 ` Ingo Molnar
2009-06-12 13:56 ` Benjamin Herrenschmidt
2009-06-12 13:56 ` Benjamin Herrenschmidt
2009-06-12 14:07 ` Ingo Molnar
2009-06-12 14:07 ` Ingo Molnar
2009-06-12 14:19 ` Benjamin Herrenschmidt
2009-06-12 14:19 ` Benjamin Herrenschmidt
2009-06-13 4:54 ` Stephen Rothwell
2009-06-13 4:54 ` Stephen Rothwell
2009-04-14 4:43 Stephen Rothwell
2009-04-14 8:57 ` David Miller
2009-04-14 9:20 ` Heiko Carstens
2009-04-14 9:08 ` David Miller
2009-04-14 10:26 ` Stephen Rothwell
2009-04-08 3:28 Stephen Rothwell
2009-04-08 0:10 Stephen Rothwell
2009-03-30 0:55 Stephen Rothwell
2009-01-11 23:48 Stephen Rothwell
2009-01-11 23:48 Stephen Rothwell
2009-01-11 23:48 ` Stephen Rothwell
2009-01-12 0:10 ` Benjamin Herrenschmidt
2009-01-12 0:10 ` Benjamin Herrenschmidt
2009-01-12 0:10 ` Benjamin Herrenschmidt
2009-01-12 9:05 ` Ingo Molnar
2009-01-12 9:05 ` Ingo Molnar
2009-01-12 9:24 ` Stephen Rothwell
2009-01-12 9:24 ` Stephen Rothwell
2009-01-12 9:32 ` Ingo Molnar
2009-01-12 9:32 ` Ingo Molnar
2009-01-13 16:31 ` Stephen Rothwell
2009-01-13 16:31 ` Stephen Rothwell
2009-01-12 9:49 ` Michael Ellerman
2009-01-12 9:49 ` Michael Ellerman
2009-01-12 10:44 ` Ingo Molnar
2009-01-12 10:44 ` Ingo Molnar
2009-01-12 10:44 ` Ingo Molnar
2009-01-12 10:44 ` Ingo Molnar
2009-01-12 10:44 ` Ingo Molnar
2009-01-12 0:10 ` Benjamin Herrenschmidt
2009-01-12 0:10 ` Benjamin Herrenschmidt
2009-01-11 23:48 Stephen Rothwell
2009-01-11 23:48 Stephen Rothwell
2008-12-29 0:43 Stephen Rothwell
2008-12-29 3:36 ` Roland Dreier
2008-12-29 3:44 ` Roland Dreier
2008-12-29 9:58 ` Aleksey Senin
2008-12-29 16:13 ` Roland Dreier
2008-12-29 16:52 ` Aleksey Senin
2008-12-29 20:18 ` Roland Dreier
2008-12-29 21:07 ` Linus Torvalds
2008-12-29 21:35 ` Roland Dreier
2008-12-29 8:48 ` Aleksey Senin
2008-12-30 7:38 ` Roland Dreier
2008-12-30 8:30 ` Stephen Rothwell
2008-12-29 0:00 Stephen Rothwell
2008-12-29 0:00 ` Stephen Rothwell
2008-12-28 23:51 Stephen Rothwell
2008-12-28 23:38 Stephen Rothwell
2008-12-28 23:38 ` Stephen Rothwell
2008-12-29 0:31 ` Linus Torvalds
2008-10-16 0:35 Stephen Rothwell
2008-10-16 4:57 ` David Miller
2008-10-16 0:31 Stephen Rothwell
2008-10-16 12:58 ` Ralf Baechle
2008-10-14 22:59 Stephen Rothwell
2008-10-14 23:43 ` Linus Torvalds
2008-10-14 23:52 ` David Miller
2008-10-15 0:05 ` Mark Brown
2008-10-15 0:34 ` Linus Torvalds
2008-10-14 23:51 ` Linus Torvalds
2008-10-15 9:02 ` Alan Cox
2008-10-15 9:33 ` Ingo Molnar
2008-10-15 11:01 ` Mark Brown
2008-08-26 0:37 Stephen Rothwell
2008-08-18 0:01 Stephen Rothwell
2008-08-18 12:55 ` David Howells
2008-08-18 14:03 ` James Morris
2008-07-25 0:30 Stephen Rothwell
2008-07-25 0:30 ` Stephen Rothwell
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=20090414075853.GA21811@axis.com \
--to=jesper.nilsson@axis.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
--cc=torvalds@linux-foundation.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.