пытаюсь переместить данные из буфера в пространстве ядра в жесткий
диск без необходимости каких-либо дополнительных копий из буфера ядра в
пользовательские буферы или любые другие буферы ядра. Любые идеи / предложения будут
самый полезный.
Вариант использования - это, в основном, драйвер демультиплексора, который собирает данные в
буфер deux в пространстве ядра, и этот буфер должен быть очищен
периодически копируя содержимое в раздел FUSE на
диск. По мере заполнения буфера пользовательский процесс получает сигнал, который затем
определяет номера секторов на диске, содержимое которого необходимо скопировать
к.
Я надеялся преобразовать вышеприведенный буфер ядра demux в адрес пользователя
выделите место и выполните системный вызов write для устройства с необработанными разделами. Но
из того, что я вижу, эти данные кэшируются ядром на его
путь к драйверу жесткого диска. И поэтому я предполагаю, что включает в себя
дополнительные копии ядром Linux.
На данный момент мне интересно, есть ли другой механизм, чтобы сделать это
без привлечения дополнительных копий ядром. Я понимаю, что это
необычный сценарий использования для не встроенных сред, но я бы
ценим любые отзывы о возможных вариантах.
Кстати - я пытался использовать O_DIRECT при открытии необработанного раздела, но
последующий вызов записи завершается неудачно, если передаваемый буфер является
mmapped buffer.
Thanx!