get_kernel_syms(2) System Calls Manual get_kernel_syms(2)

get_kernel_syms - recuperează simbolurile exportate de nucleu și module

#include <linux/module.h>
[[depreciat]] int get_kernel_syms(struct kernel_sym *table);

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.

Î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-IEȘIRE

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

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

Linux.

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).

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).

create_module(2), delete_module(2), init_module(2), query_module(2)

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.

31 octombrie 2023 Pagini de manual de Linux 6.06