2008-07-21 16:56:12

by Cong Wang

[permalink] [raw]
Subject: [Patch] um: fix a build error


Fixed this build error:

/home/wangcong/Projects/linux-2.6/arch/um/drivers/line.c: In function
‘line_write_interrupt’:
/home/wangcong/Projects/linux-2.6/arch/um/drivers/line.c:366: error:
‘struct tty_ldisc’ has no member named ‘write_wakeup’
/home/wangcong/Projects/linux-2.6/arch/um/drivers/line.c:367: error:
‘struct tty_ldisc’ has no member named ‘write_wakeup’
make[2]: *** [arch/um/drivers/line.o] Error 1
make[1]: *** [arch/um/drivers] Error 2
make: *** [sub-make] Error 2

Sigend-off-by: WANG Cong <[email protected]>
Cc: [email protected]

---
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 5047490..c872dad 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -363,8 +363,8 @@ static irqreturn_t line_write_interrupt(int irq, void *data)
return IRQ_NONE;

if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
- (tty->ldisc.write_wakeup != NULL))
- (tty->ldisc.write_wakeup)(tty);
+ (tty->ldisc.ops->write_wakeup != NULL))
+ (tty->ldisc.ops->write_wakeup)(tty);

/*
* BLOCKING mode


2008-07-21 20:53:19

by Alan

[permalink] [raw]
Subject: Re: [Patch] um: fix a build error

On Mon, 21 Jul 2008 17:54:09 +0100
WANG Cong <[email protected]> wrote:

>
> Fixed this build error:
>
> /home/wangcong/Projects/linux-2.6/arch/um/drivers/line.c: In function
> ‘line_write_interrupt’:
> /home/wangcong/Projects/linux-2.6/arch/um/drivers/line.c:366: error:
> ‘struct tty_ldisc’ has no member named ‘write_wakeup’
> /home/wangcong/Projects/linux-2.6/arch/um/drivers/line.c:367: error:
> ‘struct tty_ldisc’ has no member named ‘write_wakeup’
> make[2]: *** [arch/um/drivers/line.o] Error 1
> make[1]: *** [arch/um/drivers] Error 2
> make: *** [sub-make] Error 2
>
> Sigend-off-by: WANG Cong <[email protected]>

NAK - drivers shouldn't be poking around in tty innards in the first
place then this wouldn't break. Use tty_wakeup(tty); insteaad

Alan

2008-07-22 10:58:23

by Eric Sesterhenn

[permalink] [raw]
Subject: Re: [Patch] um: fix a build error

I just ran across the same build error, does
something like this look reasonable? Only build
and boot tested.

This fixes the following build error:

CC arch/um/drivers/line.o
arch/um/drivers/line.c: In function ‘line_write_interrupt’:
arch/um/drivers/line.c:366: error: ‘struct tty_ldisc’ has no member
named ‘write_wakeup’
arch/um/drivers/line.c:367: error: ‘struct tty_ldisc’ has no member
named ‘write_wakeup’
make[1]: *** [arch/um/drivers/line.o] Error 1
make: *** [arch/um/drivers] Error 2


Signed-off-by: Eric Sesterhenn <[email protected]>

--- linux-2.6/arch/um/drivers/line.c.orig 2008-07-22 12:06:17.000000000 +0200
+++ linux-2.6/arch/um/drivers/line.c 2008-07-22 12:06:49.000000000 +0200
@@ -362,10 +362,8 @@ static irqreturn_t line_write_interrupt(
if (tty == NULL)
return IRQ_NONE;

- if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
- (tty->ldisc.write_wakeup != NULL))
- (tty->ldisc.write_wakeup)(tty);
-
+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags))
+ tty_wakeup(tty);
/*
* BLOCKING mode
* In blocking mode, everything sleeps on tty->write_wait.

2008-07-22 11:11:40

by Alan

[permalink] [raw]
Subject: Re: [Patch] um: fix a build error

> Signed-off-by: Eric Sesterhenn <[email protected]>
>
> --- linux-2.6/arch/um/drivers/line.c.orig 2008-07-22 12:06:17.000000000 +0200
> +++ linux-2.6/arch/um/drivers/line.c 2008-07-22 12:06:49.000000000 +0200
> @@ -362,10 +362,8 @@ static irqreturn_t line_write_interrupt(
> if (tty == NULL)
> return IRQ_NONE;
>
> - if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
> - (tty->ldisc.write_wakeup != NULL))
> - (tty->ldisc.write_wakeup)(tty);
> -
> + if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags))
> + tty_wakeup(tty);

Sorry I should have been clearer - you don't want the test_bit either.

Acked-by: Alan Cox <[email protected]>

however as it is still right but you can stick my Ack on a version
without the if too.

2008-07-22 11:27:23

by Cong Wang

[permalink] [raw]
Subject: Re: [Patch] um: fix a build error

On Tue, Jul 22, 2008 at 11:53:54AM +0100, Alan Cox wrote:
>> Signed-off-by: Eric Sesterhenn <[email protected]>
>>
>> --- linux-2.6/arch/um/drivers/line.c.orig 2008-07-22 12:06:17.000000000 +0200
>> +++ linux-2.6/arch/um/drivers/line.c 2008-07-22 12:06:49.000000000 +0200
>> @@ -362,10 +362,8 @@ static irqreturn_t line_write_interrupt(
>> if (tty == NULL)
>> return IRQ_NONE;
>>
>> - if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
>> - (tty->ldisc.write_wakeup != NULL))
>> - (tty->ldisc.write_wakeup)(tty);
>> -
>> + if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags))
>> + tty_wakeup(tty);
>
>Sorry I should have been clearer - you don't want the test_bit either.
>

Sure, tty_wakeup() already does that test.

And, tty_wakeup() also does wake_up_interruptible(), so I think
the wake_up_interruptible() below can also be removed, probably.

Thanks.

--
The opposite of love is not hate, but indifference.
--Elie Wiesel

2008-07-22 17:36:55

by Cong Wang

[permalink] [raw]
Subject: Re: [Patch] um: fix a build error

On Tue, Jul 22, 2008 at 11:53:54AM +0100, Alan Cox wrote:
>> Signed-off-by: Eric Sesterhenn <[email protected]>
>>
>> --- linux-2.6/arch/um/drivers/line.c.orig 2008-07-22 12:06:17.000000000 +0200
>> +++ linux-2.6/arch/um/drivers/line.c 2008-07-22 12:06:49.000000000 +0200
>> @@ -362,10 +362,8 @@ static irqreturn_t line_write_interrupt(
>> if (tty == NULL)
>> return IRQ_NONE;
>>
>> - if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
>> - (tty->ldisc.write_wakeup != NULL))
>> - (tty->ldisc.write_wakeup)(tty);
>> -
>> + if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags))
>> + tty_wakeup(tty);
>
>Sorry I should have been clearer - you don't want the test_bit either.
>

What about the below one?

Signed-off-by: WANG Cong <[email protected]>

---

diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 5047490..d741f35 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -362,19 +362,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data)
if (tty == NULL)
return IRQ_NONE;

- if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
- (tty->ldisc.write_wakeup != NULL))
- (tty->ldisc.write_wakeup)(tty);
-
- /*
- * BLOCKING mode
- * In blocking mode, everything sleeps on tty->write_wait.
- * Sleeping in the console driver would break non-blocking
- * writes.
- */
-
- if (waitqueue_active(&tty->write_wait))
- wake_up_interruptible(&tty->write_wait);
+ tty_wakeup(tty);
return IRQ_HANDLED;
}

2008-07-22 18:00:40

by Alan

[permalink] [raw]
Subject: Re: [Patch] um: fix a build error

On Tue, 22 Jul 2008 18:35:09 +0100
WANG Cong <[email protected]> wrote:

> On Tue, Jul 22, 2008 at 11:53:54AM +0100, Alan Cox wrote:
> >> Signed-off-by: Eric Sesterhenn <[email protected]>
> >>
> >> --- linux-2.6/arch/um/drivers/line.c.orig 2008-07-22 12:06:17.000000000 +0200
> >> +++ linux-2.6/arch/um/drivers/line.c 2008-07-22 12:06:49.000000000 +0200
> >> @@ -362,10 +362,8 @@ static irqreturn_t line_write_interrupt(
> >> if (tty == NULL)
> >> return IRQ_NONE;
> >>
> >> - if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) &&
> >> - (tty->ldisc.write_wakeup != NULL))
> >> - (tty->ldisc.write_wakeup)(tty);
> >> -
> >> + if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags))
> >> + tty_wakeup(tty);
> >
> >Sorry I should have been clearer - you don't want the test_bit either.
> >
>
> What about the below one?
>
> Signed-off-by: WANG Cong <[email protected]>

Acked-by: Alan Cox <[email protected]>