On Wed, Nov 23, 2005 at 11:37:23AM -0500, Jon Smirl wrote:Thank you, you can omit answering my previous post if you like, I can understand ugly but necessary.
Before everyone gets excited, I realize that all of this has
historical implications. But that doesn't mean we can't discuss
possible future alternative solutions.
Thinking about this for a while it seems to me that the problem is
that the various apps (init, syslog) etc should not have a tty name as
part of their command line parameters. Instead these apps could use
ptys instead. Ptys would solve all of the race problems too.
Is there any good reason (other than history) for using a device node
name (tty0, etc) instead of some other naming scheme if names are
needed at all?
If init, syslog, etc can be converted to ptys, do we need ttys? Xterms
use ptys I don't notice that they aren't connect to a fix tty name.
The virtual consoles would still be 0,1,2 but do they have to be
hooked to tty0, 1, 2 instead of a pty?
The basic difference between a pty and tty is that a pty connects to a
program (that created it by opening the ptmx node, for example xterm or
ssh) on the other end, while a tty connects to the kernel doing all the
character drawing in the framebuffer.
You can't easily use one instead of the other, they're very different
beasts.
Of course, a way to use a pty would be to have the console
implementation in userspace.
The fact that no program is on the other end of a tty is also the reason
why they cannot be created dynamically like ptys, there is noone to open
a "ttmx" to create the ttys.
Hence, the device nodes are pre-created by the kernel, while the real
devices are only created on open.