get_kernel_syms - получить экспортируемые символы ядра и модулей
get_kernel_syms(2)
получить экспортируемые символы ядра и модулей
ОБЗОР
#include <linux/module.h>
int get_kernel_syms(struct kernel_sym *table);
ОПИСАНИЕ
Замечание: Данный системный вызов доступен только в ядрах до Linux 2.6.
Если table равно NULL, то get_kernel_syms() возвращает количество
символов доступных для запроса. Иначе таблица заполняется структурами:
struct kernel_sym {
unsigned long value;
char name[60];
};
Символы вида #module-name представляют собой ссылки на
модули. Значение, связанное с таким символом, содержит адрес, по которому
загружен модуль.
К символам, экспортируемым из модуля, добавляется метка модуля, а модули
возвращаются в обратном порядке, в котором были загружены.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается количество символов, скопированных в
table. В случае ошибки возвращается -1, а
errno устанавливается в
соответствующее значение.
ОШИБКИ
Может возвращаться только одна ошибка:
ENOSYS
Вызов get_kernel_syms() не поддерживается в этой версии ядра.
ВЕРСИИ
Данный системный вызов есть только в Linux до версии 2.4; он был удалён в
Linux 2.6.
СООТВЕТСТВИЕ СТАНДАРТАМ
Вызов
get_kernel_syms() есть только в Linux.
ДЕФЕКТЫ
Нет способа указать размер буфера, выделенного для
table. Если символы
были добавлены в ядро после того, как программа запросила размер таблицы
символов, то это вызовет повреждение данных в памяти.
Длина имён экспортируемых символов ограничена 59 знаками.
Из-за этих ограничений вместо данного системного вызова рекомендуется
использовать query_module(2) (который, в настоящее время, тоже устарел и
заменён на другие интерфейсы, перечисленные в конце этой справочной
страницы).