Linux tty core 源码分析

Linux tty core 源码分析

ID:37847456

大小:208.50 KB

页数:49页

时间:2019-06-01

Linux tty core 源码分析_第1页
Linux tty core 源码分析_第2页
Linux tty core 源码分析_第3页
Linux tty core 源码分析_第4页
Linux tty core 源码分析_第5页
资源描述:

《Linux tty core 源码分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linuxttycore源码分析[日期:2011-02-08]来源:CSDN 作者:sirzjp本文以linux2.6.27内核为基础,阅读ttycore源码并作注解,自己接触时间不长,希望与爱好者共同分享,错误之处还望指正。linuxttycore是建立在字符设备驱动的基础之上,并为tty类型设备(串口、控制台、虚拟终端)提供一个公用的平台。所以任何一个tty设备驱动的注册都是作为一个字符设备驱动而操作的。下面我们看看代码中是如何处理的:/3/2004jmc:whydothesedevicesexist?///tty核心默认在内核中

2、实现的字符型tty设备驱动staticstructcdevtty_cdev,console_cdev;#ifdefCONFIG_UNIX98_PTYSstaticstructcdevptmx_cdev;#endif#ifdefCONFIG_VTstaticstructcdevvc0_cdev;#endif/ Ok,nowwecaninitializetherestofthettydevicesandcancount onmemoryallocations,interruptsetc.. /staticint__inittty_init

3、(void){//在字符设备模型中加入注册tty_cdev驱动并加入/dev/tty这样的设备 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'tregister/dev/ttydriver"); device_create_drvdata(tty_class,NUL

4、L,MKDEV(TTYAUX_MAJOR,0),NULL,        "tty");//在字符设备模型中加入注册console_cdev驱动并加入/dev/console这样的设备 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'tre

5、gister/dev/consoledriver"); device_create_drvdata(tty_class,NULL,MKDEV(TTYAUX_MAJOR,1),NULL,        "console");//在字符设备模型中加入注册ptmx_cdev驱动并加入/dev/ptmx这样的设备#ifdefCONFIG_UNIX98_PTYS cdev_init(&ptmx_cdev,&ptmx_fops); if(cdev_add(&ptmx_cdev,MKDEV(TTYAUX_MAJOR,2),1)    regis

6、ter_chrdev_region(MKDEV(TTYAUX_MAJOR,2),1,"/dev/ptmx")<0) panic("Couldn'tregister/dev/ptmxdriver"); device_create_drvdata(tty_class,NULL,MKDEV(TTYAUX_MAJOR,2),NULL,"ptmx");#endif//在字符设备模型中加入注册vc0_cdev驱动并加入/dev/tty0这样的设备#ifdefCONFIG_VT cdev_init(&vc0_cdev,&console_fops

7、); if(cdev_add(&vc0_cdev,MKDEV(TTY_MAJOR,0),1)    register_chrdev_region(MKDEV(TTY_MAJOR,0),1,"/dev/vc/0")<0) panic("Couldn'tregister/dev/tty0driver"); device_create_drvdata(tty_class,NULL,MKDEV(TTY_MAJOR,0),NULL,"tty0"); vty_init();//这里暂时不做解释#endif return0;}//上面是本身加入

8、的,也就是我们系统一般都有的设备,而且这几种设备都是指向其他的设备,在tty_open中我们将看到以后都会指向其//他具体的设备。对这几种设备大多数人都存在一定的混淆,这里我就自己的理解解释下:///dev/consol

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。