Я думаю, что проще и правильнее будет сделать двух ступенчатую инициализацию:
1) запускается модуль
2) модуль создает устройство /dev/ и/или /procfs/
3) программа запускаемая юзером, inittab и т.д. просто пересылает данные из файла в модуль используя /procfs
Таким образом ты не завязываешся на конкретные вызовы ядра, да и отлаживать будет проще.
ne sovsem ponyal chto znachit ne zavyazyvaeshsya na konkretnye vyzovy :)
tebe pokrainey mere nado budet obsluzhivat zaprosy k sozdannomu failu
Hotya soglasen eto dostatochno podrobno opisanno . Sdrugoi storony esli fail nado perechityvat to pridetsya sozdavat svoyu blokirovku hotya ya naverno gonyu dostatochno davno v yadre kovyryalsya i vse pozabyl uzhe :*(
2master: "ne sovsem ponyal chto znachit ne zavyazyvaeshsya na konkretnye vyzovy", ты завязываешся на конретную FS, а если этот самый микрокод расположен на NFS как ты собираешся стартовать и ждать когда эта самая nfs замонтируется? Не случайно модулям не доступны многие вызовы, потому как модуль должен быть быстрым (чтение через procfs это гарантрует) и быть self-contained, т.е. чем меньше завязок на определенные вызовы тем лучше.
Чем открыть файл по его номеру индексного дескриптора?
Забавная задачка возникла. Есть CD, на нем названия
файлов по русски. Win давно снес, а файлы нужно
переписать. Как назло часть названий имеет одинаковое
число букв и видны из Линукса как ?????.
При этом система не видит двойников - название одинаковое,
а размеры и прочее берет от первого по списку.
Мне удалось найти номера индексного дескриптора у двойников,
но "open" работает только с именем файла.
Как открыть файл обращаясь только к его номеру индексного дескриптора?
Так чтобы к имени не было промежуточных обращений?