2006年12月20日星期三

TTY的read从何而来?(beta)

最近几天都在看tty_io.c,基本上明白了tty的大概组成,也就是tty_driver,tty_ldisc,tty_termios,tty_driver这么几个部分。它们之间的关系也基本清楚,可是一直没有细看tty的write,read等操作从何而来?深入到代码中去,原来是这样的: tty_read调用ld->read,而ld->read是指向read_chan的函数指针,其中read_chan是在N_TTY等不同的链路规则中分别定义的,它实际上也就是对copy_to_user的调用。这里我是这样理解的,对于不用链路规则中的read,它们的本质都是对于buffer的copy_to_user,它们的区别在于什么时候,怎样调用copy_to_user;而buffer中的数据是有设备的具体驱动来维护的,联想到一个链路规则适用于一类设备,那么就是说,这些设备对于buffer的操作都是类似的?我只是猜想,还不能确定;但是它们肯定不会迥异。假如我的猜想正确的话,那么tty是面向用户的对设备的抽象,而tty_ldisc是面向tty的对设备的抽象。除了这个猜想,还有一个不明确的地方,tty_driver干什么,是不是说,tty_driver是对于tty_write这一层次函数的组合,感觉不太必要啊,不应该是这样的吧,恩,明天再明确一下

没有评论: