get_kernel_syms(2)

NUME
get_kernel_syms - recuperează simbolurile exportate de nucleu și module

REZUMAT
#include <linux/module.h>

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

DESCRIERE
Notă: Acest apel de sistem este prezent numai înainte de Linux 2.6.

Dacă table este NULL, get_kernel_syms() returnează numărul de simboluri disponibile pentru consultare. În caz contrar, se completează un tabel de structuri:

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

Simbolurile sunt intercalate cu simboluri magice de forma #numele-modulului, nucleul având un nume gol. Valoarea asociată cu un simbol de această formă este adresa la care este încărcat modulul.

Simbolurile exportate din fiecare modul urmează eticheta modulului magic, iar modulele sunt returnate în ordinea inversă celei în care au fost încărcate.

VALOAREA RETURNATĂ
În caz de succes, se returnează numărul de simboluri copiate în table. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI
Există doar o singură eroare de returnare posibilă:

ENOSYS
    get_kernel_syms() nu este acceptată în această versiune a nucleului.

STANDARDE
Linux.

ISTORIC
Eliminat în Linux 2.6.

Acest apel de sistem învechit nu este admis de glibc. În antetele glibc nu este furnizată nicio declarație, dar, printr-o ciudățenie a istoriei, versiunile glibc anterioare glibc 2.23 au exportat un ABI pentru acest apel de sistem. Prin urmare, pentru a utiliza acest apel de sistem, era suficient să declarați manual interfața în codul dumneavoastră; alternativ, ați putea invoca apelul de sistem utilizând syscall(2).

ERORI
Nu există nicio modalitate de a indica dimensiunea memoriei tampon alocate pentru table. În cazul în care au fost adăugate simboluri în kernel de când programul a consultat dimensiunea tabelului de simboluri, memoria va fi coruptă.

Lungimea numelor de simboluri exportate este limitată la 59 de caractere.

Din cauza acestor limitări, acest apel de sistem este depreciat în favoarea lui query_module(2) (care la rândul său este în prezent depreciat în favoarea altor interfețe descrise pe pagina sa de manual).

CONSULTAȚI ȘI
create_module(2), delete_module(2), init_module(2), query_module(2)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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.