From: Johan Hovold <johan@kernel.org>
To: "Uwe Kleine-König" <uwe@kleine-koenig.org>
Cc: "Jacek Anaszewski" <jacek.anaszewski@gmail.com>,
"Pavel Machek" <pavel@ucw.cz>, "Dan Murphy" <dmurphy@ti.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Jiri Slaby" <jslaby@suse.com>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@pengutronix.de, linux-serial@vger.kernel.org
Subject: Re: [PATCH v6 2/4] tty: rename tty_kopen() and add new function tty_kopen_shared()
Date: Wed, 19 Feb 2020 14:21:13 +0100 [thread overview]
Message-ID: <20200219132113.GD32540@localhost> (raw)
In-Reply-To: <20200213091600.554-3-uwe@kleine-koenig.org>
On Thu, Feb 13, 2020 at 10:15:58AM +0100, Uwe Kleine-König wrote:
> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
>
> Introduce a new function tty_kopen_shared() that yields a struct
> tty_struct. The semantic difference to tty_kopen() is that the tty is
> expected to be used already. So rename tty_kopen() to
> tty_kopen_exclusive() for clearness, adapt the single user and put the
> common code in a new static helper function.
>
> tty_kopen_shared is to be used to implement an LED trigger for tty
> devices in one of the next patches.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> -/**
> - * tty_kopen - open a tty device for kernel
> - * @device: dev_t of device to open
> - *
> - * Opens tty exclusively for kernel. Performs the driver lookup,
> - * makes sure it's not already opened and performs the first-time
> - * tty initialization.
> - *
> - * Returns the locked initialized &tty_struct
> - *
> - * Claims the global tty_mutex to serialize:
> - * - concurrent first-time tty initialization
> - * - concurrent tty driver removal w/ lookup
> - * - concurrent tty removal from driver table
> - */
> -struct tty_struct *tty_kopen(dev_t device)
> +static struct tty_struct *tty_kopen(dev_t device, int shared)
> {
> struct tty_struct *tty;
> struct tty_driver *driver;
> @@ -1905,7 +1890,7 @@ struct tty_struct *tty_kopen(dev_t device)
>
> /* check whether we're reopening an existing tty */
> tty = tty_driver_lookup_tty(driver, NULL, index);
> - if (IS_ERR(tty))
> + if (IS_ERR(tty) || shared)
So here you skip initialisation and return NULL if the tty isn't already
in use (e.g. is open) when shared is set.
> goto out;
>
> if (tty) {
> @@ -1923,7 +1908,44 @@ struct tty_struct *tty_kopen(dev_t device)
> tty_driver_kref_put(driver);
> return tty;
> }
> -EXPORT_SYMBOL_GPL(tty_kopen);
> +
> +/**
> + * tty_kopen_exclusive - open a tty device for kernel
> + * @device: dev_t of device to open
> + *
> + * Opens tty exclusively for kernel. Performs the driver lookup,
> + * makes sure it's not already opened and performs the first-time
> + * tty initialization.
> + *
> + * Returns the locked initialized &tty_struct
> + *
> + * Claims the global tty_mutex to serialize:
> + * - concurrent first-time tty initialization
> + * - concurrent tty driver removal w/ lookup
> + * - concurrent tty removal from driver table
> + */
> +struct tty_struct *tty_kopen_exclusive(dev_t device)
> +{
> + return tty_kopen(device, 0);
> +}
> +EXPORT_SYMBOL_GPL(tty_kopen_exclusive);
> +
> +/**
> + * tty_kopen_shared - open a tty device for shared in-kernel use
> + * @device: dev_t of device to open
> + *
> + * Opens an already existing tty
> + * rnel. Performs the driver lookup,
"rnel"?
> + * makes sure it's not already opened and performs the first-time
> + * tty initialization.
Yet, you claim to do initialisation here, which isn't the case.
> + *
> + * Locking is identical to tty_kopen() above.
> + */
> +struct tty_struct *tty_kopen_shared(dev_t device)
> +{
> + return tty_kopen(device, 1);
> +}
> +EXPORT_SYMBOL_GPL(tty_kopen_shared);
This "kopen" naming is unfortunate as the tty isn't really opened by
either of these functions, but that's not something you introduced.
Johan
next prev parent reply other threads:[~2020-02-19 13:21 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-13 9:15 [PATCH v6 0/4] leds: trigger: implement a tty trigger Uwe Kleine-König
2020-02-13 9:15 ` [PATCH v6 1/4] lib: new helper kstrtodev_t() Uwe Kleine-König
2020-02-19 19:50 ` Andy Shevchenko
2020-02-20 7:49 ` Uwe Kleine-König
2020-02-20 10:22 ` Andy Shevchenko
2020-02-20 10:57 ` Uwe Kleine-König
2020-02-20 11:46 ` Andy Shevchenko
2020-02-20 11:57 ` Andy Shevchenko
2020-02-20 14:01 ` Uwe Kleine-König
2020-02-21 8:42 ` Andy Shevchenko
2020-02-21 10:53 ` Uwe Kleine-König
2020-04-25 7:07 ` Pavel Machek
2020-02-13 9:15 ` [PATCH v6 2/4] tty: rename tty_kopen() and add new function tty_kopen_shared() Uwe Kleine-König
2020-02-19 13:21 ` Johan Hovold [this message]
2020-02-19 16:37 ` Uwe Kleine-König
2020-02-19 17:17 ` Johan Hovold
2020-02-20 11:04 ` Uwe Kleine-König
2020-02-25 8:55 ` Johan Hovold
2020-02-25 9:05 ` Uwe Kleine-König
2020-02-13 9:15 ` [PATCH v6 3/4] tty: new helper function tty_get_icount() Uwe Kleine-König
2020-02-13 9:16 ` [PATCH v6 4/4] leds: trigger: implement a tty trigger Uwe Kleine-König
2020-02-19 10:52 ` Johan Hovold
2020-02-19 11:03 ` Uwe Kleine-König
2020-02-19 11:19 ` Johan Hovold
2020-02-19 12:48 ` Johan Hovold
2020-02-19 10:40 ` [PATCH v6 0/4] " Greg Kroah-Hartman
2020-02-26 14:02 ` Pavel Machek
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=20200219132113.GD32540@localhost \
--to=johan@kernel.org \
--cc=dmurphy@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=jacek.anaszewski@gmail.com \
--cc=jslaby@suse.com \
--cc=kernel@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=u.kleine-koenig@pengutronix.de \
--cc=uwe@kleine-koenig.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.