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