当前位置:嗨网首页>书籍在线阅读

12-tty驱动ioctl函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.5.4 tty驱动ioctl函数

当用户在tty设备节点上进行ioctl()调用时,tty_operations中的ioctl()函数会被tty核心调用。如果tty驱动不知道如何处理传递给它的IOCTL值,它返回–ENOIOCTLCMD,之后tty核心会执行一个通用的操作。

驱动中常见的需处理的I/O控制命令包括TIOCSERGETLSR(获得这个tty设备的线路状态寄存器LSR的值)、TIOCGSERIAL(获得串口线信息)、TIOCMIWAIT(等待MSR改变)、TIOCGICOUNT(获得中断计数)等。代码清单14.12给出了tty驱动程序ioctl()函数的范例。

代码清单14.12 tty驱动程序ioctl()函数范例

1 static int xxx_ioctl(struct tty_struct tty, struct file filp, unsigned int

2 cmd, unsigned long arg)

3 {

4 struct xxx_tty *info = tty->driver_data;

5 ...

6 / 处理各种命令 /

7 switch (cmd){

8 case TIOCGSERIAL:

9 ...

10 case TIOCSSERIAL:

11 ...

12 case TIOCSERCONFIG:

13 ...

14 case TIOCMIWAIT:

15 ...

16 case TIOCGICOUNT:

17 ...

18 case TIOCSERGETLSR:

19 ...

20 }

21 ...

22 }