Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       query_module - запросить ядро о различных параметрах, касающихся модулей

СИНТАКСИС

       #include <linux/module.h>

       [[deprecated]] int query_module(const char *name, int which,
                                       void buf[.bufsize], size_t bufsize,
                                       size_t *ret);

ОПИСАНИЕ

       Note: This system call is present only before Linux 2.6.

       query_module()  запрашивает информацию у ядра о загружаемых модулях. Возвращаемая информация помещается в
       буфер, указанный в buf. Вызывающий должен указать размер buf  в  bufsize.  Смысл  и  формат  возвращаемой
       информации  зависит  от операции, задаваемой в which. Для некоторых операций требуется заполнить name для
       указания на уже загруженный модуль, для некоторых в name можно указать NULL, что указывает  на  получения
       свойства ядра.

       В which можно указать следующие значения:

       0      Завершается  успешно, если ядро поддерживает query_module(). Используется для проверки доступности
              системного вызова.

       QM_MODULES
              Возвращает имена всех загруженных модулей. Возвращаемый буфер содержит  последовательность  строк,
              оканчивающихся null; в ret указано количество модулей.

       QM_DEPS
              Возвращает  имена  всех  модулей,  используемых  указанным  модулем.  Возвращаемый  буфер содержит
              последовательность строк, оканчивающихся null; в ret указано количество модулей.

       QM_REFS
              Возвращает имена всех модулей, использующих указанный модуль. Это обратная по отношению к  QM_DEPS
              операция. Возвращаемый буфер содержит последовательность строк, оканчивающихся null; в ret указано
              количество модулей.

       QM_SYMBOLS
              Возвращает  символы  и  значения,  экспортируемые  ядром или указанным модулем. Возвращаемый буфер
              содержит массив структур следующего формата:

                  struct module_symbol {
                      unsigned long value;
                      unsigned long name;
                  };

              завершаемого строками, оканчивающимися null. Значение  name  содержит  смещение  строки  в  знаках
              относительно начала buf; в ret указано количество символов.

       QM_INFO
              Возвращает различную информацию об указанном модуле. Формат результата в буфере:

                  struct module_info {
                      unsigned long address;
                      unsigned long size;
                      unsigned long flags;
                  };

              где  address  —  это  адрес ядра, где располагается модуль, size — размер модуля в байтах, flags —
              маска MOD_RUNNING, MOD_AUTOCLEAN и т. п., показывающая текущее  состояние  модуля  (смотрите  файл
              исходного кода ядра Linux include/linux/module.h). В ret указан размер структуры module_info.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On success, zero is returned.  On error, -1 is returned and errno is set to indicate the error.

ОШИБКИ

       EFAULT Одно из значений в name, buf или ret находится вне доступного программного адресного пространства.

       EINVAL Неправильное  значение  which; name равно NULL (указывающее "параметры ядра"), но оно не разрешено
              для указанного значения which.

       ENOENT Модуль с именем, указанным в name, не существует.

       ENOSPC Указанный размер буфера слишком мал. В ret возвращается минимальный необходимый размер.

       ENOSYS query_module()  is not supported in this version of the kernel (e.g., Linux 2.6 or later).

ВЕРСИИ

       This system call is present only up until Linux 2.4; it was removed in Linux 2.6.

СТАНДАРТЫ

       query_module() есть только в Linux.

ЗАМЕЧАНИЯ

       Некоторую информацию, которая была ранее доступна через query_module(), можно получить из  /proc/modules,
       /proc/kallsyms и файлов из каталога /sys/modules.

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

СМ. ТАКЖЕ

       create_module(2), delete_module(2), get_kernel_syms(2), init_module(2), lsmod(8), modinfo(8)

ПЕРЕВОД

       Русский перевод этой страницы руководства  был  сделан  Artyom  Kunyov  <artkun@guitarplayer.ru>,  Azamat
       Hackimov   <azamat.hackimov@gmail.com>,   Konstantin   Shvaykovskiy  <kot.shv@gmail.com>  и  Yuri  Kozlov
       <yuray@komyakino.ru>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное  письмо
       на man-pages-ru-talks@lists.sourceforge.net.

Linux man-pages 6.03                            4 декабря 2022 г.                                query_module(2)