delete_module(2) | System Calls Manual | delete_module(2) |
delete_module - Décharger un module de noyau
Bibliothèque C standard (libc, -lc)
#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).
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.
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).
En cas de succès, 0 est renvoyé. en cas d'échec, -1 est renvoyé et errno se positionné pour indiquer l'erreur.
delete_module() est spécifique à Linux.
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).
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.
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.
create_module(2), init_module(2), query_module(2), lsmod(8), modprobe(8), rmmod(8)
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.
5 février 2023 | Pages du manuel de Linux 6.03 |