linux2.6.28/include/linux/tty_driver.h:
struct tty_driver {
272 int magic; /* magic number for this structure */
273 struct kref kref; /* Reference management */
274 struct cdev cdev;
275 struct module *owner;
276 const char *driver_name;
277 const char *name;
278 int name_base; /* offset of printed name */
279 int major; /* major device number */
280 int minor_start; /* start of minor device number */
281 int minor_num; /* number of *possible* devices */
282 int num; /* number of devices allocated */
283 short type; /* type of tty driver */
284 short subtype; /* subtype of tty driver */
285 struct ktermios init_termios; /* Initial termios */
286 int flags; /* tty driver flags */
287 struct proc_dir_entry *proc_entry; /* /proc fs entry */
288 struct tty_driver *other; /* only used for the PTY driver */
289
290 /*
291 * Pointer to the tty data structures
292 */
293 struct tty_struct **ttys;
294 struct ktermios **termios;
295 struct ktermios **termios_locked;
296 void *driver_state;
297
298 /*
299 * Driver methods
300 */
301
302 const struct tty_operations *ops;
303 struct list_head tty_drivers;
304};