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

NOM

       vmsplice - Raccorder des pages utilisateur à un tube ou à partir d'un tube

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <fcntl.h>

       ssize_t vmsplice(int fd, const struct iovec *iov,
                        size_t nr_segs, unsigned int flags);

DESCRIPTION

       Si  fd  est  ouvert  en  écriture,  l'appel  système  vmsplice() projette les nr_segs segments de mémoire
       utilisateur décrits par iov dans un tube. Si fd est ouvert en lecture, l'appel système vmsplice() remplit
       des segments de mémoire utilisateur décrits par iov à partir d'un tube. Le descripteur de fichier fd doit
       faire référence à un tube.

       Le pointeur iov pointe vers un tableau de structures iovec comme décrit dans iovec(3type).

       L'argument flags est un masque binaire constitué par un OU binaire entre une  ou  plusieurs  des  valeurs
       suivantes :

       SPLICE_F_MOVE
              Non utilisé pour vmsplice() ; consultez splice(2).

       SPLICE_F_NONBLOCK
              Ne pas bloquer pendant les entrées-sorties ; consultez splice(2) pour plus de détails.

       SPLICE_F_MORE
              N'a  pas  d'effet  pour vmsplice() actuellement, mais pourrait être implémenté un jour ; consultez
              splice(2).

       SPLICE_F_GIFT
              Les pages utilisateur sont offertes au noyau. L'application ne pourra plus jamais  modifier  cette
              mémoire,  sans  quoi  le  cache  de  pages  et  les  données  stockées  sur disque pourraient être
              différentes. Offrir des pages au noyau signifie qu'un futur appel  à  SPLICE_F_MOVE  de  splice(2)
              peut  effectivement  déplacer  les  pages ;  si  ce paramètre n'est pas spécifié, un futur appel à
              SPLICE_F_MOVE de  splice(2)  doit  copier  les  pages.  Les  données  doivent  par  ailleurs  être
              correctement alignées sur des frontières de pages, que ce soit en mémoire ou en taille.

VALEUR RENVOYÉE

       S'il  réussit, vmsplice() renvoie le nombre d'octets transférés dans le tube. En cas d'erreur, vmsplice()
       renvoie -1 et errno est défini pour préciser l'erreur.

ERREURS

       EAGAIN SPLICE_F_NONBLOCK était indiqué dans flags, et l'opération pourrait bloquer.

       EBADF  fd n'est pas valable ou ne correspond pas à un tube.

       EINVAL nr_segs est supérieur à IOV_MAX, ou bien  la  mémoire  n'est  pas  alignée  si  SPLICE_F_GIFT  est
              spécifié.

       ENOMEM Plus assez de mémoire.

STANDARDS

       Linux.

HISTORIQUE

       Linux 2.6.17, glibc 2.5.

NOTES

       vmsplice()  suit  les  conventions des autres fonctions vectorielles de type read/write quant aux limites
       sur le nombre de segments qui peuvent être passés. Cette limite  est  IOV_MAX  définie  dans  <limits.h>.
       Actuellement, cette limite est 1024.

       vmsplice()  prend en charge réellement le raccord véritable uniquement à partir de la mémoire utilisateur
       vers un tube. En direction inverse, il copie vraiment seulement les données  dans  l'espace  utilisateur.
       Mais  cela  fait  une  interface  agréable  et symétrique qui permet de construire sur vmsplice() avec de
       l'espace pour une amélioration ultérieure de performance.

VOIR AUSSI

       splice(2), tee(2), pipe(7)

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>,    David     Prévot
       <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       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                                        vmsplice(2)