#linux #linux-device-driver
#linux #linux-драйвер устройства
Вопрос:
Я создал символьный драйвер Linux, целью которого является предоставление некоторого содержимого по умолчанию со случайностью при определенном смещении. Случайная часть генерируется каждый раз, когда устройство считывается.
Смысл этого в том, чтобы предоставить второму приложению (потребителю) набор символических ссылок на это символьное устройство (генератор), чтобы потребитель мог перебирать их и обрабатывать как обычные файлы с другим содержимым. Проблема в том, что когда потребитель проверяет размер этих файлов, и поскольку они являются символическими ссылками на мой генератор, он думает, что они пусты, и ничего не делает.
Я знаю, что символьное устройство может быть проблемой, потому что на самом деле оно не имеет фиксированной длины, хотя я возвращаю только указанную часть данных.
Мне нужно что-то, что будет имитировать размер файла, или, может быть, мне следует использовать другой подход? Мне интересно, изменит ли что-нибудь реализация этого как блочного устройства.
Комментарии:
1. как приложение-потребитель проверяет размер файла?
2. Вы могли бы реализовать
llseek
файловую операцию, чтобы приложение могло использоватьSEEK_END
для определения размера.llseek
Обработчик файловой операции может быть довольно минимальным. Ему просто нужно вызватьfixed_size_llseek
.3. @yashC:
st_size
метод из Pythonos.stat
. @IanAbbott: Я пробовал это, но безуспешно. Я также пробовал:generic_file_llseek_size
иno_seek_end_llseek_size
.