query_module(2)

الاسم
query_module - استعلام النواة عن أجزاء متنوعة تتعلق بالوحدات

موجز
#include <linux/module.h>

[[مهمل]] int query_module(size_t bufsize;
                                const char *name, int which,
                                void buf[bufsize], size_t bufsize,
                                size_t *ret);

الوصف
ملاحظة: نداء النظام هذا موجود فقط قبل لينكس 2.6.

يطلب query_module() معلومات من النواة عن الوحدات القابلة للتحميل. توضع المعلومات المُعادة في المخزن المؤقت المشار إليه بـ buf. يجب على المستدعي تحديد حجم buf في bufsize. تعتمد طبيعة وتنسيق المعلومات المُعادة بدقة على العملية المحددة بـ which. تتطلب بعض العمليات name لتحديد وحدة محملة حالياً، بينما تسمح بعضها بأن يكون name NULL، للإشارة إلى النواة نفسها.

يمكن تحديد القيم التالية لـ which:

0   يعيد النجاح، إذا كانت النواة تدعم query_module(). يُستخدم لاستقصاء توفر استدعاء النظام.

QM_MODULES
    يعيد أسماء جميع الوحدات المحملة. يتكون المخزن المؤقت المُعاد من سلسلة من السلاسل المنتهية بقيمة خالية؛ يُضبط ret على عدد الوحدات.

QM_DEPS
    يعيد أسماء جميع الوحدات المستخدمة بواسطة الوحدة المشار إليها. يتكون المخزن المؤقت المُعاد من سلسلة من السلاسل المنتهية بقيمة خالية؛ يُضبط ret على عدد الوحدات.

QM_REFS
    يعيد أسماء جميع الوحدات التي تستخدم الوحدة المشار إليها. هذا هو عكس QM_DEPS. يتكون المخزن المؤقت المُعاد من سلسلة من السلاسل المنتهية بقيمة خالية؛ يُضبط ret على عدد الوحدات.

QM_SYMBOLS
    يعيد الرموز والقيم المُصدرة بواسطة النواة أو الوحدة المشار إليها. المخزن المؤقت المُعاد هو مصفوفة من الهياكل بالشكل التالي

        struct module_symbol {
            unsigned long value;
            unsigned long name;
        };

    متبوعة بسلاسل منتهية بقيمة خالية. قيمة name هي إزاحة الحرف للسلسلة بالنسبة لبداية buf؛ يُضبط ret على عدد الرموز.

QM_INFO
    يعيد معلومات متنوعة عن الوحدة المشار إليها. تنسيق المخزن المؤقت للمخرجات هو:

        struct module_info {
            unsigned long address;
            unsigned long size;
            unsigned long flags;
        };

    حيث address هو عنوان النواة الذي توجد فيه الوحدة، size هو حجم الوحدة بالبايت، و flags هو قناع من MOD_RUNNING و MOD_AUTOCLEAN وما إلى ذلك، يشير إلى الحالة الحالية للوحدة (انظر ملف مصدر نواة لينكس include/linux/module.h). يُضبط ret على حجم هيكل module_info.

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

الأخطاء

EFAULT
    كان واحد على الأقل من name أو buf أو ret خارج مساحة العنوان القابلة للوصول للبرنامج.

EINVAL
    which غير صالح؛ أو name هو NULL (يشير إلى "النواة")، لكن هذا غير مسموح به مع القيمة المحددة لـ which.

ENOENT
    لا توجد وحدة بهذا name.

ENOSPC
    حجم المخزن المؤقت المقدم صغير جداً. يُضبط ret على الحد الأدنى للحجم المطلوب.

ENOSYS
    query_module() غير مدعوم في هذا الإصدار من النواة (مثل لينكس 2.6 أو أحدث).

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

الإصدارات
أُزيل في لينكس 2.6.

يمكن الحصول على بعض المعلومات التي كانت متاحة سابقاً عبر query_module() من /proc/modules و /proc/kallsyms والملفات الموجودة تحت الدليل /sys/module.

استدعاء النظام query_module() غير مدعوم بواسطة glibc. لا يتم توفير إعلان في ملفات رأس glibc، لكن، من خلال غرابة تاريخية، يقوم glibc بتصدير واجهة ثنائية التطبيق (ABI) لاستدعاء النظام هذا. لذلك، لاستخدام استدعاء النظام هذا، يكفي الإعلان يدوياً عن الواجهة في الكود الخاص بك؛ بدلاً من ذلك، يمكنك استدعاء النظام باستخدام syscall(2).

انظر أيضًا
create_module(2), delete_module(2), get_kernel_syms(2), init_module(2), lsmod(8), modinfo(8)

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

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

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