Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       vmsplice - splice user pages to/from a pipe

SYNOPSIS

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

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

DESCRIPTION

       If  fd  is  opened  for  writing,  the vmsplice()  system call maps nr_segs ranges of user
       memory described by iov into a pipe. If fd is opened for reading, the  vmsplice()   system
       call fills nr_segs ranges of user memory described by iov from a pipe. The file descriptor
       fd must refer to a pipe.

       Le pointeur iov pointe vers un tableau de structures iovec définies dans <sys/uio.h> :

           struct iovec {
               void  *iov_base;        /* Starting address */
               size_t iov_len;         /* Number of bytes */
           };

       L'argument flags est 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
              The user pages are a gift to the kernel. The application may not modify this memory
              ever, otherwise the page cache and on-disk data may differ. Gifting  pages  to  the
              kernel  means  that  a subsequent splice(2) SPLICE_F_MOVE can successfully move the
              pages; if this flag is not specified, then a  subsequent  splice(2)   SPLICE_F_MOVE
              must  copy  the  pages. Data must also be properly page aligned, both in memory and
              length.

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 contient le code d'erreur.

ERREURS

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

       EBADF  fd est invalide ou ne correspond pas à un tube.

       EINVAL nr_segs is greater than IOV_MAX; or memory not aligned if SPLICE_F_GIFT set.

       ENOMEM Plus assez de mémoire.

VERSIONS

       L'appel  système  vmsplice()  est  apparu  dans  Linux 2.6.17,  la glibc le gère depuis la
       version 2.5.

CONFORMITÉ

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

NOTES

       vmsplice()  follows the other vectorized  read/write  type  functions  when  it  comes  to
       limitations on the number of segments being passed in. This limit is IOV_MAX as defined in
       <limits.h>. Currently, this limit is 1024.

       vmsplice()  really supports true splicing only from user memory to a pipe. In the opposite
       direction,  it  actually  just  copies the data to userspace. But this makes the interface
       nice and symmetric and enables people  to  build  on  vmsplice()   with  room  for  future
       improvement in performance.

VOIR AUSSI

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

COLOPHON

       Cette  page  fait partie de la publication 5.10 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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  ⟨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 ⟨⟩.