summaryrefslogtreecommitdiffstats
path: root/drivers/char/pty.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/pty.c')
-rw-r--r--drivers/char/pty.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/char/pty.c b/drivers/char/pty.c
index 48e81fc61..1e67c604e 100644
--- a/drivers/char/pty.c
+++ b/drivers/char/pty.c
@@ -30,7 +30,7 @@
struct pty_struct {
int magic;
- struct wait_queue * open_wait;
+ wait_queue_head_t open_wait;
};
#define PTY_MAGIC 0x5001
@@ -336,13 +336,13 @@ static void pty_set_termios(struct tty_struct *tty, struct termios *old_termios)
__initfunc(int pty_init(void))
{
-#ifdef CONFIG_UNIX98_PTYS
int i;
-#endif
/* Traditional BSD devices */
memset(&pty_state, 0, sizeof(pty_state));
+ for (i = 0; i < NR_PTYS; i++)
+ init_waitqueue_head(&pty_state[i].open_wait);
memset(&pty_driver, 0, sizeof(struct tty_driver));
pty_driver.magic = TTY_DRIVER_MAGIC;
pty_driver.driver_name = "pty_master";
@@ -405,6 +405,8 @@ __initfunc(int pty_init(void))
#ifdef CONFIG_UNIX98_PTYS
printk("pty: %d Unix98 ptys configured\n", UNIX98_NR_MAJORS*NR_PTYS);
for ( i = 0 ; i < UNIX98_NR_MAJORS ; i++ ) {
+ int j;
+
ptm_driver[i] = pty_driver;
ptm_driver[i].name = "ptm";
ptm_driver[i].proc_entry = 0;
@@ -417,6 +419,9 @@ __initfunc(int pty_init(void))
ptm_driver[i].termios = ptm_termios[i];
ptm_driver[i].termios_locked = ptm_termios_locked[i];
ptm_driver[i].driver_state = ptm_state[i];
+
+ for (j = 0; j < NR_PTYS; j++)
+ init_waitqueue_head(&ptm_state[i][j].open_wait);
pts_driver[i] = pty_slave_driver;
pts_driver[i].name = "pts";