Loading

NOM

       vmsplice - Raccorder des pages utilisateur à un tube

SYNOPSIS

       #define _GNU_SOURCE
       #include <fcntl.h>
       #include <sys/uio.h>

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

       L’appel  système  vmsplice()  projette  les nr_segs segments de mémoire
       utilisateur décrits par iov dans un tube. Le descripteur de fichier  fd
       doit faire référence à un tube.

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

           struct iovec {
               void *iov_base;           /* Adresse de début */
               size_t iov_len;           /* Nombre d’octets  */
           };

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

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

       SPLICE_F_NONBLOCK  Ne  pas  bloquer  pendant les entrées-sorties ; voir
                          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 ; voir 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(2)   SPLICE_F_MOVE   peut   effectivement
                          déplacer  les  pages ;  si  ce  paramètre  n’est pas
                          spécifié, un futur appel à  splice(2)  SPLICE_F_MOVE
                          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 contient le code
       d’erreur.

ERREURS

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

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

       ENOMEM Plus de mémoire disponible.

VERSIONS

       L’appel système vmsplice() est apparu dans Linux 2.6.17.

CONFORMITÉ

       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éfini dans <limits.h>. Lorsque
       cette page a été écrite, cette limite était 1024.

VOIR AUSSI

       splice(2), tee(2), feature_test_macros(7)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite et est maintenue par Julien Cristau
       <julien.cristau@ens-lyon.org> et l’équipe francophone de traduction  de
       Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».