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¶
- 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, la
glibc le gère depuis la version 2.5.
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)
COLOPHON¶
Cette page fait partie de la publication 3.44 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 à
<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> ».