Это только макросы для определения местоположения некоторых частей кода Linux в специальных областях в конечном исполняемом двоичном файле.Например, __init
(или лучше __attribute__ ((__section__
(".init.text")))
, в который расширяется этот макрос) указывает компилятору специальным образом пометить эту функцию.В конце компоновщик собирает все функции с этой отметкой в конце (или начале) двоичного файла.
Когда ядро запускается, этот код выполняется только один раз (инициализация).После запуска ядро может освободить эту память для повторного использования, и вы увидите сообщение ядра:
Освобождение неиспользуемой памяти ядра: освобождено 108 КБ
Чтобы использовать эту функциювам нужен специальный файл сценария компоновщика, который сообщает компоновщику, где найти все отмеченные функции.