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