From: Blaisorblade <blaisorblade@yahoo.it>
To: Alan Cox <alan@redhat.com>
Cc: "LKML" <linux-kernel@vger.kernel.org>,
James Simmons <jsimmons@infradead.org>,
Jeff Dike <jdike@addtoit.com>
Subject: TTY layer locking design
Date: Sat, 18 Nov 2006 00:11:38 +0200 [thread overview]
Message-ID: <200611172311.38744.blaisorblade@yahoo.it> (raw)
I've started cleaning up locking in UML TTY drivers, and I've found some
difficulties in making it work cleanly.
I was starting looking well into the TTY layer locking and its design, and at
a first (and carent) look I found it difficult to follow; recent changes to
tty refcounting seem to point out that much work needs to be done, as one can
guess after looking at the code (I wasn't sure whether the problem was on the
code or on the reader ;-), however).
So I have some questions before starting really to delve here:
*) who is maintaining this aspect of code ? The only name found in MAINTAINERS
and CREDITS is the one of James Simmons.
*) would the locking need to be redesigned?
*) is the current design reputed solid? I'm not only talking about the big
kernel lock, but also about whether drivers need to reinvent (incorrectly)
the wheel for their locking. UML drivers are very bad on this, but I've found
difficulty both at reading the code and at finding documentation.
*) Documentation/tty.txt is quite carent.
*) there is no generic way to handle tty's which are also consoles, except
drivers/char/vt.c - that code is written as if it were the only case where
that applies. Instead, UML drivers are an exception to this - UML cannot use
virtual terminals.
Having a generic console driver using tty methods appears to be a cleaner
design (think, in filesystem writing, of page cache methods based
on ->readpage and ->writepage).
I'm trying to establish whether it is possible, for instance, for ->close to
be called in parallel to ->write and such; in other driver layer this is
impossible because refcounts are used (normal files, char & block devices)
or, in the network layer, where refcount usage is impossible, because of
state machines (in the network layer).
It seems not to happen for the console layer - is this true?
Also, since write must use a spinlock because it must protect from interrupt
races, and open cannot, must we use both a mutex and a spinlock in ->write
and similar methods? This can be avoided in other drivers.
--
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!".
Paolo Giarrusso, aka Blaisorblade
http://www.user-mode-linux.org/~blaisorblade
Chiacchiera con i tuoi amici in tempo reale!
http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com
next reply other threads:[~2006-11-17 22:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-17 22:11 Blaisorblade [this message]
2006-11-17 23:15 ` Alan Cox
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=200611172311.38744.blaisorblade@yahoo.it \
--to=blaisorblade@yahoo.it \
--cc=alan@redhat.com \
--cc=jdike@addtoit.com \
--cc=jsimmons@infradead.org \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®