[PATCH RFC] staging: dgap: more 80+ char lines work

Mark Hounschell markh at compro.net
Sat Mar 8 09:59:59 UTC 2014


On 03/07/2014 05:46 PM, Dan Carpenter wrote:
> I still prefer my patch.  Unless I'm missing something?  Could you
> review it and I will submit it as a patch tomorrow.
>
> regards,
> dan carpenter
>
> diff --git a/drivers/staging/dgap/dgap.c b/drivers/staging/dgap/dgap.c
> index d00283a226a2..783cd75a2d96 100644
> --- a/drivers/staging/dgap/dgap.c
> +++ b/drivers/staging/dgap/dgap.c
> @@ -5730,6 +5730,33 @@ static void dgap_parity_scan(struct channel_t *ch, unsigned char *cbuf,
>   	*len = count;
>   }
>
> +static void dgap_write_wakeup(struct board_t *bd, struct channel_t *ch,
> +			      struct un_t *un, u32 mask,
> +			      unsigned long *irq_flags1,
> +			      unsigned long *irq_flags2)
> +{
> +	if (!(un->un_flags & mask))
> +		return;
> +
> +	un->un_flags &= ~mask;
> +
> +	if (!(un->un_flags & UN_ISOPEN))
> +		return;
> +
> +	if ((un->un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
> +	    un->un_tty->ldisc->ops->write_wakeup) {
> +		spin_unlock_irqrestore(&ch->ch_lock, *irq_flags2);
> +		spin_unlock_irqrestore(&bd->bd_lock, *irq_flags1);
> +
> +		(un->un_tty->ldisc->ops->write_wakeup)(un->un_tty);
> +
> +		spin_lock_irqsave(&bd->bd_lock, *irq_flags1);
> +		spin_lock_irqsave(&ch->ch_lock, *irq_flags2);
> +	}
> +	wake_up_interruptible(&un->un_tty->write_wait);
> +	wake_up_interruptible(&un->un_flags_wait);
> +}
> +
>   /*=======================================================================
>    *
>    *      dgap_event - FEP to host event processing routine.
> @@ -5881,42 +5908,10 @@ static int dgap_event(struct board_t *bd)
>   		 * Process Transmit low.
>   		 */
>   		if (reason & IFTLW) {
> -
> -			if (ch->ch_tun.un_flags & UN_LOW) {
> -				ch->ch_tun.un_flags &= ~UN_LOW;
> -
> -				if (ch->ch_tun.un_flags & UN_ISOPEN) {
> -					if ((ch->ch_tun.un_tty->flags &
> -					   (1 << TTY_DO_WRITE_WAKEUP)) &&
> -						ch->ch_tun.un_tty->ldisc->ops->write_wakeup) {
> -						DGAP_UNLOCK(ch->ch_lock, lock_flags2);
> -						DGAP_UNLOCK(bd->bd_lock, lock_flags);
> -						(ch->ch_tun.un_tty->ldisc->ops->write_wakeup)(ch->ch_tun.un_tty);
> -						DGAP_LOCK(bd->bd_lock, lock_flags);
> -						DGAP_LOCK(ch->ch_lock, lock_flags2);
> -					}
> -					wake_up_interruptible(&ch->ch_tun.un_tty->write_wait);
> -					wake_up_interruptible(&ch->ch_tun.un_flags_wait);
> -				}
> -			}
> -
> -			if (ch->ch_pun.un_flags & UN_LOW) {
> -				ch->ch_pun.un_flags &= ~UN_LOW;
> -				if (ch->ch_pun.un_flags & UN_ISOPEN) {
> -					if ((ch->ch_pun.un_tty->flags &
> -					   (1 << TTY_DO_WRITE_WAKEUP)) &&
> -						ch->ch_pun.un_tty->ldisc->ops->write_wakeup) {
> -						DGAP_UNLOCK(ch->ch_lock, lock_flags2);
> -						DGAP_UNLOCK(bd->bd_lock, lock_flags);
> -						(ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty);
> -						DGAP_LOCK(bd->bd_lock, lock_flags);
> -						DGAP_LOCK(ch->ch_lock, lock_flags2);
> -					}
> -					wake_up_interruptible(&ch->ch_pun.un_tty->write_wait);
> -					wake_up_interruptible(&ch->ch_pun.un_flags_wait);
> -				}
> -			}
> -
> +			dgap_write_wakeup(bd, ch, &ch->ch_tun, UN_LOW,
> +					  &lock_flags, &lock_flags2);
> +			dgap_write_wakeup(bd, ch, &ch->ch_pun, UN_LOW,
> +					  &lock_flags, &lock_flags2);
>   			if (ch->ch_flags & CH_WLOW) {
>   				ch->ch_flags &= ~CH_WLOW;
>   				wake_up_interruptible(&ch->ch_flags_wait);
> @@ -5927,42 +5922,10 @@ static int dgap_event(struct board_t *bd)
>   		 * Process Transmit empty.
>   		 */
>   		if (reason & IFTEM) {
> -			if (ch->ch_tun.un_flags & UN_EMPTY) {
> -				ch->ch_tun.un_flags &= ~UN_EMPTY;
> -				if (ch->ch_tun.un_flags & UN_ISOPEN) {
> -					if ((ch->ch_tun.un_tty->flags &
> -					   (1 << TTY_DO_WRITE_WAKEUP)) &&
> -						ch->ch_tun.un_tty->ldisc->ops->write_wakeup) {
> -						DGAP_UNLOCK(ch->ch_lock, lock_flags2);
> -						DGAP_UNLOCK(bd->bd_lock, lock_flags);
> -
> -						(ch->ch_tun.un_tty->ldisc->ops->write_wakeup)(ch->ch_tun.un_tty);
> -						DGAP_LOCK(bd->bd_lock, lock_flags);
> -						DGAP_LOCK(ch->ch_lock, lock_flags2);
> -					}
> -					wake_up_interruptible(&ch->ch_tun.un_tty->write_wait);
> -					wake_up_interruptible(&ch->ch_tun.un_flags_wait);
> -				}
> -			}
> -
> -			if (ch->ch_pun.un_flags & UN_EMPTY) {
> -				ch->ch_pun.un_flags &= ~UN_EMPTY;
> -				if (ch->ch_pun.un_flags & UN_ISOPEN) {
> -					if ((ch->ch_pun.un_tty->flags &
> -					   (1 << TTY_DO_WRITE_WAKEUP)) &&
> -						ch->ch_pun.un_tty->ldisc->ops->write_wakeup) {
> -						DGAP_UNLOCK(ch->ch_lock, lock_flags2);
> -						DGAP_UNLOCK(bd->bd_lock, lock_flags);
> -						(ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty);
> -						DGAP_LOCK(bd->bd_lock, lock_flags);
> -						DGAP_LOCK(ch->ch_lock, lock_flags2);
> -					}
> -					wake_up_interruptible(&ch->ch_pun.un_tty->write_wait);
> -					wake_up_interruptible(&ch->ch_pun.un_flags_wait);
> -				}
> -			}
> -
> -
> +			dgap_write_wakeup(bd, ch, &ch->ch_tun, UN_EMPTY,
> +					  &lock_flags, &lock_flags2);
> +			dgap_write_wakeup(bd, ch, &ch->ch_pun, UN_EMPTY,
> +					  &lock_flags, &lock_flags2);
>   			if (ch->ch_flags & CH_WEMPTY) {
>   				ch->ch_flags &= ~CH_WEMPTY;
>   				wake_up_interruptible(&ch->ch_flags_wait);
>
>
>

I need to test this. I have been unable to do any thing in my testing 
that actually causes ldisc->ops->write_wakeup) to actually get called?? 
But after looking I do like this better.

Mark



More information about the devel mailing list