.\" -*- coding: UTF-8 -*- .\" Copyright 2003, Abhijit Menon-Sen .\" Copyright 2010-2017, 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 posix_fadvise 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم posix_fadvise \- الإعلان المسبق عن نمط وصول لبيانات الملف .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint posix_fadvise(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIsize\fP\fB, int \fP\fIadvice\fP\fB);\fP .fi .P .ad l .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBposix_fadvise\fP(): .nf _POSIX_C_SOURCE >= 200112L .fi .SH الوصف يمكن للبرامج استخدام \fBposix_fadvise\fP() للإعلان عن نية الوصول إلى بيانات الملف بنمط معين في المستقبل، مما يسمح للنواة بإجراء التحسينات المناسبة. .P ينطبق \fIadvice\fP على منطقة (ليست موجودة بالضرورة) تبدأ من \fIoffset\fP وتمتد لـ \fIsize\fP بايت (أو حتى نهاية الملف إذا كان \fIsize\fP يساوي 0) داخل الملف المشار إليه بواسطة \fIfd\fP. \fIadvice\fP غير ملزم؛ إنه يشكل فقط توقعًا نيابة عن التطبيق. .P تشمل القيم المسموح بها لـ \fIadvice\fP: .TP \fBPOSIX_FADV_NORMAL\fP يشير إلى أن التطبيق ليس لديه نصيحة لتقديمها حول نمط الوصول الخاص به للبيانات المحددة. إذا لم يتم تقديم أي نصيحة لملف مفتوح، فهذا هو الافتراض المبدئي. .TP \fBPOSIX_FADV_SEQUENTIAL\fP يتوقع التطبيق الوصول إلى البيانات المحددة بشكل تسلسلي (مع قراءة الإزاحات الأقل قبل الأعلى). .TP \fBPOSIX_FADV_RANDOM\fP سيتم الوصول إلى البيانات المحددة بترتيب عشوائي. .TP \fBPOSIX_FADV_NOREUSE\fP سيتم الوصول إلى البيانات المحددة مرة واحدة فقط. .IP قبل Linux 2.6.18، كان لـ \fBPOSIX_FADV_NOREUSE\fP نفس دلالات \fBPOSIX_FADV_WILLNEED\fP. كان هذا على الأرجح خطأ؛ من Linux 2.6.18 حتى Linux 6.2 كانت هذه العلامة عملية فارغة. منذ Linux 6.3، تشير \fBPOSIX_FADV_NOREUSE\fP إلى أن خوارزمية استبدال الصفحات في النواة يمكنها تجاهل الوصول إلى خبيئة الصفحات المعينة المميزة بهذه العلامة. هذا مفيد، على سبيل المثال، أثناء بث الملفات الكبيرة. .TP \fBPOSIX_FADV_WILLNEED\fP سيتم الوصول إلى البيانات المحددة في المستقبل القريب. .IP يبدأ \fBPOSIX_FADV_WILLNEED\fP قراءة غير محظورة للمنطقة المحددة في خبيئة الصفحات. قد تقلل النواة كمية البيانات المقروءة اعتمادًا على حمل الذاكرة الافتراضية. (عادةً ما يتم تلبية بضعة ميغابايتات بالكامل، ونادرًا ما يكون المزيد مفيدًا.) .TP \fBPOSIX_FADV_DONTNEED\fP لن يتم الوصول إلى البيانات المحددة في المستقبل القريب. .IP يحاول \fBPOSIX_FADV_DONTNEED\fP تحرير الصفحات المخبأة المرتبطة بالمنطقة المحددة. هذا مفيد، على سبيل المثال، أثناء بث الملفات الكبيرة. قد يطلب البرنامج دوريًا من النواة تحرير البيانات المخبأة التي تم استخدامها بالفعل، بحيث لا يتم التخلص من الصفحات المخبأة الأكثر فائدة بدلاً من ذلك. .IP يتم تجاهل طلبات التخلص من الصفحات الجزئية. من الأفضل الحفاظ على البيانات المطلوبة بدلاً من التخلص من البيانات غير المطلوبة. إذا كان التطبيق يتطلب أن يتم النظر في التخلص من البيانات، فيجب أن يكون \fIoffset\fP و \fIsize\fP محاذيين للصفحة. .IP \fIقد\fP تحاول التطبيق كتابة الصفحات المتسخة في المنطقة المحددة، لكن هذا غير مضمون. لن يتم تحرير أي صفحات متسخة غير مكتوبة. إذا رغب التطبيق في ضمان تحرير الصفحات المتسخة، فيجب عليه استدعاء \fBfsync\fP(2) أو \fBfdatasync\fP(2) أولاً. .SH "قيمة الإرجاع" عند النجاح، يتم إرجاع صفر. عند الخطأ، يتم إرجاع رقم خطأ. .SH الأخطاء .TP \fBEBADF\fP وسيطة \fIfd\fP لم تكن واصف ملف صالح. .TP \fBEINVAL\fP تم تحديد قيمة غير صالحة لـ \fIadvice\fP. .TP \fBESPIPE\fP .\" commit 87ba81dba431232548ce29d5d224115d0c2355ac يشير واصف الملف المحدد إلى أنبوب أو FIFO. (\fBESPIPE\fP هو الخطأ المحدد بواسطة POSIX، لكن قبل Linux 2.6.16، أعاد Linux \fBEINVAL\fP في هذه الحالة.) .SH الإصدارات تحت Linux، يضبط \fBPOSIX_FADV_NORMAL\fP نافذة القراءة المسبقة على الحجم المبدئي لجهاز الدعم؛ يضاعف \fBPOSIX_FADV_SEQUENTIAL\fP هذا الحجم، ويعطل \fBPOSIX_FADV_RANDOM\fP القراءة المسبقة للملف بالكامل. لا يعدل \fBPOSIX_FADV_NOREUSE\fP حجم نافذة القراءة المسبقة. تؤثر هذه التغييرات على الملف بأكمله، وليس فقط المنطقة المحددة (لكن مقابض الملفات المفتوحة الأخرى لنفس الملف لا تتأثر). .SS "الاختلافات بين مكتبة C والنواة" اسم دالة الغلاف في مكتبة C هو \fBposix_fadvise\fP(). يُسمى استدعاء النظام الأساسي \fBfadvise64\fP() (أو، على بعض البنى، \fBfadvise64_64\fP())؛ الفرق بينهما هو أن استدعاء النظام الأول يفترض أن نوع وسيطة \fIsize\fP هو \fIsize_t\fP، بينما يتوقع الثاني \fIloff_t\fP هناك. .SS "متغيرات خاصة بالبنية" تتطلب بعض البنى محاذاة الوسائط ذات 64 بت في زوج مناسب من السجلات (انظر \fBsyscall\fP(2) لمزيد من التفاصيل). في مثل هذه البنى، فإن توقيع استدعاء \fBposix_fadvise\fP() الموضح في الملخص سيجبر على إهدار سجل كحشو بين وسيطي \fIfd\fP و\fIoffset\fP. لذلك، تعرّف هذه البنى نسخة من استدعاء النظام ترتب الوسائط بشكل مناسب، ولكنها بخلاف ذلك مطابقة تمامًا لـ \fBposix_fadvise\fP(). .P على سبيل المثال، منذ Linux 2.6.14، تمتلك ARM استدعاء النظام التالي: .P .in +4n .EX \fBlong arm_fadvise64_64(int \fP\fIfd\fP\fB, int \fP\fIadvice\fP\fB,\fP \fB loff_t \fP\fIoffset\fP\fB, loff_t \fP\fIsize\fP\fB);\fP .EE .in .P تُخفى هذه التفاصيل الخاصة بالبنى عمومًا عن التطبيقات بواسطة دالة الغلاف \fBposix_fadvise\fP() في glibc، والتي تستدعي استدعاء النظام المناسب الخاص بالبنية. .SH المعايير POSIX.1\-2024. .SH التاريخ POSIX.1\-2001. .P .\" of fadvise64_64() ظهر دعم النواة لأول مرة في Linux 2.5.60؛ يُسمى استدعاء النظام الأساسي \fBfadvise64\fP(). تم توفير دعم المكتبة منذ glibc 2.2، عبر دالة الغلاف \fBposix_fadvise\fP(). .P .\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb منذ Linux 3.18، أصبح دعم استدعاء النظام الأساسي اختياريًا، اعتمادًا على إعداد خيار التهيئة \fBCONFIG_ADVISE_SYSCALLS\fP. .P تم تغيير نوع الوسيط \fIsize\fP من \fIsize_t\fP إلى \fIoff_t\fP في POSIX.1\-2001 TC1. .SH ملاحظات يمكن مسح محتويات خبيئة المخزن المؤقت للنواة عبر واجهة \fI/proc/sys/vm/drop_caches\fP الموضحة في \fBproc\fP(5). .P يمكن الحصول على لقطة لصفحات الملف المقيمة في خبيئة المخزن المؤقت بفتح ملف، وربطه باستخدام \fBmmap\fP(2)، ثم تطبيق \fBmincore\fP(2) على الربط. .SH العلل قبل Linux 2.6.6، إذا تم تحديد \fIsize\fP كـ 0، فكان يُفسر حرفيًا على أنه "صفر بايت"، بدلاً من أن يعني "جميع البايتات حتى نهاية الملف". .SH "انظر أيضًا" \fBfincore\fP(1), \fBmincore\fP(2), \fBreadahead\fP(2), \fBsync_file_range\fP(2), \fBposix_fallocate\fP(3), \fBposix_madvise\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .