Provided by: manpages-fr-dev_4.21.0-2_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.

VERSIONS

       L'appel  système  vmsplice()  est  apparu  dans Linux 2.6.17, la prise en charge de la bibliothèque a été
       ajoutée dans la glibc 2.5.

STANDARDS

       Cet appel système est spécifique à Linux.

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   ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.