Man page - vmsplice(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro

Manual

vmsplice

NAZWA
BIBLIOTEKA
SKŁADNIA
OPIS
WARTOŚĆ ZWRACANA
BŁĘDY
STANDARDY
HISTORIA
UWAGI
ZOBACZ TAKŻE
TŁUMACZENIE

NAZWA

vmsplice - przenosi strony użytkownika do/z potoku

BIBLIOTEKA

Standardowa biblioteka C ( libc , -lc )

SKŁADNIA

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

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

OPIS

Jeśli fd jest otwarty do zapisu, wywołanie systemowe vmsplice () przypisuje przedziały nr_segs pamięci użytkownika opisane przez iov do potoku. Jeśli fd jest otwarty do odczytu, wywołanie systemowe vmsplice () wypełnia przedziały nr_segs pamięci użytkownika opisane przez iov z potoku. Deskryptor pliku fd musi odnosić się do potoku.

Wskaźnik iov prowadzi do struktury iovec , opisanej w iovec (3type).

Argument flags jest maską bitową tworzoną jako suma logiczna (OR) zera lub większej liczby następujących wartości:
SPLICE_F_MOVE

Nieużywane w vmsplice (); zob. splice (2).

SPLICE_F_NONBLOCK

Nie blokuje wejścia/wyjścia; więcej informacji w podręczniku splice (2).

SPLICE_F_MORE

Obecnie nie wpływa na vmsplice (), lecz może być zaimplementowane w przyszłości; zob. splice (2).

SPLICE_F_GIFT

Strony użytkownika są darowane jądru. Aplikacja nigdy nie może modyfikować tej pamięci, w przeciwnym przypadku bufor strony i dane na dysku mogą się różnić. Darowanie stron jądru oznacza, że kolejne wywołanie splice (2) ze znacznikiem SPLICE_F_MOVE może pomyślnie przesunąć strony; jeśli nie poda się niniejszego znacznika, to kolejne splice (2) z SPLICE_F_MOVE musi skopiować strony. Dane muszą być poprawnie wyrównane, zarówno w pamięci jak i co do długości.

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu vmsplice () zwraca liczbę bajtów przeniesionych do potoku. W przypadku błędu, vmsplice () zwraca -1 i ustawia errno , wskazując błąd.

BŁĘDY

EAGAIN

We flags podano SPLICE_F_NONBLOCK , a operacja spowodowałaby blokowanie.

EBADF

fd jest nieprawidłowy albo nie odnosi się do potoku.

EINVAL

nr_segs jest większy niż IOV_MAX ; albo nie wyrównano pamięci, jeśli ustawiono SPLICE_F_GIFT .

ENOMEM

Brak pamięci.

STANDARDY

Linux.

HISTORIA

Linux 2.6.17, glibc 2.5.

UWAGI

vmsplice () jest objęty ograniczeniami liczby przekazywanych segmentów, jakie obowiązują inne zwektoryzowane funkcje odczytu/zapisu. Limit ten wynosi IOV_MAX i jest zdefiniowany w <limits.h> . Obecnie wynosi 1024.

vmsplice () tak naprawdę obsługuje prawdziwą operację splice tylko w kierunku od pamięci użytkownika do potoku. W przeciwnym kierunku faktycznie ma miejsce po prostu kopiowanie danych do przestrzeni użytkownika. Jednak dzięki temu interfejs jest symetryczny i pozwala na korzystanie z vmsplice () z możliwością poprawienia wydajności w przyszłości.

ZOBACZ TAKŻE

splice (2), tee (2), pipe (7)

TŁUMACZENIE

Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net .