table of contents
VMSPLICE(2) | Manuel du programmeur Linux | VMSPLICE(2) |
NOM¶
vmsplice - Raccorder des pages utilisateur à un tube
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¶
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() ; 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(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¶
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() 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¶
COLOPHON¶
Cette page fait partie de la publication 3.52 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
4 mai 2012 | Linux |