При каких условиях ядро linux игнорирует ioctl вызов из пространства пользователя?
Почему происходит игнорирование ядром пользовательского ioctl запроса при работе через конфигурационный нод 0xff? Хотя на нем устройство корректно открывается и закрывается. При работе через другие ноды 0x1, 0x0, ... проблем не возникает.
Чего мне выдаст strace такого, что отсутствует в ответе errno? Уходит и приходит все верно. Проблема в том, почему вызов игнорируется ядром при открытии через конфигурационный нод.
Kamikadze1024: зачем вы начали новую ветку и отвечаете сами себе?
> существуют т.н. файлы - ноды
файлы, они все -- ноды. Вы говорите о файле устройства.
> Чего мне выдаст strace такого, что отсутствует в ответе errno?
И запрос и ответ.
> вызов игнорируется ядром
Не ядром, а вашим драйвером, наверно?
jcmvbkbc: Обработчик ioctl вызова вообще не вызывается и я не могу понять причины этого. Не знаю, с какого места искать. Поведение отличается при открытии через разные ноды. Использовать strace сейчас крайне проблематично.
> Обработчик ioctl вызова вообще не вызывается
Давайте по порядку. Драйвер ваш? Открытие файлов он сам обслуживает? Файловые операции сам назначает? Смотрите туда сначала.
Да, это поделка фирмы Plx. Константы ioctl тоже описаны товарищами из Plx. Вызовы ioctl проходят нормально, если устройство открыто через 0,1 ноды. Если оно открыто через 0xff нод, то обработчик ioctl просто не вызывается, а пользовательскому процессу возвращается -1 и errno содержит "ioctl". Ситуация схожа с www.linux.org.ru/forum/development/9765803