Man page - vmsplice(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro

Manual

vmsplice

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

vmsplice - соединяет пользовательские страницы памяти с каналом

БИБЛИОТЕКА

Стандартная библиотека языка C ( libc , -lc )

ОБЗОР

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

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

ОПИСАНИЕ

Если fd открыт для записи, то системный вызов vmsplice () отображает nr_segs областей пользовательской памяти, описанных iov , в канал. Если fd открыт для чтения, то системный вызов vmsplice () заполняет nr_segs областей пользовательской памяти, описанных iov , из канала. Файловый дескриптор fd должен указывать на канал.

Указатель iov указывает на массив структур iovec , как описано в iovec (3type).

Аргумент flags представляет собой битовую маску, которая составляется логическим сложением (OR) следующих значений:
SPLICE_F_MOVE

Не используется в vmsplice (); см. splice (2).

SPLICE_F_NONBLOCK

Не блокировать ввод-вывод; подробности в splice (2).

SPLICE_F_MORE

В данный момент никак не влияет при указании в vmsplice (), но это может измениться; см. splice (2).

SPLICE_F_GIFT

Предоставить ядру пользовательские страницы. Приложение, возможно, не изменяло эту память, иначе страничный кэш и данные на диске будут различны. Передача страниц ядру означает, что последующий вызов splice (2) с флагом SPLICE_F_MOVE сможет переместить страницы; если этот флаг не указан, то последующий splice (2) с флагом SPLICE_F_MOVE должен скопировать страницы. Также, данные должны быть выровнены по странице: по адресам памяти и размеру.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении vmsplice () возвращается количество байт, переданных в канал. При ошибке vmsplice () возвращает -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EAGAIN

В указан flags SPLICE_F_NONBLOCK , и операция вызвала бы блокировку.

EBADF

Неправильное значение fd или оно не указывает на канал.

EINVAL

Значение nr_segs больше IOV_MAX ; или, если задан SPLICE_F_GIFT , не выровнена память.

ENOMEM

Не хватает памяти.

СТАНДАРТЫ

Linux.

ИСТОРИЯ

Linux 2.6.17, glibc 2.5.

ПРИМЕЧАНИЯ

Вызов vmsplice () следует другим функциям векторизованного чтения/записи при возникновении ограничений на количество передаваемых сегментов. Это ограничение равно IOV_MAX , определяемое в <limits.h> . Сейчас это значение равно 1024.

Настоящую стыковку vmsplice () поддерживает только для отображения пользовательской памяти в канал. В обратном направлении, в действительности, он просто копирует данные в пользовательское пространство. Но это делает интерфейс приятным и симметричным, и позволяет людям строить на vmsplice () с пространством будущего улучшения производительности.

СМОТРИТЕ ТАКЖЕ

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

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .