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