]> git.hungrycats.org Git - linux/commitdiff
[PATCH] make devpts filesystem mandatory even for CONFIG_DEVFS
authorChristoph Hellwig <hch@lst.de>
Thu, 17 Apr 2003 06:09:42 +0000 (23:09 -0700)
committerChristoph Hellwig <hch@lst.de>
Thu, 17 Apr 2003 06:09:42 +0000 (23:09 -0700)
This patch rips out handling of UNIX98 ptys from devfs.  We already
have a special small filesystem to handle it (devpts) that's always
compiled in anyway.  This allows to get rid of all DEVFS_FL* flags and
some gunk in devfs.

drivers/char/pty.c
drivers/char/tty_io.c

index e0ee2a18428e916da235965e475f63d67a49f8a8..85c52650290d3e702ef5a5c2222362af3508acd5 100644 (file)
@@ -305,7 +305,6 @@ static void pty_flush_buffer(struct tty_struct *tty)
        }
 }
 
-extern void tty_register_devfs (struct tty_driver *driver, unsigned int flags, unsigned minor);
 static int pty_open(struct tty_struct *tty, struct file * filp)
 {
        int     retval;
@@ -333,13 +332,6 @@ static int pty_open(struct tty_struct *tty, struct file * filp)
        wake_up_interruptible(&pty->open_wait);
        set_bit(TTY_THROTTLED, &tty->flags);
        set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-
-       /*  Register a slave for the master  */
-       if (tty->driver.major == PTY_MASTER_MAJOR)
-               tty_register_devfs(&tty->link->driver,
-                                  DEVFS_FL_CURRENT_OWNER | DEVFS_FL_WAIT,
-                                  tty->link->driver.minor_start +
-                                  minor(tty->device)-tty->driver.minor_start);
        retval = 0;
 out:
        return retval;
index acacb8cfe527afe4dfbd75f8dc7859956fc420eb..b5b29750dbf0ba538d8a4a24dfa5aa2ecb6d08fb 100644 (file)
@@ -1355,46 +1355,38 @@ retry_open:
 
        if (IS_PTMX_DEV(device)) {
 #ifdef CONFIG_UNIX98_PTYS
-
                /* find a free pty. */
                int major, minor;
                struct tty_driver *driver;
 
                /* find a device that is not in use. */
                retval = -1;
-               for ( major = 0 ; major < UNIX98_NR_MAJORS ; major++ ) {
+               for (major = 0 ; major < UNIX98_NR_MAJORS ; major++) {
                        driver = &ptm_driver[major];
-                       for (minor = driver->minor_start ;
-                            minor < driver->minor_start + driver->num ;
+                       for (minor = driver->minor_start;
+                            minor < driver->minor_start + driver->num;
                             minor++) {
                                device = mk_kdev(driver->major, minor);
-                               if (!init_dev(device, &tty)) goto ptmx_found; /* ok! */
+                               if (!init_dev(device, &tty))
+                                       goto ptmx_found; /* ok! */
                        }
                }
                return -EIO; /* no free ptys */
+
        ptmx_found:
                set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */
                minor -= driver->minor_start;
                devpts_pty_new(driver->other->name_base + minor, MKDEV(driver->other->major, minor + driver->other->minor_start));
-               tty_register_device(&pts_driver[major],
-                                  pts_driver[major].minor_start + minor);
                noctty = 1;
-               goto init_dev_done;
-
-#else   /* CONFIG_UNIX_98_PTYS */
-
+#else
                return -ENODEV;
-
 #endif  /* CONFIG_UNIX_98_PTYS */
+       } else {
+               retval = init_dev(device, &tty);
+               if (retval)
+                       return retval;
        }
 
-       retval = init_dev(device, &tty);
-       if (retval)
-               return retval;
-
-#ifdef CONFIG_UNIX98_PTYS
-init_dev_done:
-#endif
        filp->private_data = tty;
        file_move(filp, &tty->tty_files);
        check_tty_count(tty, "tty_open");
@@ -2052,51 +2044,48 @@ static void tty_default_put_char(struct tty_struct *tty, unsigned char ch)
        tty->driver.write(tty, 0, &ch, 1);
 }
 
-void tty_register_devfs (struct tty_driver *driver, unsigned int flags, unsigned minor)
-{
 #ifdef CONFIG_DEVFS_FS
+static void tty_register_devfs(struct tty_driver *driver, unsigned minor)
+{
        umode_t mode = S_IFCHR | S_IRUSR | S_IWUSR;
-       kdev_t device = mk_kdev(driver->major, minor);
+       kdev_t dev = mk_kdev(driver->major, minor);
        int idx = minor - driver->minor_start;
        char buf[32];
 
-       if (IS_TTY_DEV(device) || IS_PTMX_DEV(device)) 
-               mode |= S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
-       else {
-               if (driver->major == PTY_MASTER_MAJOR)
-                       mode |= S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
-       }
-       if ( (minor <  driver->minor_start) || 
-            (minor >= driver->minor_start + driver->num) ) {
+       if ((minor < driver->minor_start) || 
+           (minor >= driver->minor_start + driver->num)) {
                printk(KERN_ERR "Attempt to register invalid minor number "
                       "with devfs (%d:%d).\n", (int)driver->major,(int)minor);
                return;
        }
-#  ifdef CONFIG_UNIX98_PTYS
-       if ( (driver->major >= UNIX98_PTY_SLAVE_MAJOR) &&
-            (driver->major < UNIX98_PTY_SLAVE_MAJOR + UNIX98_NR_MAJORS) )
-               flags |= DEVFS_FL_CURRENT_OWNER;
-#  endif
+
+       if (IS_TTY_DEV(dev) || IS_PTMX_DEV(dev)) 
+               mode |= S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+
        sprintf(buf, driver->name, idx + driver->name_base);
-       devfs_register (NULL, buf, flags | DEVFS_FL_DEFAULT,
-                       driver->major, minor, mode, &tty_fops, NULL);
-#endif /* CONFIG_DEVFS_FS */
+       devfs_register(NULL, buf, 0, driver->major, minor, mode,
+                      &tty_fops, NULL);
 }
 
-void tty_unregister_devfs (struct tty_driver *driver, unsigned minor)
+static void tty_unregister_devfs(struct tty_driver *driver, unsigned minor)
 {
-       devfs_remove(driver->name, minor-driver->minor_start+driver->name_base);
+       devfs_remove(driver->name,
+                    minor - driver->minor_start + driver->name_base);
 }
+#else
+# define tty_register_devfs(driver, minor)     do { } while (0)
+# define tty_unregister_devfs(driver, minor)   do { } while (0)
+#endif /* CONFIG_DEVFS_FS */
 
 /*
  * Register a tty device described by <driver>, with minor number <minor>.
  */
-void tty_register_device (struct tty_driver *driver, unsigned minor)
+void tty_register_device(struct tty_driver *driver, unsigned minor)
 {
-       tty_register_devfs(driver, 0, minor);
+       tty_register_devfs(driver, minor);
 }
 
-void tty_unregister_device (struct tty_driver *driver, unsigned minor)
+void tty_unregister_device(struct tty_driver *driver, unsigned minor)
 {
        tty_unregister_devfs(driver, minor);
 }