.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2012 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH delete_module 2 "5 februarie 2023" "Pagini de manual de Linux 6.03" .SH NUME delete_module \- descarcă un modul din nucleu .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP /* Definiția constantelor \fBO_*\fP */ \fB#include \fP /* Definiția constantelor \fBSYS_*\fP */ \fB#include \fP .PP \fBint syscall(SYS_delete_module, const char *\fP\fIname\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .PP \fINotă\fP: glibc nu oferă o funcție învăluitoare pentru \fBdelete_module\fP(), fiind necesară utilizarea \fBsyscall\fP(2). .SH DESCRIERE Apelul de sistem \fBdelete_module\fP() încearcă să elimine intrarea neutilizată a modulului încărcabil identificat de \fIname\fP. În cazul în care modulul are o funcție \fIexit\fP, atunci funcția respectivă este executată înainte de descărcarea modulului. Argumentul \fIflags\fP este utilizat pentru a modifica comportamentul apelului de sistem, după cum este descris mai jos. Acest apel de sistem necesită privilegii. .PP Îndepărtarea modulelor se încearcă în conformitate cu următoarele reguli: .IP (1) 5 Dacă există alte module încărcate care depind de acest modul (adică se referă la simboluri definite în acesta), atunci apelul eșuează. .IP (2) În caz contrar, dacă numărul de referințe pentru modul (adică numărul de procese care utilizează în prezent modulul) este zero, atunci modulul este descărcat imediat. .IP (3) .\" O_TRUNC == KMOD_REMOVE_FORCE in kmod library .\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library Dacă un modul are un număr de referințe diferit de zero, atunci comportamentul depinde de biții activați în \fIflags\fP. În utilizarea normală (a se vedea NOTE), se specifică întotdeauna fanionul \fBO_NONBLOCK\fP, iar fanionul \fBO_TRUNC\fP poate fi specificat suplimentar. .IP Diferitele combinații pentru \fIflags\fP au următorul efect: .RS .TP \fBflags == O_NONBLOCK\fP Apelul returnează imediat, cu o eroare. .TP \fBflags == (O_NONBLOCK | O_TRUNC)\fP Modulul este descărcat imediat, indiferent dacă are sau nu un număr de referințe diferit de zero. .TP \fB(flags & O_NONBLOCK) == 0\fP Dacă \fIflags\fP nu specifică \fBO_NONBLOCK\fP, au loc următorii pași: .RS .IP \[bu] 3 Modulul este marcat astfel încât să nu fie permise referințe noi. .IP \[bu] În cazul în care numărul de referințe al modulului este diferit de zero, apelantul este plasat într\-o stare de somn neîntrerupt (\fBTASK_UNINTERRUPTIBLE\fP) până când numărul de referințe este zero, moment în care apelul se deblochează. .IP \[bu] Modulul este descărcat în mod obișnuit. .RE .RE .PP Fanionul \fBO_TRUNC\fP are un efect suplimentar asupra regulilor descrise mai sus. În mod implicit, în cazul în care un modul are o funcție \fIinit\fP, dar nu are o funcție \fIexit\fP, atunci încercarea de a elimina modulul eșuează. Cu toate acestea, dacă s\-a specificat \fBO_TRUNC\fP, această cerință este ocolită. .PP Utilizarea fanionului \fBO_TRUNC\fP este periculoasă! Dacă nucleul nu a fost construit cu \fBCONFIG_MODULE_FORCE_UNLOAD\fP, acest fanion este ignorat în tăcere; (în mod normal, \fBCONFIG_MODULE_FORCE_UNLOAD\fP este activat). Utilizarea acestui fanion afectează, „pătează”, nucleul (TAINT_FORCED_RMMOD). .SH "VALOAREA RETURNATĂ" În caz de succes, se returnează zero. În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEBUSY\fP Modulul nu este „viu” (adică este încă în curs de inițializare sau este deja marcat pentru eliminare); sau, modulul are o funcție \fIinit\fP, dar nu are o funcție \fIexit\fP, iar \fBO_TRUNC\fP nu a fost specificat în \fIflags\fP. .TP \fBEFAULT\fP \fIname\fP se referă la o locație din afara spațiului de adrese accesibil procesului. .TP \fBENOENT\fP Nu există niciun modul cu acest nume. .TP \fBEPERM\fP Apelantul nu era privilegiat (nu avea capacitatea \fBCAP_SYS_MODULE\fP) sau descărcarea modulelor este dezactivată (a se vedea \fI/proc/sys/kernel/modules_disabled\fP în \fBproc\fP(5)). .TP \fBEWOULDBLOCK\fP Alte module depind de acest modul; sau, \fBO_NONBLOCK\fP a fost specificat în \fIflags\fP, dar numărul de referințe al acestui modul este diferit de zero și \fBO_TRUNC\fP nu a fost specificat în \fIflags\fP. .SH STANDARDE \fBdelete_module\fP() este specific Linux. .SH NOTE Apelul de sistem \fBdelete_module\fP() 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 \fBsyscall\fP(2). .PP Somnul neîntrerupt care poate apărea dacă \fBO_NONBLOCK\fP este omis din \fIflags\fP este considerat indezirabil, deoarece procesul care doarme este lăsat într\-o stare de nestingherit. Ca și în Linux 3.7, specificarea \fBO_NONBLOCK\fP este opțională, dar în nucleele viitoare este posibil să devină obligatorie. .SS "Linux 2.4 și versiunile anterioare" În Linux 2.4 și versiunile anterioare, apelul de sistem avea un singur argument: .PP \fB int delete_module(const char *\fP\fIname\fP\fB);\fP .PP Dacă \fIname\fP este NULL, toate modulele nefolosite marcate „auto\-clean” (auto\-curățare) sunt eliminate. .PP Unele detalii suplimentare privind diferențele de comportament ale \fBdelete_module\fP() în Linux 2.4 și versiunile anterioare nu sunt explicate în prezent în această pagină de manual. .SH "CONSULTAȚI ȘI" \fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8), \fBmodprobe\fP(8), \fBrmmod\fP(8) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .