table of contents
query_module(2) | System Calls Manual | query_module(2) |
NUME¶
query_module - interoghează nucleul pentru diverse lucruri referitoare la module
SINOPSIS¶
#include <linux/module.h>
[[depreciat]] int query_module(const char *name, int which, void buf[.bufsize], size_t bufsize, size_t *ret);
DESCRIERE¶
Notă: Acest apel de sistem este prezent numai înainte de Linux 2.6.
query_module() solicită informații de la nucleu despre modulele încărcabile. Informațiile returnate sunt plasate în memoria tampon indicată de buf. Apelantul trebuie să precizeze dimensiunea lui buf în bufsize. Natura și formatul exact al informațiilor returnate depind de operația specificată de which. Unele operații necesită ca name să identifice un modul încărcat în mod curent, altele permit ca name să fie NULL, indicând nucleul propriu-zis.
Următoarele valori pot fi specificate în which:
- 0
- Returnează succes, dacă nucleul acceptă query_module(). Utilizată pentru a verifica disponibilitatea apelului de sistem.
- QM_MODULES
- Returnează numele tuturor modulelor încărcate. Memoria tampon returnată constă dintr-o secvență de șiruri cu terminație nulă; ret este stabilit la numărul de module.
- QM_DEPS
- Returnează numele tuturor modulelor utilizate de modulul indicat. Memoria tampon returnată constă dintr-o secvență cu terminație nulă; ret este stabilit la numărul de module.
- QM_REFS
- Returnează numele tuturor modulelor care utilizează modulul indicat. Acesta este inversul lui QM_DEPS. Memoria tampon returnată constă dintr-o secvență cu terminație nulă; ret este stabilit la numărul de module.
- QM_SYMBOLS
- Returnează simbolurile și valorile exportate de nucleu sau de modulul indicat. Memoria tampon returnată este o matrice de structuri de forma următoare
-
struct module_symbol {
unsigned long value;
unsigned long name; };
- urmată de șiruri de caractere cu terminație nulă. Valoarea lui name este decalajul de caractere al șirului de caractere în raport cu începutul lui buf; ret este stabilit la numărul de simboluri.
- QM_INFO
- Returnează diverse informații despre modulul indicat. Formatul memoriei tampon de ieșire este:
-
struct module_info {
unsigned long address;
unsigned long size;
unsigned long flags; };
- unde address este adresa nucleului la care se află modulul, size este dimensiunea modulului în octeți, iar flags este o mască de MOD_RUNNING, MOD_AUTOCLEAN și așa mai departe, care indică starea curentă a modulului (a se vedea fișierul sursă al nucleului Linux include/linux/module.h). ret este stabilit la dimensiunea structurii module_info.
VALOAREA RETURNATö
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.
ERORI-IEȘIRE¶
- EFAULT
- Cel puțin unul dintre name, buf sau ret se afla în afara spațiului de adrese accesibil programului.
- EINVAL
- which nevalid; sau name este NULL (indicând „nucleul”), dar acest lucru nu este permis cu valoarea specificată pentru which.
- ENOENT
- Nu există niciun modul cu acest nume name.
- ENOSPC
- Dimensiunea memoriei tampon furnizate a fost prea mică. ret este stabilit la dimensiunea minimă necesară.
- ENOSYS
- query_module() nu este compatibil cu această versiune a nucleului (de exemplu, Linux 2.6 sau o versiune ulterioară).
STANDARDE¶
Linux.
VERSIUNI¶
Eliminat în Linux 2.6.
Unele dintre informațiile care erau disponibile anterior prin query_module() pot fi obținute din /proc/modules, /proc/kallsyms și din fișierele din directorul /sys/module.
Apelul de sistem query_module() nu este acceptat de glibc. În anteturile glibc nu este furnizată nicio declarație, dar, printr-o ciudățenie a istoriei, glibc exportă un ABI pentru acest apel de sistem. Prin urmare, pentru a utiliza acest apel de sistem, este suficient să declarați manual interfața în codul dumneavoastră; alternativ, puteți invoca apelul de sistem utilizând syscall(2).
CONSULTAȚI ȘI¶
create_module(2), delete_module(2), get_kernel_syms(2), init_module(2), lsmod(8), modinfo(8)
TRADUCERE¶
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
2 mai 2024 | Pagini de manual Linux (nepublicate) |