.\" -*- coding: UTF-8 -*- .\" Copyright 2003, 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 remap_file_pages 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم remap_file_pages \- إنشاء تعيين ملف غير خطي .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#define _GNU_SOURCE\fP /* انظر feature_test_macros(7) */ \fB#include \fP .P \fB[[مهمل]] int remap_file_pages(\fPsize_t size; \fB void \fP\fIaddr\fP\fB[\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB int \fP\fIprot\fP\fB, size_t \fP\fIpgoff\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH الوصف .\" commit 33041a0d76d3c3e0aff28ac95a2ffdedf1282dbc .\" http://lwn.net/Articles/597632/ .\" commit c8d78c1823f46519473949d33f0d1d33fe21ea16 \fBملاحظة\fP: وُسِمَت استدعاء النظام هذا كمهمل بدءًا من لينكس 3.16. في لينكس 4.0، استُبدِل التنفيذ بمحاكاة أبطأ داخل النواة. يجب على تلك التطبيقات القليلة التي تستخدم استدعاء النظام هذا التفكير في الانتقال إلى بدائل. أُجري هذا التغيير لأن كود النواة لاستدعاء النظام هذا كان معقدًا، ويُعتقد أنه قليل الاستخدام أو ربما غير مستخدم تمامًا. بينما كانت له بعض حالات الاستخدام في تطبيقات قواعد البيانات على أنظمة 32 بت، فإن حالات الاستخدام هذه غير موجودة على أنظمة 64 بت. .P يُستخدم استدعاء النظام \fBremap_file_pages\fP() لإنشاء تعيين غير خطي، أي تعيين تُعيّن فيه صفحات الملف بترتيب غير تسلسلي في الذاكرة. ميزة استخدام \fBremap_file_pages\fP() بدلاً من الاستخدام المتكرر لـ \fBmmap\fP(2) هي أن النهج الأول لا يتطلب من النواة إنشاء هياكل بيانات VMA (منطقة الذاكرة الافتراضية) إضافية. .P لإنشاء تعيين غير خطي، ننفذ الخطوات التالية: .TP 3 1. استخدم \fBmmap\fP(2) لإنشاء تعيين (وهو خطي في البداية). يجب إنشاء هذا التعيين بالعلامة \fBMAP_SHARED\fP. .TP 2. استخدم استدعاءً واحدًا أو أكثر لـ \fBremap_file_pages\fP() لإعادة ترتيب التطابق بين صفحات التعيين وصفحات الملف. من الممكن تعيين نفس الصفحة من ملف إلى مواقع متعددة داخل المنطقة المعينة. .P تحدد الوسيطتان \fIpgoff\fP و \fIsize\fP منطقة الملف التي سيتم نقلها داخل التعيين: \fIpgoff\fP هو إزاحة ملف بوحدات حجم صفحة النظام؛ \fIsize\fP هو طول المنطقة بالبايت. .P تخدم الوسيطة \fIaddr\fP غرضين. أولاً، تحدد التعيين الذي نريد إعادة ترتيب صفحاته. وبالتالي، يجب أن يكون \fIaddr\fP عنوانًا يقع ضمن منطقة سبق تعيينها بواسطة استدعاء لـ \fBmmap\fP(2). ثانيًا، يحدد \fIaddr\fP العنوان الذي ستوضع فيه صفحات الملف المحددة بواسطة \fIpgoff\fP و \fIsize\fP. .P .\" This rounding is weird, and not consistent with the treatment of .\" the analogous arguments for munmap()/mprotect() and for mlock(). .\" MTK, 14 Sep 2005 يجب أن تكون القيم المحددة في \fIaddr\fP و \fIsize\fP مضاعفات لحجم صفحة النظام. إذا لم تكن كذلك، فإن النواة تُقرّب كِلتا القيمتين إلى الأسفل لأقرب مضاعف لحجم الصفحة. .P يجب تحديد الوسيطة \fIprot\fP كـ 0. .P الوسيطة \fIflags\fP لها نفس المعنى كما في \fBmmap\fP(2)، ولكن جميع العلامات بخلاف \fBMAP_NONBLOCK\fP تُتجاهل. .SH "قيمة الإرجاع" عند النجاح، تُرجع \fBremap_file_pages\fP() 0. عند الخطأ، تُرجع \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEINVAL\fP \fIaddr\fP لا يشير إلى تعيين صالح تم إنشاؤه بالعلامة \fBMAP_SHARED\fP. .TP \fBEINVAL\fP .\" And possibly others from vma->vm_ops->populate() \fIaddr\fP أو \fIsize\fP أو \fIprot\fP أو \fIpgoff\fP غير صالح. .SH المعايير لينكس. .SH التاريخ لينكس 2.5.46، glibc 2.3.3. .SH ملاحظات .\" commit 3ee6dafc677a68e461a7ddafc94a580ebab80735 منذ لينكس 2.6.23، يُنشئ \fBremap_file_pages\fP() تعيينات غير خطية فقط على أنظمة الملفات في الذاكرة مثل \fBtmpfs\fP(5) أو hugetlbfs أو ramfs. على أنظمة الملفات ذات التخزين الداعم، فإن \fBremap_file_pages\fP() ليس أكثر كفاءة بكثير من استخدام \fBmmap\fP(2) لضبط أي أجزاء من الملف تُعيّن إلى أي عناوين. .SH "انظر أيضًا" \fBgetpagesize\fP(2), \fBmmap\fP(2), \fBmmap2\fP(2), \fBmprotect\fP(2), \fBmremap\fP(2), \fBmsync\fP(2) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .