.\" -*- 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 "30 mars 2023" "Pages du manuel de Linux 6.05.01" .SH NOM delete_module \- Décharger un module de noyau .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP /* Definition of \fBO_*\fP constants */ \fB#include \fP /* Definition of \fBSYS_*\fP constants */ \fB#include \fP .PP \fBint syscall(SYS_delete_module, const char *\fP\fIname\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .PP \fINote\fP\ : la glibe ne fournit pas d'enveloppe autour de \fBdelete_module\fP(), nécessitant l'utilisation de \fBsyscall\fP(2). .SH DESCRIPTION L'appel système \fBdelete_module\fP() essaye de supprimer une entrée de module chargeable inutilisée identifiée par \fIname\fP. Si le module à une fonction \fIexit\fP, alors cette fonction est exécutée avant de décharger le module. L'argument \fIflags\fP est utilisé pour modifier le comportement de l'appel système, conformément à la description ci\-dessous. Cet appel système nécessite des droits. .PP La suppression de module est tentée d'après les règles suivantes. .IP (1) 5 Si d'autres modules chargés dépendent de (c'est\-à\-dire font référence aux symboles définis dans) ce module, alors l'appel échoue. .IP (2) Sinon, si le nombre de références pour ce module (c'est\-à\-dire le nombre de processus utilisant actuellement ce module) est nul, alors le module est immédiatement déchargé. .IP (3) .\" O_TRUNC == KMOD_REMOVE_FORCE in kmod library .\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library Si un module a un nombre de références non nul, alors le comportement dépend des bits définis dans \fIflags\fP. En utilisation normale (consultez \fBNOTES\fP), l'attribut \fBO_NONBLOCK\fP est toujours indiqué, et l'attribut \fBO_TRUNC\fP pourrait être aussi indiqué. .IP Les diverses combinaisons de \fIflags\fP ont les effets suivants. .RS .TP \fBflags == O_NONBLOCK\fP L'appel se termine immédiatement, avec une erreur. .TP \fBflags == (O_NONBLOCK | O_TRUNC)\fP Le module est déchargé immédiatement, quelque soit le nombre de références. .TP \fB(flags & O_NONBLOCK) == 0\fP Si \fIflags\fP n'indique pas \fBO_NONBLOCK\fP, les étapes suivantes se succèdent\ : .RS .IP \- 3 le module est marqué de telle sorte qu'aucune nouvelle référence n'est permise\ ; .IP \- si le nombre de références du module est non nul, l'appelant est placé en état de sommeil non interruptible (\fBTASK_UNINTERRUPTIBLE\fP) jusqu'à ce que le nombre de références soit nul, à ce moment l'appel est débloqué\ ; .IP \- le module est déchargé normalement .RE .RE .PP L'attribut \fBO_TRUNC\fP a un effet supplémentaire sur les règles décrites précédemment. Par défaut, si un module a une fonction \fIinit\fP mais pas de fonction \fIexit\fP, essayer de supprimer ce module échouera. Cependant, si \fBO_TRUNC\fP a été indiqué, cette condition est contournée. .PP Utiliser l'attribut \fBO_TRUNC\fP est dangereux. Si le noyau n'a pas été construit avec \fBCONFIG_MODULE_FORCE_UNLOAD\fP, cet attribut est ignoré silencieusement (normalement, \fBCONFIG_MODULE_FORCE_UNLOAD\fP est activé). Utiliser cet attribut corrompt le noyau (TAINT_FORCED_RMMOD). .SH "VALEUR RENVOYÉE" En cas de succès, \fB0\fP est renvoyé. en cas d'échec, \fB\-1\fP est renvoyé et \fIerrno\fP se positionné pour indiquer l'erreur. .SH ERREURS .TP \fBEBUSY\fP Le module n'est pas «\ actif\ » (c'est\-à\-dire qu'il est encore en cours d'initialisation ou déjà marqué pour la suppression), ou le module a une fonction \fIinit\fP mais pas de fonction \fIexit\fP, et \fBO_TRUNC\fP n'a pas été indiqué dans \fIflags\fP. .TP \fBEFAULT\fP \fIname\fP fait référence à un emplacement en dehors de l'espace d'adressage accessible du processus. .TP \fBENOENT\fP Il n'existe aucun module de ce nom. .TP \fBEPERM\fP L'appelant n'avait pas les droits (n'avait pas la capacité \fBCAP_SYS_MODULE\fP), ou le déchargement de module est désactivé (consultez \fI/proc/sys/kernel/modules_disabled\fP dans \fBproc\fP(5)). .TP \fBEWOULDBLOCK\fP D'autres modules dépendent de ce module, ou \fBO_NONBLOCK\fP a été indiqué dans \fIflags\fP, mais le nombre de références est non nul et \fBO_TRUNC\fP n'a pas été indiqué dans \fIflags\fP. .SH STANDARDS Linux. .SH HISTORIQUE L'appel système \fBdelete_module\fP() n'est pas pris en charge par la glibc. Il n'est pas déclaré dans les en\-têtes de la glibc mais, par un caprice de l'histoire, les versions de la glibc antérieures à la glibc\ 2.23 fournissaient une interface binaire pour cet appel système. Ainsi, il suffisait, avant la glibc\ 2.23, de déclarer manuellement l'interface dans votre code pour utiliser cet appel système. Sinon, vous pouvez l'invoquer en utilisant \fBsyscall\fP(2). .SS "Linux 2.4 et antérieurs" Dans Linux\ 2.4 et antérieurs, l'appel système ne prend qu'un argument\ : .PP \fB int delete_module(const char *\fP\fIname\fP\fB);\fP .PP Si \fIname\fP est NULL, tous les modules non utilisés marqués à nettoyer automatiquement sont supprimés. .PP De plus amples précisions sur les différences de comportement de \fBdelete_module\fP() dans Linux\ 2.4 et antérieurs ne sont \fIpas\fP actuellement expliquées dans cette page de manuel. .SH NOTES Le sommeil non interruptible qui peut arriver si \fBO_NONBLOCK\fP est omis de \fIflags\fP est considéré indésirable, parce que le processus dormant est laissé dans un état non tuable. Avec Linux\ 3.7, indiquer \fBO_NONBLOCK\fP est facultatif, mais à l'avenir, ce sera probablement obligatoire. .SH "VOIR AUSSI" \fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8), \fBmodprobe\fP(8), \fBrmmod\fP(8) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier et David Prévot . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .