.\" -*- coding: UTF-8 -*-
.\" This manpage is Copyright (C) 2006 Jens Axboe
.\" and Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH vmsplice 2 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
vmsplice \- przenosi strony użytkownika do/z potoku
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#define _GNU_SOURCE\fP         /* Patrz feature_test_macros(7) */
\fB#include <fcntl.h>\fP
.P
\fBssize_t vmsplice(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB,\fP
\fB                 size_t \fP\fInr_segs\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP
.fi
.\" Return type was long before glibc 2.7
.SH OPIS
.\" Linus: vmsplice() system call to basically do a "write to
.\" the buffer", but using the reference counting and VM traversal
.\" to actually fill the buffer. This means that the user needs to
.\" be careful not to reuse the user-space buffer it spliced into
.\" the kernel-space one (contrast this to "write()", which copies
.\" the actual data, and you can thus reuse the buffer immediately
.\" after a successful write), but that is often easy to do.
.\" Since Linux 2.6.23
.\" commit 6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7
Jeśli \fIfd\fP jest otwarty do zapisu, wywołanie systemowe \fBvmsplice\fP()
przypisuje przedziały \fInr_segs\fP pamięci użytkownika opisane przez \fIiov\fP do
potoku. Jeśli \fIfd\fP jest otwarty do odczytu, wywołanie systemowe
\fBvmsplice\fP() wypełnia przedziały \fInr_segs\fP pamięci użytkownika opisane
przez \fIiov\fP z potoku. Deskryptor pliku \fIfd\fP musi odnosić się do potoku.
.P
Wskaźnik \fIiov\fP prowadzi do struktury \fIiovec\fP, opisanej w \fBiovec\fP(3type).
.P
Argument \fIflags\fP jest maską bitową tworzoną jako suma logiczna (OR) zera
lub większej liczby następujących wartości:
.TP 
\fBSPLICE_F_MOVE\fP
Nieużywane w \fBvmsplice\fP(); zob. \fBsplice\fP(2).
.TP 
\fBSPLICE_F_NONBLOCK\fP
.\" Not used for vmsplice
.\" May be in the future -- therefore EAGAIN
Nie blokuje wejścia/wyjścia; więcej informacji w podręczniku \fBsplice\fP(2).
.TP 
\fBSPLICE_F_MORE\fP
Obecnie nie wpływa na \fBvmsplice\fP(), lecz może być zaimplementowane w
przyszłości; zob. \fBsplice\fP(2).
.TP 
\fBSPLICE_F_GIFT\fP
.\" FIXME . Explain the following line in a little more detail:
.\" FIXME
.\" It looks like the page-alignment requirement went away with
.\" commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d
.\"
.\" .... if we expect to later SPLICE_F_MOVE to the cache.
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 \fBsplice\fP(2) ze
znacznikiem \fBSPLICE_F_MOVE\fP może pomyślnie przesunąć strony; jeśli nie poda
się niniejszego znacznika, to kolejne \fBsplice\fP(2) z \fBSPLICE_F_MOVE\fP musi
skopiować strony. Dane muszą być poprawnie wyrównane, zarówno w pamięci jak
i co do długości.
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu \fBvmsplice\fP() zwraca liczbę bajtów przeniesionych
do potoku. W przypadku błędu, \fBvmsplice\fP() zwraca \-1 i ustawia \fIerrno\fP,
wskazując błąd.
.SH BŁĘDY
.TP 
\fBEAGAIN\fP
We \fIflags\fP podano \fBSPLICE_F_NONBLOCK\fP, a operacja spowodowałaby
blokowanie.
.TP 
\fBEBADF\fP
\fIfd\fP jest nieprawidłowy albo nie odnosi się do potoku.
.TP 
\fBEINVAL\fP
\fInr_segs\fP jest większy niż \fBIOV_MAX\fP; albo nie wyrównano pamięci, jeśli
ustawiono \fBSPLICE_F_GIFT\fP.
.TP 
\fBENOMEM\fP
Brak pamięci.
.SH STANDARDY
Linux.
.SH HISTORIA
Linux 2.6.17, glibc 2.5.
.SH UWAGI
.\" UIO_MAXIOV in kernel source
\fBvmsplice\fP() jest objęty ograniczeniami liczby przekazywanych segmentów,
jakie obowiązują inne zwektoryzowane funkcje odczytu/zapisu. Limit ten
wynosi \fBIOV_MAX\fP i jest zdefiniowany w \fI<limits.h>\fP. Obecnie
wynosi 1024.
.P
.\" commit 6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7
\fBvmsplice\fP() 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
\fBvmsplice\fP() z możliwością poprawienia wydajności w przyszłości.
.SH "ZOBACZ TAKŻE"
\fBsplice\fP(2), \fBtee\fP(2), \fBpipe\fP(7)
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
