![]() |
1
5
ioctl实际上并没有在内核中注册,每种类型的类文件对象都有一组不同的ioctl可用。 大多数情况下,它们是使用switch语句实现的。 所以你真正需要做的是:
在实践中,找出哪些ioctl是可用的是非常重要的。许多设备都有一个手册页,其中列出了他们,但其他人没有,名单可能是不完整的。 通常有一个函数的某个地方有一个大的switch语句。然而,有一种“继承”,许多设备在不同的级别上实现了几种不同类型的ioctl。
例如,串行端口在中定义了自己的ioctl http://lxr.linux.no/#linux+v2.6.35/drivers/serial/serial_core.c#L1107 但是,串行端口也有可能在每个驱动程序的基础上定义ioctl,但是由于它们是tty,它们也会响应tty ioctl。 每个子系统的结构不同,因为它们有不同的行为。 |
![]() |
2
2
|
![]() |
3
1
所以做你想做的事情会很困难,因为每个设备都有自己的ioctl命令。 |
![]() |
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
![]() |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
![]() |
Bastien L. · 多Linux Grafana集成 2 年前 |