/dev/tty,/dev/console,/dev/vc/0的初始化

在drivers/char/mem.c中的chr_dev_init->tty_init
int __init tty_init(void)
{
    cdev_init(&tty_cdev, &tty_fops);
    if (cdev_add(&tty_cdev, MKDEV(TTYAUX_MAJOR, 0), 1) ||
        register_chrdev_region(MKDEV(TTYAUX_MAJOR, 0), 1, "/dev/tty") < 0)
        panic("Couldn't register /dev/tty driver\n");
    device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty");

    cdev_init(&console_cdev, &console_fops);
    if (cdev_add(&console_cdev, MKDEV(TTYAUX_MAJOR, 1), 1) ||
        register_chrdev_region(MKDEV(TTYAUX_MAJOR, 1), 1, "/dev/console") < 0)
        panic("Couldn't register /dev/console driver\n");
    consdev = device_create_with_groups(tty_class, NULL,
                        MKDEV(TTYAUX_MAJOR, 1), NULL,
                        cons_dev_groups, "console");
    if (IS_ERR(consdev))
        consdev = NULL;

#ifdef CONFIG_VT
    vty_init(&console_fops);
#endif
    return 0;
}
可以很清楚的看到在tty_init 中定义了/dev/tty和/dev/console 这两个字符设备,如果有定义CONFIG_VT的话,还会调用vty_init,
int __init vty_init(const struct file_operations *console_fops)
{
    cdev_init(&vc0_cdev, console_fops);
    if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) ||
        register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0)
        panic("Couldn't register /dev/tty0 driver\n");
    tty0dev = device_create_with_groups(tty_class, NULL,
                        MKDEV(TTY_MAJOR, 0), NULL,
                        vt_dev_groups, "tty0");

}
在vty_init 中定义了/dev/vc/0 这个字符设备,注意这里的tty0dev,其代表的是/dev/tty0 可见tty0dev只是通过MKDEV(TTY_MAJOR, 0)建立的节点,并不是devfs设备.
其中/dev/tty对应的是tty_fops,/dev/console和/dev/vc/0 对应的是console_fops。



总结一下:/dev/console 是系统控制台,其指向当前激活的tty。tty 属于进程控制台,通过ps -ax 可以看到当前进程用的是哪个tty

只有/dev/console 指向当前活动的tty,而tty0 在图形显示的情况下指向活动的窗口


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值