Man page - delete_module(2)

Packages contains this manual

Available languages:

en fr pl ja ro

Manual

delete_module

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
Linux 2.4 et antérieurs
NOTES
VOIR AUSSI
TRADUCTION

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 .