.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH vmsplice 2 "17 maja 2025 r." "Linux man\-pages 6.15" .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 \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\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 . .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 .