swapon(2)

الاسم
swapon, swapoff - بدء/إيقاف المبادلة إلى ملف/جهاز

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/swap.h>

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

الوصف
swapon() يضبط منطقة المبادلة على الملف أو جهاز الكتلة المحدد بواسطة path. swapoff() يوقف المبادلة إلى الملف أو جهاز الكتلة المحدد بواسطة path.

إذا تم تحديد العلم SWAP_FLAG_PREFER في وسيط swapon() swapflags، فستكون منطقة المبادلة الجديدة ذات أولوية أعلى من المبدئي. الأولوية مشفرة داخل swapflags كالتالي:

    (prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

إذا تم تحديد العلم SWAP_FLAG_DISCARD في وسيط swapon() swapflags، فسيتم التخلص من صفحات المبادلة المحررة قبل إعادة استخدامها، إذا كان جهاز المبادلة يدعم عملية التخلص أو التقليم. (قد يحسن هذا الأداء على بعض أجهزة الحالة الصلبة، لكنه غالبًا لا يفعل.) انظر أيضًا الملاحظات.

لا يمكن استخدام هذه الدوال إلا بواسطة عملية مميزة (تلك التي تمتلك القدرة CAP_SYS_ADMIN).

  الأولوية
كل منطقة مبادلة لها أولوية، إما عالية أو منخفضة. الأولوية المبدئية منخفضة. داخل المناطق ذات الأولوية المنخفضة، المناطق الأحدث لها أولوية أقل من المناطق الأقدم.

جميع الأولويات المحددة بـ swapflags هي ذات أولوية عالية، أعلى من المبدئي. يمكن أن يكون لها أي قيمة غير سالبة يختارها المتصل. الأرقام الأعلى تعني أولوية أعلى.

يتم تخصيص صفحات المبادلة من المناطق بترتيب الأولوية، الأعلى أولاً. للمناطق ذات الأولويات المختلفة، يتم استنفاد منطقة ذات أولوية أعلى قبل استخدام منطقة ذات أولوية أقل. إذا كانت منطقتان أو أكثر لها نفس الأولوية، وكانت أعلى أولوية متاحة، يتم تخصيص الصفحات على أساس دائري بينها.

اعتبارًا من لينكس 1.3.6، يتبع النواة عادةً هذه القواعد، لكن هناك استثناءات.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EBUSY
    (لـ swapon()) path المحدد قيد الاستخدام بالفعل كمنطقة مبادلة.

EINVAL
    الملف path موجود، لكنه لا يشير إلى ملف عادي ولا إلى جهاز كتلة؛

EINVAL
    (swapon()) المسار المشار إليه لا يحتوي على توقيع مبادلة صالح أو يقع على نظام ملفات في الذاكرة مثل tmpfs(5).

EINVAL (منذ لينكس 3.4)
    (swapon()) تم تحديد قيمة علم غير صالحة في swapflags.

EINVAL
    (swapoff()) path ليس حاليًا منطقة مبادلة.

ENFILE
    وُصل إلى الحد الأقصى لإجمالي عدد الملفات المفتوحة على مستوى النظام.

ENOENT
    الملف path غير موجود.

ENOMEM
    النظام لديه ذاكرة غير كافية لبدء المبادلة.

EPERM
    المتصل لا يمتلك القدرة CAP_SYS_ADMIN. بدلاً من ذلك، الحد الأقصى لعدد ملفات المبادلة قيد الاستخدام بالفعل؛ انظر الملاحظات أدناه.

المعايير
لينكس.

التاريخ
وسيط swapflags تم تقديمه في لينكس 1.3.2.

ملاحظات
يجب تحضير القسم أو المسار باستخدام mkswap(8).

هناك حد أعلى لعدد ملفات المبادلة التي يمكن استخدامها، محدد بواسطة ثابت النواة MAX_SWAPFILES. قبل لينكس 2.4.10، MAX_SWAPFILES له القيمة 8؛ منذ لينكس 2.4.10، له القيمة 32. منذ لينكس 2.6.18، يتم تقليل الحد بمقدار 2 (وبالتالي 30)، منذ لينكس 5.19، يتم تقليل الحد بمقدار 3 (وبالتالي: 29) إذا تم بناء النواة مع خيار CONFIG_MIGRATION (الذي يحجز مدخلين لجدول المبادلة لميزات ترحيل الصفحات لـ mbind(2) و migrate_pages(2)). منذ لينكس 2.6.32، يتم تقليل الحد أكثر بمقدار 1 إذا تم بناء النواة مع خيار CONFIG_MEMORY_FAILURE. منذ لينكس 5.14، يتم تقليل الحد أكثر بمقدار 4 إذا تم بناء النواة مع خيار CONFIG_DEVICE_PRIVATE. منذ لينكس 5.19، يتم تقليل الحد أكثر بمقدار 1 إذا تم بناء النواة مع خيار CONFIG_PTE_MARKER.

التخلص من صفحات المبادلة تم تقديمه في لينكس 2.6.29، ثم جُعل مشروطًا بالعلم SWAP_FLAG_DISCARD في لينكس 2.6.36، والذي لا يزال يتخلص من منطقة المبادلة بأكملها عند استدعاء swapon()، حتى إذا لم يتم تعيين بت العلم هذا.

انظر أيضًا
mkswap(8), swapoff(8), swapon(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.