get_kernel_syms(2)

НАИМЕНОВАНИЕ
get_kernel_syms - получить экспортируемые символы ядра и модулей

ОБЗОР
#include <linux/module.h>

[[deprecated]] int get_kernel_syms(struct kernel_sym *table);

ОПИСАНИЕ
Note: This system call is present only before Linux 2.6.

Если table равно NULL, то get_kernel_syms() возвращает количество символов доступных для запроса. Иначе таблица заполняется структурами:

    struct kernel_sym {
        unsigned long value;
        char          name[60];
    };

Символы вида #module-name представляют собой ссылки на модули. Значение, связанное с таким символом, содержит адрес, по которому загружен модуль.

К символам, экспортируемым из модуля, добавляется метка модуля, а модули возвращаются в обратном порядке, в котором были загружены.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
On success, returns the number of symbols copied to table. On error, -1 is returned and errno is set to indicate the error.

ОШИБКИ
Может возвращаться только одна ошибка:

ENOSYS
    Вызов get_kernel_syms() не поддерживается в этой версии ядра.

СТАНДАРТЫ
Linux.

ИСТОРИЯ
Удалён в Linux 2.6.

Устаревший системный вызов, не поддерживается glibc. В заголовках glibc не поддерживается, но, по странности истории, версии glibc до glibc 2.23 экспортировали ABI для этого системного вызова. Поэтому, чтобы получить данный системный вызов достаточно вручную объявить код интерфейса или же можно вызвать его через syscall(2).

ОШИБКИ
Нет способа указать размер буфера, выделенного для table. Если символы были добавлены в ядро после того, как программа запросила размер таблицы символов, то это вызовет повреждение данных в памяти.

Длина имён экспортируемых символов ограничена 59 знаками.

Из-за этих ограничений вместо данного системного вызова рекомендуется использовать query_module(2) (который, в настоящее время, тоже устарел и заменён на другие интерфейсы, перечисленные в конце этой справочной страницы).

СМОТРИТЕ ТАКЖЕ
create_module(2), delete_module(2), init_module(2), query_module(2)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).