Driver/tiny_tty/tiny_init()

Last-modified: 2007-09-21 (金) 19:37:19

518 :static int __init tiny_init(void)
519 :{
520 : int retval;
521 : int i;
522 :
523 : /* allocate the tty driver */
524 : tiny_tty_driver = alloc_tty_driver(TINY_TTY_MINORS);
525 : if (!tiny_tty_driver)
526 : return -ENOMEM;
527 :
528 : /* initialize the tty driver */
529 : tiny_tty_driver->owner = THIS_MODULE;
530 : tiny_tty_driver->driver_name = "tiny_tty";
531 : tiny_tty_driver->name = "ttty";
532 : tiny_tty_driver->devfs_name = "tts/ttty%d";
533 : tiny_tty_driver->major = TINY_TTY_MAJOR,
534 : tiny_tty_driver->type = TTY_DRIVER_TYPE_SERIAL,
535 : tiny_tty_driver->subtype = SERIAL_TYPE_NORMAL,
536 : tiny_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS,
537 : tiny_tty_driver->init_termios = tty_std_termios;
538 : tiny_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
539 : tty_set_operations(tiny_tty_driver, &serial_ops);
540 :
541 : /* hack to make the book purty, yet still use these functions in the
542 : * real driver. They really should be set up in the serial_ops
543 : * structure above... */
544 : tiny_tty_driver->read_proc = tiny_read_proc;
545 : tiny_tty_driver->tiocmget = tiny_tiocmget;
546 : tiny_tty_driver->tiocmset = tiny_tiocmset;
547 : tiny_tty_driver->ioctl = tiny_ioctl;
548 :
549 : /* register the tty driver */
550 : retval = tty_register_driver(tiny_tty_driver);
551 : if (retval) {
552 : printk(KERN_ERR "failed to register tiny tty driver");
553 : put_tty_driver(tiny_tty_driver);
554 : return retval;
555 : }
556 :
557 : for (i = 0; i < TINY_TTY_MINORS; ++i)
558 : tty_register_device(tiny_tty_driver, i, NULL);
559 :
560 : printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION);
561 : return retval;
562 :}