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

Linux                                           15 septembre 2017                               DELETE_MODULE(2)