[PATCH] convert tty_drivers to list_heads

From: Brian Gerst (bgerst@didntduck.org)
Date: Sat Oct 12 2002 - 00:23:16 EST


Convert the tty_drivers list to use list_heads instead of open coded
doubly-linked lists.

--
				Brian Gerst

diff -urN linux-2.5.42/drivers/char/tty_io.c linux/drivers/char/tty_io.c --- linux-2.5.42/drivers/char/tty_io.c Fri Oct 11 22:51:09 2002 +++ linux/drivers/char/tty_io.c Sat Oct 12 01:12:11 2002 @@ -113,7 +113,7 @@ #define CHECK_TTY_COUNT 1 struct termios tty_std_termios; /* for the benefit of tty drivers */ -struct tty_driver *tty_drivers; /* linked list of tty drivers */ +LIST_HEAD(tty_drivers); /* linked list of tty drivers */ struct tty_ldisc ldiscs[NR_LDISCS]; /* line disc dispatch table */ #ifdef CONFIG_UNIX98_PTYS @@ -338,7 +338,7 @@ minor = minor(device); major = major(device); - for (p = tty_drivers; p; p = p->next) { + list_for_each_entry(p, &tty_drivers, tty_drivers) { if (p->major != major) continue; if (minor < p->minor_start) @@ -2083,10 +2083,7 @@ if (!driver->put_char) driver->put_char = tty_default_put_char; - driver->prev = 0; - driver->next = tty_drivers; - if (tty_drivers) tty_drivers->prev = driver; - tty_drivers = driver; + list_add(&driver->tty_drivers, &tty_drivers); if ( !(driver->flags & TTY_DRIVER_NO_DEVFS) ) { for(i = 0; i < driver->num; i++) @@ -2110,7 +2107,7 @@ if (*driver->refcount) return -EBUSY; - for (p = tty_drivers; p; p = p->next) { + list_for_each_entry(p, &tty_drivers, tty_drivers) { if (p == driver) found++; else if (p->major == driver->major) @@ -2127,13 +2124,7 @@ } else register_chrdev(driver->major, othername, &tty_fops); - if (driver->prev) - driver->prev->next = driver->next; - else - tty_drivers = driver->next; - - if (driver->next) - driver->next->prev = driver->prev; + list_del(&driver->tty_drivers); /* * Free the termios and termios_locked structures because diff -urN linux-2.5.42/fs/proc/proc_tty.c linux/fs/proc/proc_tty.c --- linux-2.5.42/fs/proc/proc_tty.c Sun Sep 15 22:18:26 2002 +++ linux/fs/proc/proc_tty.c Sat Oct 12 00:46:21 2002 @@ -14,7 +14,6 @@ #include <linux/tty.h> #include <asm/bitops.h> -extern struct tty_driver *tty_drivers; /* linked list of tty drivers */ extern struct tty_ldisc ldiscs[]; @@ -40,7 +39,7 @@ char range[20], deftype[20]; char *type; - for (p = tty_drivers; p; p = p->next) { + list_for_each_entry(p, &tty_drivers, tty_drivers) { if (p->num > 1) sprintf(range, "%d-%d", p->minor_start, p->minor_start + p->num - 1); diff -urN linux-2.5.42/include/linux/tty_driver.h linux/include/linux/tty_driver.h --- linux-2.5.42/include/linux/tty_driver.h Sun Sep 15 22:18:39 2002 +++ linux/include/linux/tty_driver.h Sat Oct 12 00:46:21 2002 @@ -116,6 +116,7 @@ */ #include <linux/fs.h> +#include <linux/list.h> struct tty_driver { int magic; /* magic number for this structure */ @@ -170,14 +171,11 @@ int count, int *eof, void *data); int (*write_proc)(struct file *file, const char *buffer, unsigned long count, void *data); - - /* - * linked list pointers - */ - struct tty_driver *next; - struct tty_driver *prev; + struct list_head tty_drivers; }; +extern struct list_head tty_drivers; + /* tty driver magic number */ #define TTY_DRIVER_MAGIC 0x5402

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:42 EST