Символическая ссылка на символьное устройство в Linux, имитирующая обычный файл

#linux #linux-device-driver

#linux #linux-драйвер устройства

Вопрос:

Я создал символьный драйвер Linux, целью которого является предоставление некоторого содержимого по умолчанию со случайностью при определенном смещении. Случайная часть генерируется каждый раз, когда устройство считывается.

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

Я знаю, что символьное устройство может быть проблемой, потому что на самом деле оно не имеет фиксированной длины, хотя я возвращаю только указанную часть данных.

Мне нужно что-то, что будет имитировать размер файла, или, может быть, мне следует использовать другой подход? Мне интересно, изменит ли что-нибудь реализация этого как блочного устройства.

Комментарии:

1. как приложение-потребитель проверяет размер файла?

2. Вы могли бы реализовать llseek файловую операцию, чтобы приложение могло использовать SEEK_END для определения размера. llseek Обработчик файловой операции может быть довольно минимальным. Ему просто нужно вызвать fixed_size_llseek .

3. @yashC: st_size метод из Python os.stat . @IanAbbott: Я пробовал это, но безуспешно. Я также пробовал: generic_file_llseek_size и no_seek_end_llseek_size .