Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       delete_module - Décharger un module de noyau

SYNOPSIS

       int delete_module(const char *name, int flags);

       Remarque : cet appel système n'est pas déclaré par les en-têtes de la glibc ; consultez la
       section NOTES.

DESCRIPTION

       L'appel système delete_module() essaye  de  supprimer  une  entrée  de  module  chargeable
       inutilisée identifiée par name. Si le module à une fonction exit, alors cette fonction est
       exécutée avant de décharger le module. L'argument  flags  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.

       La suppression de module est tentée d'après les règles suivantes.

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

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

       3.  Si un module a un nombre de références non nul, alors le comportement dépend des  bits
           définis  dans  flags.  En utilisation normale (consultez NOTES), l'attribut O_NONBLOCK
           est toujours indiqué, et l'attribut O_TRUNC pourrait être aussi indiqué.

           Les diverses combinaisons de flags ont les effets suivants.

           flags == O_NONBLOCK
                  L'appel se termine immédiatement, avec une erreur.

           flags == (O_NONBLOCK | O_TRUNC)
                  Le module est déchargé immédiatement, quelque soit le nombre de références.

           (flags & O_NONBLOCK) == 0
                  Si flags n'indique pas O_NONBLOCK, les étapes suivantes se succèdent :

                  –  le module est marqué de  telle  sorte  qu'aucune  nouvelle  référence  n'est
                     permise ;

                  –  si  le  nombre  de références du module est non nul, l'appelant est placé en
                     état de sommeil non interruptible (TASK_UNINTERRUPTIBLE) jusqu'à ce  que  le
                     nombre de références soit nul, à ce moment l'appel est débloqué ;

                  –  le module est déchargé normalement

       L'attribut  O_TRUNC  a  un  effet supplémentaire sur les règles décrites précédemment. Par
       défaut, si un module a une fonction init mais pas de fonction exit, essayer  de  supprimer
       ce module échouera. Cependant, si O_TRUNC a été indiqué, cette condition est contournée.

       Utiliser  l'attribut  O_TRUNC  est  dangereux.  Si  le  noyau  n'a  pas été construit avec
       CONFIG_MODULE_FORCE_UNLOAD,  cet  attribut  est   ignoré   silencieusement   (normalement,
       CONFIG_MODULE_FORCE_UNLOAD   est   activé).   Utiliser  cet  attribut  corrompt  le  noyau
       (TAINT_FORCED_RMMOD).

VALEUR RENVOYÉE

       En cas de succès, 0 est renvoyé. en cas d'échec, -1 est renvoyé et  errno  se  remplit  en
       conséquence.

ERREURS

       EBUSY  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
              init mais pas de fonction exit, et O_TRUNC n'a pas été indiqué dans flags.

       EFAULT name  fait  référence à un emplacement en dehors de l'espace d'adressage accessible
              du processus.

       ENOENT Il n'existe aucun module de ce nom.

       EPERM  L'appelant n'avait pas les droits (n'avait pas la capacité CAP_SYS_MODULE),  ou  le
              déchargement  de  module est désactivé (consultez /proc/sys/kernel/modules_disabled
              dans proc(5)).

       EWOULDBLOCK
              D'autres modules dépendent de ce module, ou O_NONBLOCK a été  indiqué  dans  flags,
              mais le nombre de références est non nul et O_TRUNC n'a pas été indiqué dans flags.

CONFORMITÉ

       delete_module() est spécifique à Linux.

NOTES

       L'appel  système  delete_module()  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
       glibc  antérieures  à 2.23  fournissaient  une  interface  binaire pour cet appel système.
       Ainsi, avant glibc 2.23, il suffit de déclarer manuellement l'interface  dans  votre  code
       pour utiliser cet appel système. Sinon, vous pouvez l'invoquer en utilisant syscall(2).

       Le  sommeil  non  interruptible  qui  peut  arriver  si  O_NONBLOCK  est omis de flags est
       considéré indésirable, parce que le processus dormant est laissé dans un état non  tuable.
       Avec  Linux 3.7, indiquer O_NONBLOCK est facultatif, mais à l'avenir, ce sera probablement
       obligatoire.

   Linux 2.4 et antérieurs
       Dans Linux 2.4 et antérieurs, l'appel système ne prend qu'un argument :

        int delete_module(const char *name);

       Si name est NULL, tous les modules non utilisés marqués à  nettoyer  automatiquement  sont
       supprimés.

       De  plus  amples  précisions  sur  les différences de comportement de delete_module() dans
       Linux 2.4 et antérieurs ne sont pas actuellement expliquées dans cette page de manuel.

VOIR AUSSI

       create_module(2), init_module(2), query_module(2), lsmod(8), modprobe(8), rmmod(8)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à debian-l10n-french@lists.debian.org ⟨⟩.