- 根据目标设备文件节点inode->i_rdev(device)初始化局部变量 struct tty_driver* driver; int noctty;
- init_dev函数初始化设备
- 建立从当前进程到目标设备的连接 flip->private_data=tty; 同时,把指向此设备的file结构挂入tty_struct结构中的队列tty_files file_move(flip,&tty->tty_files);
- 通过函数指针调用与链路规则相关的open操作
- 修改当前进程current 和 tty 相关信息
init_dev大致流程:
- check wherher we're reopening an exiting tty
- 否,alloc_tty_struct() 分配空间
- 数据结构初始化 initialize_tty_struct(tty);
- 若想打开pty,则还需要建立o_tty(从设备),初始化之并建立主从设备之间的相互连接
- 在建立好设备以后,还需要设置若干termios结构,不太明白怎么回事(termios在某种程度上可以看作ldisc的补充,定义对字符的处理和波特率,不过这儿初始化的时候太多的判断了,不太清楚)
- 使用相应的链路规则open tty和o_tty(假如存在的话)
- 最后是一些错误处理的代码(不在流程里了)
没有评论:
发表评论