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.65 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> ».