【发布时间】:2016-04-04 22:28:58
【问题描述】:
我一直在阅读作为内核模块实现的驱动程序,并且对系统调用的 CMD 参数感到困惑。似乎系统调用的 CMD 参数在其他信息中编码了设备的主要编号。这是为什么?这些信息是绝对必要的吗?
假设我以“echo 5 > /dev/mytestdevice”的形式对我的设备执行写入操作。我没有指定主设备号,因此我相信内核已经有办法将设备与其内核模块相关联。如果是这种情况,为什么我需要在对设备的 ioctl 调用中提供该信息(因为我将 fd 作为第一个参数传递给设备)?
总结我的问题是:-
- 当我执行“echo 5 > /dev/mytestdevice”时,内核如何找到该设备对应的驱动程序?
- 为什么将主编号作为参数传递给 ioctl 调用?
【问题讨论】:
标签: linux linux-kernel ioctl