Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 为什么IOCTL命令编号在整个系统中应该是唯一的?_Linux Kernel_Linux Device Driver_Ioctl - Fatal编程技术网

Linux kernel 为什么IOCTL命令编号在整个系统中应该是唯一的?

Linux kernel 为什么IOCTL命令编号在整个系统中应该是唯一的?,linux-kernel,linux-device-driver,ioctl,Linux Kernel,Linux Device Driver,Ioctl,我阅读了选择ioctl命令的说明(来自O'Reilly linux设备驱动程序): IOCTL函数的参数之一(来自用户空间)是文件描述符。 因此,如果我调用特定设备,为什么ioctl命令号在整个系统中应该是唯一的?ioctl CMD不一定在整个系统中都是唯一的。对于特定的设备节点,它应该是唯一的。但通常的做法是在整个系统中维护唯一的CMD,以避免由于向错误的设备发出正确的命令而导致的错误 如果您将特定命令(假设设备-1的无效cmd)传递到能够处理ioctl cmd的错误设备-2,则将获得一些无效

我阅读了选择ioctl命令的说明(来自O'Reilly linux设备驱动程序):

IOCTL函数的参数之一(来自用户空间)是文件描述符。
因此,如果我调用特定设备,为什么ioctl命令号在整个系统中应该是唯一的?

ioctl CMD不一定在整个系统中都是唯一的。对于特定的设备节点,它应该是唯一的。但通常的做法是在整个系统中维护唯一的CMD,以避免由于向错误的设备发出正确的命令而导致的错误

如果您将特定命令(假设设备-1的无效cmd)传递到能够处理ioctl cmd的错误设备-2,则将获得一些无效数据,而不是错误。为了避免这种情况,我们在整个系统中使用惟一的CMD

The ioctl command numbers should be unique across the system in order to prevent 
errors caused by issuing the right command to the wrong device.