.\" -*- coding: UTF-8 -*- .\" Copyright 2012, 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 delete_module 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم delete_module \- تفريغ وحدة نواة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP /* تعريف ثوابت \fBO_*\fP */ \fB#include \fP /* تعريف ثوابت \fBSYS_*\fP */ \fB#include \fP .P \fBint syscall(SYS_delete_module, const char *\fP\fIname\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .P \fIملاحظة\fP: لا توفر glibc غلافًا لـ \fBdelete_module\fP()، مما يستلزم استخدام \fBsyscall\fP(2). .SH الوصف تحاول استدعاء النظام \fBdelete_module\fP() إزالة إدخال الوحدة القابلة للتحميل غير المستخدمة المحددة بواسطة \fIname\fP. إذا كانت الوحدة تحتوي على دالة \fIexit\fP، فتُنفذ تلك الدالة قبل تفريغ الوحدة. تُستخدم وسيطة \fIflags\fP لتعديل سلوك استدعاء النظام، كما هو موضح أدناه. يتطلب استدعاء النظام هذا صلاحية. .P تُحاول إزالة الوحدة وفقًا للقواعد التالية: .IP (1) 5 إذا كانت هناك وحدات محملة أخرى تعتمد على (أي تشير إلى رموز معرفة في) هذه الوحدة، يفشل الاستدعاء. .IP (2) خلاف ذلك، إذا كان عدد المراجع للوحدة (أي عدد العمليات التي تستخدم الوحدة حاليًا) صفرًا، تُفرغ الوحدة فورًا. .IP (3) .\" O_TRUNC == KMOD_REMOVE_FORCE in kmod library .\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library إذا كانت الوحدة تحتوي على عدد مراجع غير صفري، يعتمد السلوك على البتات المعينة في \fIflags\fP. في الاستخدام العادي (انظر الملاحظات)، يُحدد العلم \fBO_NONBLOCK\fP دائمًا، وقد يُحدد العلم \fBO_TRUNC\fP بالإضافة إلى ذلك. .IP للتوليفات المختلفة لـ \fIflags\fP التأثير التالي: .RS .TP \fBflags == O_NONBLOCK\fP يعود الاستدعاء فورًا مع خطأ. .TP \fBflags == (O_NONBLOCK | O_TRUNC)\fP تُفرغ الوحدة فورًا، بغض النظر عما إذا كان لها عدد مراجع غير صفري. .TP \fB(flags & O_NONBLOCK) == 0\fP إذا لم يحدد \fIflags\fP \fBO_NONBLOCK\fP، تحدث الخطوات التالية: .RS .IP \[bu] 3 تُوسم الوحدة بحيث لا يُسمح بمراجع جديدة. .IP \[bu] إذا كان عدد مراجع الوحدة غير صفري، يُوضع المستدعي في حالة نوم غير قابلة للمقاطعة (\fBTASK_UNINTERRUPTIBLE\fP) حتى يصبح عدد المراجع صفرًا، وعندها يُفك حظر الاستدعاء. .IP \[bu] تُفرغ الوحدة بالطريقة المعتادة. .RE .RE .P للعلم \fBO_TRUNC\fP تأثير إضافي على القواعد الموصوفة أعلاه. افتراضيًا، إذا كانت الوحدة تحتوي على دالة \fIinit\fP ولكن لا تحتوي على دالة \fIexit\fP، تفشل محاولة إزالة الوحدة. ومع ذلك، إذا حُدد \fBO_TRUNC\fP، يُتجاوز هذا المطلب. .P استخدام العلم \fBO_TRUNC\fP خطير! إذا لم تُبن النواة مع \fBCONFIG_MODULE_FORCE_UNLOAD\fP، يُتجاهل هذا العلم بصمت. (عادةً، يكون \fBCONFIG_MODULE_FORCE_UNLOAD\fP مفعلًا.) استخدام هذا العلم يلوث النواة (TAINT_FORCED_RMMOD). .SH "قيمة الإرجاع" يُعاد صفر عند النجاح. ويُعاد \-1 عند الخطأ وتُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEBUSY\fP الوحدة ليست "حية" (أي لا تزال قيد التهيئة أو موسومة بالفعل للإزالة)؛ أو، تحتوي الوحدة على دالة \fIinit\fP ولكن لا تحتوي على دالة \fIexit\fP، ولم يُحدد \fBO_TRUNC\fP في \fIflags\fP. .TP \fBEFAULT\fP يشير \fIname\fP إلى موقع خارج مساحة العنوان القابلة للوصول للعملية. .TP \fBENOENT\fP لا توجد وحدة بهذا الاسم. .TP \fBEPERM\fP لم يكن المستدعي متمتعًا بالصلاحية (لم تكن لديه القدرة \fBCAP_SYS_MODULE\fP)، أو تفريغ الوحدة معطل (انظر \fI/proc/sys/kernel/modules_disabled\fP في \fBproc\fP(5)). .TP \fBEWOULDBLOCK\fP وحدات أخرى تعتمد على هذه الوحدة؛ أو، حُدد \fBO_NONBLOCK\fP في \fIflags\fP، ولكن عدد مراجع هذه الوحدة غير صفري ولم يُحدد \fBO_TRUNC\fP في \fIflags\fP. .SH المعايير لينكس. .SH التاريخ استدعاء النظام \fBdelete_module\fP() غير مدعوم من glibc. لا يُقدم إعلان في رؤوس glibc، ولكن، من خلال غرابة تاريخية، أصدرت إصدارات glibc قبل glibc 2.23 واجهة ABI لاستدعاء النظام هذا. لذلك، لاستخدام استدعاء النظام هذا، يكفي (قبل glibc 2.23) الإعلان يدويًا عن الواجهة في الكود الخاص بك؛ بدلاً من ذلك، يمكنك استدعاء النظام باستخدام \fBsyscall\fP(2). .SS "لينكس 2.4 وما قبله" في Linux 2.4 والإصدارات السابقة، أخذ استدعاء النظام وسيطة واحدة فقط: .P \fB int delete_module(const char *\fP\fIname\fP\fB);\fP .P إذا كان \fIname\fP فارغًا (NULL)، تُزال جميع الوحدات غير المستخدمة والموسومة بالتنظيف الآلي. .P بعض التفاصيل الإضافية حول الاختلافات في سلوك \fBdelete_module\fP() في لينكس 2.4 والإصدارات الأقدم \fIلا\fP تُشرح حاليًا في صفحة الدليل هذه. .SH ملاحظات يُعتبر السكون غير القابل للمقاطعة الذي قد يحدث إذا حُذف \fBO_NONBLOCK\fP من \fIflags\fP غير مرغوب فيه، لأن العملية النائمة تُترك في حالة غير قابلة للقتل. اعتبارًا من لينكس 3.7، تحديد \fBO_NONBLOCK\fP اختياري، لكن في النوى المستقبلية من المرجح أن يصبح إلزاميًا. .SH "انظر أيضًا" \fBcreate_module\fP(2)، \fBinit_module\fP(2)، \fBquery_module\fP(2)، \fBlsmod\fP(8)، \fBmodprobe\fP(8)، \fBrmmod\fP(8) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .