Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

       delete_module - Décharger un module de noyau

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <fcntl.h>            /* Definition of O_* constants */
       #include <sys/syscall.h>      /* Definition of SYS_* constants */
       #include <unistd.h>

       int syscall(SYS_delete_module, const char *name, unsigned int flags);

       Note  :  la  glibe  ne  fournit  pas  d'enveloppe autour de delete_module(), nécessitant l'utilisation de
       syscall(2).

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 positionné pour indiquer
       l'erreur.

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.

STANDARDS

       Linux.

HISTORIQUE

       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  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 syscall(2).

   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.

NOTES

       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.

VOIR AUSSI

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

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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                   delete_module(2)