В системе x86 у меня есть модуль ядра Linux («модуль-наблюдатель»), который получает уведомление от ядра каждый раз, когда загружается определенный модуль ядра («цель»). Почти любой модуль ядра может быть целью. Я использую это в системе инструментов, над которой работаю.
Когда модуль-наблюдатель обрабатывает такое уведомление, может быть по какой-то причине удобно, если бы наблюдатель знал адреса секций ELF загруженного целевого модуля. Любые идеи, как эта информация может быть получена в пространстве ядра?
Конечно, я мог бы, вероятно, получить содержимое соответствующих файлов в /sys/module/<target_name>/sections/
в пользовательском пространстве, как только цель будет загружена, а затем каким-то образом передать эти данные в модуль наблюдателя, но это слишком неуклюже. Я хотел бы найти способ получить эту информацию непосредственно в пространстве ядра.
Насколько я видел в исходниках загрузчика модулей, он не хранит адреса разделов в struct module
, просто создает для разделов файлы sysfs. Может быть, можно как-то найти объекты ядра, соответствующие этим файлам, и прочитать нужные данные из этих объектов? Или, возможно, использовать какой-то другой подход?
struct module
(полеmkobj.kobj
), участвует в представлении модуля в sysfs. Я буду копаться в этом дальше, когда у меня будет время. Можно получить доступ к атрибутам, содержащим имена и адреса разделов, используя этот kobject в качестве отправной точки. - person Eugene   schedule 23.10.2011