VMSPLICE
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 28 avril 2006
Index
Menu principal
NOM
vmsplice - Copier des pages utilisateur dans un tube
SYNOPSIS
#define _GNU_SOURCE
#include <fcntl.h>
#include <sys/uio.h>
long 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
telles qu'elles sont 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 un masque de bits constitué par un OU binaire entre zéro
ou plusieurs des valeurs suivantes :
- SPLICE_F_MOVE
-
Inutilisé pour
vmsplice() ;
voir
splice(2).
- SPLICE_F_NONBLOCK
-
Ne pas bloquer sur les entrées-sorties ; voir
splice(2)
pour plus de détails.
- SPLICE_F_MORE
-
Actuellement sans effet pour
vmsplice(),
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 les modifier
sinon le cache de pages pourrait être différent des données du disque.
Offrir ces pages au noyau signifie qu'un appel ultérieur à
splice(2)
SPLICE_F_MOVE
peut effectivement déplacer les pages ;
si cet attribut n'est pas spécifié, un appel ultérieur à
splice(2)
SPLICE_F_MOVE
doit copier les pages.
De plus, les données doivent ê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 vers le tube.
En cas d'erreur,
vmsplice()
renvoie -1 et
errno
contient le code d'erreur.
ERREURS
- EBADF
-
fd
n'est pas valide ou ne fait pas référence à 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 positionné.
- ENOMEM
-
Pas assez de mémoire.
VERSIONS
L'appel système
vmsplice()
est apparu pour la première fois dans Linux 2.6.17.
CONFORMITÉ
Cet appel système est spécifique à Linux.
NOTES
vmsplice()
suit les conventions des autres fonctions vectorisées
de type lecture/écriture concernant
les limitations sur le nombre de segments pouvant être passés.
Cette limite est
IOV_MAX
telle que définie dans
<limits.h>.
Au moment où cette page a été rédigée, cette limite était 1024.
VOIR AUSSI
splice(2),
tee(2),
feature_test_macros(7)
TRADUCTION
Ce document est une traduction réalisée par Alain Portal
<aportal AT univ-montp2 DOT fr> le 24 octobre 2007
et révisée le 29 décembre 2007.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 2 vmsplice ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 23 juin 2008