Provided by: manpages-ru-dev_4.27.0-1_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 (примечание): Данный системный вызов доступен только в ядрах до 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.

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

       При  успешном  выполнении  возвращается  ноль. В случае ошибки возвращается -1, а errno устанавливается в
       соответствующее значение ошибки.

ОШИБКИ

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

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

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

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

       ENOSYS Функция  query_module()  не  поддерживается  в  этой  версии ядра (например, в Linux 2.6 или более
              поздних версиях).

СТАНДАРТЫ

       Linux.

ВЕРСИИ

       Удалён в Linux 2.6.

       Некоторую информацию, которая была ранее доступна через 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> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                  query_module(2)