Не вдаваясь в подробности , почему , я ищу чистый (насколько это возможно) способ замены функций ядра и системных вызовов из загружаемого модуля. Моя первоначальная идея состояла в том, чтобы написать некоторый код для переопределения некоторых функций, который бы взял исходную функцию (возможно, если это возможно, , вызовет функцию), а затем добавил часть своего собственного кода. Ключевым моментом является то, что функция, которую я пишу, должна иметь имя исходной функции, поэтому другой код при попытке получить к ней доступ вместо моего.
Я могу легко (сравнительно) сделать это непосредственно в ядре, просто добавив свой код в соответствующие функции, но мне было интересно, знает ли кто-нибудь немного магии С, которая не обязательно обязательно ужасное ядро ( или C) практика кодирования, которая могла бы достичь того же результата.
Мысли о #defines и typedefs приходят на ум, но я не могу разобраться с этим в моей голове.
Вкратце: кто-нибудь знает способ эффективного переопределения функций в ядре Linux (из модуля)?
РЕДАКТИРОВАТЬ: Так как это было задано, я, по сути, хочу регистрировать определенные функции (создание / удаление каталогов и т. Д.) изнутри ядра , но для здравомыслия, загружаемый модуль, кажется, имеет смысл вместо того, чтобы писать большой патч для кода ядра и перекомпилировать при каждом изменении. Минимальное количество добавляемого кода в ядро это нормально, но я хочу перенести большую часть работы в модуль.