.\" -*- coding: UTF-8 -*- .\" Copyright 2006, Jens Axboe .\" Copyright 2006, Michael Kerrisk .\" 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 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم vmsplice \- وصل صفحات المستخدم من/إلى أنبوب .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#define _GNU_SOURCE\fP /* انظر 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 الوصف .\" 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 إذا كان \fIfd\fP مفتوحًا للكتابة، فإن استدعاء النظام \fBvmsplice\fP() يربط \fInr_segs\fP نطاقًا من ذاكرة المستخدم الموصوفة بواسطة \fIiov\fP في أنبوب. إذا كان \fIfd\fP مفتوحًا للقراءة، فإن استدعاء النظام \fBvmsplice\fP() يملأ \fInr_segs\fP نطاقًا من ذاكرة المستخدم الموصوفة بواسطة \fIiov\fP من أنبوب. يجب أن يشير واصف الملف \fIfd\fP إلى أنبوب. .P يشير المؤشر \fIiov\fP إلى مصفوفة من بنى \fIiovec\fP كما هو موصوف في \fBiovec\fP(3type). .P المعامل \fIflags\fP هو قناع بتات (bit mask) يتكون من دمج صفر أو أكثر من القيم التالية باستخدام عملية OR المنطقية: .TP \fBSPLICE_F_MOVE\fP غير مستخدم لـ \fBvmsplice\fP()؛ انظر \fBsplice\fP(2). .TP \fBSPLICE_F_NONBLOCK\fP .\" Not used for vmsplice .\" May be in the future -- therefore EAGAIN لا تعيق الإدخال/الإخراج؛ انظر \fBsplice\fP(2) لمزيد من التفاصيل. .TP \fBSPLICE_F_MORE\fP ليس له تأثير حاليًا على \fBvmsplice\fP()، ولكن قد يُنفذ في المستقبل؛ انظر \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. صفحات المستخدم هي هدية للنواة. لا يجوز للتطبيق تعديل هذه الذاكرة أبدًا، وإلا فقد تختلف خبيئة الصفحة والبيانات على القرص. إهداء الصفحات للنواة يعني أن \fBsplice\fP(2) لاحقًا مع \fBSPLICE_F_MOVE\fP يمكنه نقل الصفحات بنجاح؛ إذا لم يُحدد هذا العلم، فإن \fBsplice\fP(2) لاحقًا مع \fBSPLICE_F_MOVE\fP يجب أن ينسخ الصفحات. يجب أيضًا أن تكون البيانات محاذاة للصفحة بشكل صحيح، سواء في الذاكرة أو الطول. .SH "قيمة الإرجاع" عند الإكمال بنجاح، يُرجع \fBvmsplice\fP() عدد البايتات المنقولة إلى الأنبوب. عند الخطأ، يُرجع \fBvmsplice\fP() \-1 ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEAGAIN\fP حُدد \fBSPLICE_F_NONBLOCK\fP في \fIflags\fP، وستؤدي العملية إلى الحظر. .TP \fBEBADF\fP \fIfd\fP إما غير صالح، أو لا يشير إلى أنبوب. .TP \fBEINVAL\fP \fInr_segs\fP أكبر من \fBIOV_MAX\fP؛ أو الذاكرة غير محاذاة إذا ضُبط \fBSPLICE_F_GIFT\fP. .TP \fBENOMEM\fP نفدت الذاكرة. .SH المعايير لينكس. .SH التاريخ لينكس 2.6.17، glibc 2.5. .SH ملاحظات .\" UIO_MAXIOV in kernel source يتبع \fBvmsplice\fP() دوال القراءة/الكتابة المتجهة الأخرى فيما يتعلق بالقيود على عدد المقاطع الممررة. هذا الحد هو \fBIOV_MAX\fP كما هو معرف في \fI\fP. حاليًا، هذا الحد هو 1024. .P .\" commit 6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7 يدعم \fBvmsplice\fP() حقًا الوصل الحقيقي فقط من ذاكرة المستخدم إلى أنبوب. في الاتجاه المعاكس، ينسخ البيانات فقط إلى مساحة المستخدم. لكن هذا يجعل الواجهة لطيفة ومتناظرة ويمكّن الأشخاص من البناء على \fBvmsplice\fP() مع مجال للتحسين المستقبلي في الأداء. .SH "انظر أيضًا" \fBsplice\fP(2), \fBtee\fP(2), \fBpipe\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .