| delete_module(2) | System Calls Manual | delete_module(2) |
delete_module - descarcă un modul din nucleu
Biblioteca C standard (libc, -lc)
#include <fcntl.h> /* Definiția constantelor O_* */ #include <sys/syscall.h> /* Definiția constantelor SYS_* */ #include <unistd.h>
int syscall(SYS_delete_module, const char *name, unsigned int flags);
Notă: glibc nu oferă o funcție învăluitoare pentru delete_module(), fiind necesară utilizarea syscall(2).
Apelul de sistem delete_module() încearcă să elimine intrarea neutilizată a modulului încărcabil identificat de name. În cazul în care modulul are o funcție exit, atunci funcția respectivă este executată înainte de descărcarea modulului. Argumentul flags este utilizat pentru a modifica comportamentul apelului de sistem, după cum este descris mai jos. Acest apel de sistem necesită privilegii.
Îndepărtarea modulelor se încearcă în conformitate cu următoarele reguli:
Fanionul O_TRUNC are un efect suplimentar asupra regulilor descrise mai sus. În mod implicit, în cazul în care un modul are o funcție init, dar nu are o funcție exit, atunci încercarea de a elimina modulul eșuează. Cu toate acestea, dacă s-a specificat O_TRUNC, această cerință este ocolită.
Utilizarea fanionului O_TRUNC este periculoasă! Dacă nucleul nu a fost construit cu CONFIG_MODULE_FORCE_UNLOAD, acest fanion este ignorat în tăcere; (în mod normal, CONFIG_MODULE_FORCE_UNLOAD este activat). Utilizarea acestui fanion afectează, „pătează”, nucleul (TAINT_FORCED_RMMOD).
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.
Linux.
Apelul de sistem delete_module() nu este acceptat 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, este suficient (înainte de glibc 2.23) să declarați manual interfața în codul dumneavoastră; alternativ, puteți invoca apelul de sistem utilizând syscall(2).
În Linux 2.4 și versiunile anterioare, apelul de sistem avea un singur argument:
int delete_module(const char *name);
Dacă name este NULL, toate modulele nefolosite marcate „auto-clean” (auto-curățare) sunt eliminate.
Unele detalii suplimentare privind diferențele de comportament ale delete_module() în Linux 2.4 și versiunile anterioare nu sunt explicate în prezent în această pagină de manual.
Somnul neîntrerupt care poate apărea dacă O_NONBLOCK este omis din flags este considerat indezirabil, deoarece procesul care doarme este lăsat într-o stare de nestingherit. Ca și în Linux 3.7, specificarea O_NONBLOCK este opțională, dar în nucleele viitoare este posibil să devină obligatorie.
create_module(2), init_module(2), query_module(2), lsmod(8), modprobe(8), rmmod(8)
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 de Linux 6.9.1 |