diff options
-rw-r--r-- | Documentation/ABI/testing/sysfs-tty | 3 | ||||
-rw-r--r-- | drivers/tty/tty_io.c | 25 |
2 files changed, 20 insertions, 8 deletions
diff --git a/Documentation/ABI/testing/sysfs-tty b/Documentation/ABI/testing/sysfs-tty index ad22fb0ee765..a2ccec35ffce 100644 --- a/Documentation/ABI/testing/sysfs-tty +++ b/Documentation/ABI/testing/sysfs-tty | |||
@@ -3,7 +3,8 @@ Date: Nov 2010 | |||
3 | Contact: Kay Sievers <kay.sievers@vrfy.org> | 3 | Contact: Kay Sievers <kay.sievers@vrfy.org> |
4 | Description: | 4 | Description: |
5 | Shows the list of currently configured | 5 | Shows the list of currently configured |
6 | console devices, like 'tty1 ttyS0'. | 6 | tty devices used for the console, |
7 | like 'tty1 ttyS0'. | ||
7 | The last entry in the file is the active | 8 | The last entry in the file is the active |
8 | device connected to /dev/console. | 9 | device connected to /dev/console. |
9 | The file supports poll() to detect virtual | 10 | The file supports poll() to detect virtual |
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index c74a00ad7add..bd2715a9d8e5 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c | |||
@@ -1267,16 +1267,17 @@ static void pty_line_name(struct tty_driver *driver, int index, char *p) | |||
1267 | * @p: output buffer of at least 7 bytes | 1267 | * @p: output buffer of at least 7 bytes |
1268 | * | 1268 | * |
1269 | * Generate a name from a driver reference and write it to the output | 1269 | * Generate a name from a driver reference and write it to the output |
1270 | * buffer. | 1270 | * buffer. Return the number of bytes written. |
1271 | * | 1271 | * |
1272 | * Locking: None | 1272 | * Locking: None |
1273 | */ | 1273 | */ |
1274 | static void tty_line_name(struct tty_driver *driver, int index, char *p) | 1274 | static ssize_t tty_line_name(struct tty_driver *driver, int index, char *p) |
1275 | { | 1275 | { |
1276 | if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE) | 1276 | if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE) |
1277 | strcpy(p, driver->name); | 1277 | return sprintf(p, "%s", driver->name); |
1278 | else | 1278 | else |
1279 | sprintf(p, "%s%d", driver->name, index + driver->name_base); | 1279 | return sprintf(p, "%s%d", driver->name, |
1280 | index + driver->name_base); | ||
1280 | } | 1281 | } |
1281 | 1282 | ||
1282 | /** | 1283 | /** |
@@ -3545,9 +3546,19 @@ static ssize_t show_cons_active(struct device *dev, | |||
3545 | if (i >= ARRAY_SIZE(cs)) | 3546 | if (i >= ARRAY_SIZE(cs)) |
3546 | break; | 3547 | break; |
3547 | } | 3548 | } |
3548 | while (i--) | 3549 | while (i--) { |
3549 | count += sprintf(buf + count, "%s%d%c", | 3550 | struct tty_driver *driver; |
3550 | cs[i]->name, cs[i]->index, i ? ' ':'\n'); | 3551 | const char *name = cs[i]->name; |
3552 | int index = cs[i]->index; | ||
3553 | |||
3554 | driver = cs[i]->device(cs[i], &index); | ||
3555 | if (driver) { | ||
3556 | count += tty_line_name(driver, index, buf + count); | ||
3557 | count += sprintf(buf + count, "%c", i ? ' ':'\n'); | ||
3558 | } else | ||
3559 | count += sprintf(buf + count, "%s%d%c", | ||
3560 | name, index, i ? ' ':'\n'); | ||
3561 | } | ||
3551 | console_unlock(); | 3562 | console_unlock(); |
3552 | 3563 | ||
3553 | return count; | 3564 | return count; |