Почему номера команд IOCTL должны быть уникальными во всей системе? - PullRequest
0 голосов
/ 10 октября 2019

Я прочитал инструкцию по выбору команд ioctl (из драйвера устройства O'Reilly linux):

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.

Одним из аргументов функции IOCTL (из пространства пользователя) является дескриптор файла. Поэтому, если я вызываю определенное устройство, почему номер команды ioctl должен быть уникальным во всей системе?

1 Ответ

1 голос
/ 10 октября 2019

IOCTL CMD не обязательно должен быть уникальным для всей системы. Он должен быть уникальным для конкретного узла устройства. Но общепринятой практикой является поддержание уникального CMD во всей системе, чтобы избежать ошибок, вызванных введением правильной команды не тому устройству.

Если вы передадите конкретную команду (скажем, Invalid cmd для device-1) не тому устройству-2, которое способно обработать, что ioctl CMD приведет к успеху, вы получите некоторые недопустимые данные вместо ошибки,Чтобы избежать этого сценария, мы используем уникальные CMD для всей системы.

...