vmsplice(2)

NAVN
vmsplice - splejs brugersider til/fra en datakanal

BIBLIOTEK
C-standardbibliotek (libc, -lc)

SYNOPSIS
#define _GNU_SOURCE         /* Se feature_test_macros(7) */
#include <fcntl.h>

ssize_t vmsplice(int fd, const struct iovec *iov,
                 size_t nr_segs, unsigned int flags);

BESKRIVELSE
Hvis fd åbnes for skrivning så oversætter systemkaldet vmsplice() nr_segs-intervaller for brugerhukommelse beskrevet af iov til en datakanal. Hvis fd er åben for læsning udfylder systemkaldet vmsplice() nr_segs-intervaller for brugerhukommelse beskrevet af iov fra en datakanal. Fildeskriptoren fd skal referere til en datakanal.

Tekstsøgeren iov peger på en tabel af iovec-strukturer som beskrevet i iovec(3type).

Argumentet flags er en bit-maske, der er sammensat af ORing sammen med nul eller flere af de følgende værdier:

SPLICE_F_MOVE
    Ubrugt for vmsplice(); se splice(2).

SPLICE_F_NONBLOCK
    Bloker ikke en I/O; se splice(2) for yderligere detaljer.

SPLICE_F_MORE
    Har i øjeblikket ingen effekt for vmsplice(), men kan blive implementeret i fremtiden; se splice(2).

SPLICE_F_GIFT
    Brugersiderne er gift for kernen. Programmet ændrer måske ikke denne hukommelse nogensinde, eller sidemellemlageret og data på disken kan være forskellige. At give sider i gave til kernen betyder, at en efterfølgende splice(2) SPLICE_F_MOVE med succes kan flytte siderne; hvis dette flag ikke er angivet, så skal en efterfølgende splice(2) SPLICE_F_MOVE kopiere siderne. Data skal være korrekt sidejusteret, både i hukommelse og længde.

RETURVÆRDI
Ved succesfuld fuldførelse returnerer vmsplice() antallet af byte overført til datakanalen. Ved fejl returnerer vmsplice() -1 og errno angives for at indikere fejlen.

FEJL

EAGAIN
    SPLICE_F_NONBLOCK blev angivet i flag, og operationen ville blokere.

EBADF
    fd er enten ikke gyldig, eller refererer ikke til en datakanal.

EINVAL
    nr_segs er større end IOV_MAX; eller hukommelsen er ikke justeret hvis SPLICE_F_GIFT er angivet.

ENOMEM
    Ikke nok hukommelse.

STANDARDER
Linux.

HISTORIK
Linux 2.6.17, glibc 2.5.

NOTER
vmsplice() følger de andre vektoriserede læse/skriv-typefunktioner når det kommer til begrænsninger på antallet af segmenter sendt ind. Denne begrænsning er IOV_MAX som defineret i <limits.h>. I øjeblikket er denne begrænsning 1024.

vmsplice() understøtter korrekt splejsning kun fra brugerhukommelse til en datakanal. I den modsatte retning kopieres bare dataene til brugerrummet. Men dette gør grænsefladen pæn og symmetrisk og gør det muligt at bygge på vmsplice() med plads til fremtidige forbedringer i ydelsen.

SE OGSÅ
splice(2), tee(2), pipe(7)

OVERSÆTTELSE
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.