04 Jan 17 10:46, you wrote to Rinat H Sadretdinow:
RHS>> Опять хорошо. А если я сделаю возможность выполнять модули Linux RHS>> под Windows, но не буду применять это в коммерческом и закрытом RHS>> софте, а выложу это как "паблик домен" в широкое использование, RHS>> с исходными текстами?
EP> Если ты сделаешь это не используя код ядра -- без проблем.
Я и не собирался использовать код ядра. То есть для эмуляции сиколлов, используемых ядерными модулями, я вообще не планировал использовать ни кусочка из кода ядра. То есть вместо kzalloc использовать GetMem/FillChar(0) (никакого C/C++, чистый Delphi), вместо kfree использовать FreeMem (опять Delphi и никакого C/C++), вместо submit_bio Read и Write из TStream (опять Delphi) и т.д. А вот сами модули брать готовые из ядра. Как я уже говорил: "Зато в документации мелким-мелким шрифтом написано что-то вроде "Для обеспечения работы такой-то функции медленно и печально идёте на ftp://ftp.kernel.org, скачиваете оттуда linux-x.y.tar.xz и далее blah-blah-blah, полученные файлы foo.ko и bar.ko копируете в папку "%ProgramFiles%\КлёваяПрограмма\Plugins", linux-x.y.tar.xz и blah-blah-blah можно удалить".
EP> Hо "не используя" требует уточнения. Было бы лучше даже не смотреть EP> потому что хотя копипасты конечно нет, но просмотр наложит отпечаток и EP> потом будешь объяснять чем копипаста отличается от EP> копипасты-по-памяти.
Я их и не собирался смотреть. Я знаю что должно делать kzalloc и планировал сделать это *без* просмотра чего там в ядре делает конкретно kzalloc, моя чистая имплементация аналогичной функции на Delphi чтобы линуксовый модуль получил именно то, чего он ожидает.
EP> С трудом верится что это можно реализовать по одной только EP> документации. Потому что -- франшиза.
Повторюсь: я знаю что функция kzalloc должна возвращать обнулённый блок памяти, submit_bio должна читать/писать в устройство (в моём случае в стрим) и т.п. Кто мне мешает сделать аналогичные функции не смотря в код ядра и не беря оттуда ни строки? IMHO никто. Так чего я нарушаю делая *собственную* среду в которой линуксовые модули будут чувствовать себя как дома? IMHO ничего. В чём я неправ, делая *собственную* среду, не используя ни капли ядерного кода, а просто эмулируя/виртуализируя ядерные функции?