All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Hurley <peter@hurleysoftware.com>
To: Shreyas Bethur <shreyas.bethur@ni.com>,
	linux-serial@vger.kernel.org, gregkh@linuxfoundation.org,
	jslaby@suse.cz
Subject: Re: [PATCH 1/1] tty: Do not set modem lines when reopening ports
Date: Mon, 03 Nov 2014 18:13:13 -0500	[thread overview]
Message-ID: <54580C09.7080901@hurleysoftware.com> (raw)
In-Reply-To: <OF6C85CA04.9FBB77C4-ON86257D82.007014C2-86257D82.0070E996@ni.com>

Hi Shreyas,

On 10/31/2014 04:33 PM, Shreyas Bethur wrote:
> When tty port is opened, we will raise the DTR and RTS lines. But for
> second and subsequent opens, we should not modify these lines because the
> first session might be actively using these lines. We don't want a second
> open to interfere with the first session.
> 
> Signed-off-by: Shreyas Bethur <shreyas.bethur@ni.com>
> ---
> To give some background for this patch, we have a product that uses the
> DTR line on the serial port for synchronization with other devices. While
> the synchronization application is using the DTR line, if another process
> opens the same port, then DTR line is raised, and thus interferes with the
> synchronization application. So, if a port is open, subsequent opens
> should not modify any modem lines.

Would you please expand on your use-case?

Regards,
Peter Hurley

> This patch is my attempt to fix this issue. Please review my fix, and let
> me know what you folks think.
> ---
>  drivers/tty/tty_port.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c
> index 1b93357..8a6c80a 100644
> --- a/drivers/tty/tty_port.c
> +++ b/drivers/tty/tty_port.c
> @@ -363,6 +363,7 @@ int tty_port_block_til_ready(struct tty_port *port,
>         int do_clocal = 0, retval;
>         unsigned long flags;
>         DEFINE_WAIT(wait);
> +       bool port_first_open = true;
> 
>         /* block if port is in the process of being closed */
>         if (port->flags & ASYNC_CLOSING) {
> @@ -381,8 +382,15 @@ int tty_port_block_til_ready(struct tty_port *port,
>                 return 0;
>         }
>         if (filp->f_flags & O_NONBLOCK) {
> -               /* Indicate we are open */
> -               if (tty->termios.c_cflag & CBAUD)
> +               /* The port lock protects the port counts */
> +               spin_lock_irqsave(&port->lock, flags);
> +               if (port->count > 1)
> +                       port_first_open = false;
> +               spin_unlock_irqrestore(&port->lock, flags);
> +
> +               /* Indicate we are open. Raise DTR and RTS only if opening 
> the
> +                  port for the first time */
> +               if ((tty->termios.c_cflag & CBAUD) && port_first_open)
>                         tty_port_raise_dtr_rts(port);
>                 port->flags |= ASYNC_NORMAL_ACTIVE;
>                 return 0;
> 


  reply	other threads:[~2014-11-03 23:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-31 20:33 [PATCH 1/1] tty: Do not set modem lines when reopening ports Shreyas Bethur
2014-11-03 23:13 ` Peter Hurley [this message]
2014-11-05 22:01   ` Shreyas Bethur
2014-11-05 23:39     ` Peter Hurley
2014-11-05 23:56       ` Shreyas Bethur

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=54580C09.7080901@hurleysoftware.com \
    --to=peter@hurleysoftware.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.cz \
    --cc=linux-serial@vger.kernel.org \
    --cc=shreyas.bethur@ni.com \
    /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.