vmsplice
Section: System Calls (2)
Updated: 4 décembre 2022
Index
Return to Main Contents
NOM
vmsplice - Raccorder des pages utilisateur à un tube ou à partir d'un tube
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <fcntl.h>
ssize_t vmsplice(int fd, const struct iovec *iov,
size_t nr_segs, unsigned int flags);
DESCRIPTION
Si fd est ouvert en écriture, l'appel système vmsplice() projette les
nr_segs segments de mémoire utilisateur décrits par iov dans un
tube. Si fd est ouvert en lecture, l'appel système vmsplice() remplit
des segments de mémoire utilisateur décrits par iov à partir d'un
tube. Le descripteur de fichier fd doit faire référence à un tube.
Le pointeur iov pointe vers un tableau de structures iovec comme
décrit dans iovec(3type).
L'argument flags est un masque binaire 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_F_MOVE de splice(2) peut
effectivement déplacer les pages ; si ce paramètre n'est pas spécifié, un
futur appel à SPLICE_F_MOVE de splice(2) 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 est défini
pour préciser l'erreur.
ERREURS
- EAGAIN
-
SPLICE_F_NONBLOCK était indiqué dans flags, et l'opération pourrait
bloquer.
- EBADF
-
fd n'est pas valable ou ne correspond pas à un tube.
- EINVAL
-
nr_segs est supérieur à IOV_MAX, ou bien la mémoire n'est pas alignée
si SPLICE_F_GIFT est spécifié.
- ENOMEM
-
Plus assez de mémoire.
VERSIONS
L'appel système vmsplice() est apparu dans Linux 2.6.17, la prise en
charge de la bibliothèque a été ajoutée dans la glibc 2.5.
STANDARDS
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éfinie dans
<limits.h>. Actuellement, cette limite est 1024.
vmsplice() prend en charge réellement le raccord véritable uniquement à
partir de la mémoire utilisateur vers un tube. En direction inverse, il
copie vraiment seulement les données dans l'espace utilisateur. Mais cela
fait une interface agréable et symétrique qui permet de construire sur
vmsplice() avec de l'espace pour une amélioration ultérieure de
performance.
VOIR AUSSI
splice(2), tee(2), pipe(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- STANDARDS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 15:51:18 GMT, May 22, 2024