提交 3e8e88ca 编写于 作者: A Alan Cox 提交者: Linus Torvalds

pty: prepare for tty->ops changes

We are about to change the tty layer to avoid keeping private copies of all
the methods in each tty.  We have to update the pty layer first as it
currently patches the ioctl method according to the tty type.  Use multiple
tty operations sets instead.
Signed-off-by: NAlan Cox <alan@redhat.com>
Acked-by: N"H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 f2545a75
...@@ -254,6 +254,18 @@ static int pty_bsd_ioctl(struct tty_struct *tty, struct file *file, ...@@ -254,6 +254,18 @@ static int pty_bsd_ioctl(struct tty_struct *tty, struct file *file,
static int legacy_count = CONFIG_LEGACY_PTY_COUNT; static int legacy_count = CONFIG_LEGACY_PTY_COUNT;
module_param(legacy_count, int, 0); module_param(legacy_count, int, 0);
static const struct tty_operations pty_ops_bsd = {
.open = pty_open,
.close = pty_close,
.write = pty_write,
.write_room = pty_write_room,
.flush_buffer = pty_flush_buffer,
.chars_in_buffer = pty_chars_in_buffer,
.unthrottle = pty_unthrottle,
.set_termios = pty_set_termios,
.ioctl = pty_bsd_ioctl,
};
static void __init legacy_pty_init(void) static void __init legacy_pty_init(void)
{ {
if (legacy_count <= 0) if (legacy_count <= 0)
...@@ -284,7 +296,6 @@ static void __init legacy_pty_init(void) ...@@ -284,7 +296,6 @@ static void __init legacy_pty_init(void)
pty_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW; pty_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
pty_driver->other = pty_slave_driver; pty_driver->other = pty_slave_driver;
tty_set_operations(pty_driver, &pty_ops); tty_set_operations(pty_driver, &pty_ops);
pty_driver->ioctl = pty_bsd_ioctl;
pty_slave_driver->owner = THIS_MODULE; pty_slave_driver->owner = THIS_MODULE;
pty_slave_driver->driver_name = "pty_slave"; pty_slave_driver->driver_name = "pty_slave";
...@@ -377,6 +388,19 @@ static int pty_unix98_ioctl(struct tty_struct *tty, struct file *file, ...@@ -377,6 +388,19 @@ static int pty_unix98_ioctl(struct tty_struct *tty, struct file *file,
return -ENOIOCTLCMD; return -ENOIOCTLCMD;
} }
static const struct tty_operations pty_unix98_ops = {
.open = pty_open,
.close = pty_close,
.write = pty_write,
.write_room = pty_write_room,
.flush_buffer = pty_flush_buffer,
.chars_in_buffer = pty_chars_in_buffer,
.unthrottle = pty_unthrottle,
.set_termios = pty_set_termios,
.ioctl = pty_unix98_ioctl
};
static void __init unix98_pty_init(void) static void __init unix98_pty_init(void)
{ {
ptm_driver = alloc_tty_driver(NR_UNIX98_PTY_MAX); ptm_driver = alloc_tty_driver(NR_UNIX98_PTY_MAX);
...@@ -403,8 +427,7 @@ static void __init unix98_pty_init(void) ...@@ -403,8 +427,7 @@ static void __init unix98_pty_init(void)
ptm_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | ptm_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW |
TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_DEVPTS_MEM; TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_DEVPTS_MEM;
ptm_driver->other = pts_driver; ptm_driver->other = pts_driver;
tty_set_operations(ptm_driver, &pty_ops); tty_set_operations(ptm_driver, &pty_unix98_ops);
ptm_driver->ioctl = pty_unix98_ioctl;
pts_driver->owner = THIS_MODULE; pts_driver->owner = THIS_MODULE;
pts_driver->driver_name = "pty_slave"; pts_driver->driver_name = "pty_slave";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册