vmsplice(2) System Calls Manual vmsplice(2) NOM vmsplice - Raccorder des pages utilisateur a un tube ou a partir d'un tube BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #define _GNU_SOURCE /* Consultez feature_test_macros(7) */ #include ssize_t vmsplice(int fd, const struct iovec *iov, size_t nr_segs, unsigned int flags); DESCRIPTION Si fd est ouvert en ecriture, l'appel systeme vmsplice() projette les nr_segs segments de memoire utilisateur decrits par iov dans un tube. Si fd est ouvert en lecture, l'appel systeme vmsplice() remplit des segments de memoire utilisateur decrits par iov a partir d'un tube. Le descripteur de fichier fd doit faire reference a un tube. Le pointeur iov pointe vers un tableau de structures iovec comme decrit dans iovec(3type). L'argument flags est un masque binaire constitue par un OU binaire entre une ou plusieurs des valeurs suivantes : SPLICE_F_MOVE Non utilise pour vmsplice() ; consultez splice(2). SPLICE_F_NONBLOCK Ne pas bloquer pendant les entrees-sorties ; consultez splice(2) pour plus de details. SPLICE_F_MORE N'a pas d'effet pour vmsplice() actuellement, mais pourrait etre implemente un jour ; consultez splice(2). SPLICE_F_GIFT Les pages utilisateur sont offertes au noyau. L'application ne pourra plus jamais modifier cette memoire, sans quoi le cache de pages et les donnees stockees sur disque pourraient etre differentes. Offrir des pages au noyau signifie qu'un futur appel a SPLICE_F_MOVE de splice(2) peut effectivement deplacer les pages ; si ce parametre n'est pas specifie, un futur appel a SPLICE_F_MOVE de splice(2) doit copier les pages. Les donnees doivent par ailleurs etre correctement alignees sur des frontieres de pages, que ce soit en memoire ou en taille. VALEUR RENVOYEE S'il reussit, vmsplice() renvoie le nombre d'octets transferes dans le tube. En cas d'erreur, vmsplice() renvoie -1 et errno est defini pour preciser l'erreur. ERREURS EAGAIN SPLICE_F_NONBLOCK etait indique dans flags, et l'operation pourrait bloquer. EBADF fd n'est pas valable ou ne correspond pas a un tube. EINVAL nr_segs est superieur a IOV_MAX, ou bien la memoire n'est pas alignee si SPLICE_F_GIFT est specifie. ENOMEM Plus assez de memoire. 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 etre passes. Cette limite est IOV_MAX definie dans . Actuellement, cette limite est 1024. vmsplice() prend en charge reellement le raccord veritable uniquement a partir de la memoire utilisateur vers un tube. En direction inverse, il copie vraiment seulement les donnees dans l'espace utilisateur. Mais cela fait une interface agreable et symetrique qui permet de construire sur vmsplice() avec de l'espace pour une amelioration ulterieure de performance. VOIR AUSSI splice(2), tee(2), pipe(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 vmsplice(2)