From: Mauro Carvalho Chehab <mchehab@infradead.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: LKML <linux-kernel@vger.kernel.org>,
Kay Sievers <kay.sievers@vrfy.org>,
Andrew Morton <akpm@linux-foundation.org>,
Alan Cox <alan@linux.intel.com>,
Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH v2 RFC] char/tty_io: fix legacy pty name when more than 256 pty devices are requested
Date: Tue, 8 Sep 2009 15:59:06 -0300 [thread overview]
Message-ID: <20090908155906.0d30f4bc@caramujo.chehab.org> (raw)
In-Reply-To: <20090908185926.042ba9aa@lxorguk.ukuu.org.uk>
With kernel 2.6, the number of minors is not 255 anymore. So, it is
possible to have more than 255 pty devices.
However, the pty_line_name() only provides device names for the first
256 tty/pty devices.
This is a bug, since there's no limits for the maximum number of legacy
pty devices at Kconfig or at pty.legacy_count.
This patch preserves the old nomenclature for tty/pty devices for the
first 256 devices. After that, it names the next devices as:
ttyf0000-ttfpffff (pty slave)
ptyf0000-ttyfffff (pty master)
This way, the existing udev rules for legacy pty devices to not
break. Only after minor 255, it will start to use the new nomenclature.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
Version 2: devices.txt namespace doc were updated accordingly.
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 53d64d3..cfd3e20 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -114,18 +114,27 @@ Your cooperation is appreciated.
the initrd.
2 char Pseudo-TTY masters
- 0 = /dev/ptyp0 First PTY master
- 1 = /dev/ptyp1 Second PTY master
+ 0 = /dev/ptyp0 First PTY master
+ 1 = /dev/ptyp1 Second PTY master
...
- 255 = /dev/ptyef 256th PTY master
+ 255 = /dev/ptyef 256th PTY master
+ 256 = /dev/ptyf0000 257th PTY slave
+ 257 = /dev/ptyf0001 258th PTY slave
+ ...
+ 65791 = /dev/ptyfffff 65791 PTY slave
- Pseudo-tty's are named as follows:
+ Pseudo-tty's up to 256 are named as follows:
* Masters are "pty", slaves are "tty";
* the fourth letter is one of pqrstuvwxyzabcde indicating
the 1st through 16th series of 16 pseudo-ttys each, and
* the fifth letter is one of 0123456789abcdef indicating
the position within the series.
+ Pseudo-tty's above 256 are named as follows:
+ * Masters are "ptyf", slaves are "ttyf";
+ * the fifth to eighth letters are hexadecimal digits
+ indicating the position within the series.
+
These are the old-style (BSD) PTY devices; Unix98
devices are on major 128 and above and use the PTY
master multiplex (/dev/ptmx) to acquire a PTY on
@@ -189,10 +198,14 @@ Your cooperation is appreciated.
the drive type is insignificant for these devices.
3 char Pseudo-TTY slaves
- 0 = /dev/ttyp0 First PTY slave
- 1 = /dev/ttyp1 Second PTY slave
- ...
- 255 = /dev/ttyef 256th PTY slave
+ 0 = /dev/ttyp0 First PTY slave
+ 1 = /dev/ttyp1 Second PTY slave
+ ...
+ 255 = /dev/ttyef 256th PTY slave
+ 256 = /dev/ttyf0000 257th PTY slave
+ 257 = /dev/ttyf0001 258th PTY slave
+ ...
+ 65791 = /dev/ttyfffff 65791 PTY slave
These are the old-style (BSD) PTY devices; Unix98
devices are on major 136 and above.
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index a3afa0c..fdea89b 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1110,9 +1110,15 @@ static void pty_line_name(struct tty_driver *driver, int index, char *p)
{
int i = index + driver->name_base;
/* ->name is initialized to "ttyp", but "tty" is expected */
- sprintf(p, "%s%c%x",
- driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
- ptychar[i >> 4 & 0xf], i & 0xf);
+ if (i < 256) {
+ sprintf(p, "%s%c%x",
+ driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
+ ptychar[i >> 4 & 0xf], i & 0xf);
+ } else { /* Up to 4096 */
+ sprintf(p, "%sf%04x",
+ driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
+ i - 256);
+ }
}
/**
Cheers,
Mauro
next prev parent reply other threads:[~2009-09-08 18:59 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-08 17:49 [PATCH " Mauro Carvalho Chehab
2009-09-08 17:59 ` Alan Cox
2009-09-08 18:56 ` Mauro Carvalho Chehab
2009-09-08 18:59 ` Mauro Carvalho Chehab [this message]
2009-09-08 22:48 ` H. Peter Anvin
2009-09-08 23:33 ` Mauro Carvalho Chehab
2009-09-09 0:26 ` H. Peter Anvin
2009-09-09 2:54 ` Mauro Carvalho Chehab
2009-09-09 4:46 ` H. Peter Anvin
2009-09-10 4:05 ` [PATCH] " Mauro Carvalho Chehab
2009-09-10 6:21 ` H. Peter Anvin
2009-09-10 12:33 ` Mauro Carvalho Chehab
2009-09-10 14:07 ` Alan Cox
2009-09-10 15:57 ` H. Peter Anvin
2009-09-10 16:08 ` H. Peter Anvin
2009-09-10 19:12 ` Mauro Carvalho Chehab
2009-09-10 19:17 ` H. Peter Anvin
2009-09-10 20:05 ` Mauro Carvalho Chehab
2009-09-10 20:35 ` H. Peter Anvin
2009-09-10 23:23 ` Alan Cox
2009-09-10 23:25 ` H. Peter Anvin
2009-09-11 8:43 ` Alan Cox
2009-09-10 4:13 ` [PATCH RFC] " Mauro Carvalho Chehab
2009-09-10 5:33 ` H. Peter Anvin
2009-09-10 12:18 ` Mauro Carvalho Chehab
2009-09-10 10:19 ` 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=20090908155906.0d30f4bc@caramujo.chehab.org \
--to=mchehab@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=alan@linux.intel.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=gregkh@suse.de \
--cc=kay.sievers@vrfy.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®