mpool(3)

الاسم
mpool - خبيئة عازلة للذاكرة المشتركة

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

موجز
#include <db.h>
#include <mpool.h>

MPOOL *mpool_open(DBT *key, int fd, pgno_t pagesize, pgno_t maxcache);

void mpool_filter(MPOOL *mp,
                  typeof(void (void *, pgno_t, void *)) *pgin,
                  typeof(void (void *, pgno_t, void *)) *pgout,
                  void *pgcookie);

void *mpool_new(MPOOL *mp, pgno_t *pgnoaddr);
void *mpool_get(MPOOL *mp, pgno_t pgno, unsigned int flags);
int mpool_put(MPOOL *mp, void *pgaddr, unsigned int flags);

int mpool_sync(MPOOL *mp);
int mpool_close(MPOOL *mp);

الوصف
ملاحظة جيدة: توثق هذه الصفحة الواجهات المقدمة حتى glibc 2.1. ومنذ الإصدار glibc 2.2، لم تعد glibc توفر هذه الواجهات. من المحتمل أنك تبحث عن واجهات برمجة التطبيقات (APIs) التي توفرها مكتبة libdb بدلاً من ذلك.

Mpool هي واجهة المكتبة المصممة لتوفير إدارة عازلة موجهة للصفحات للملفات. يمكن مشاركة العازلات بين العمليات.

الدالة mpool_open() تُهيئ خبيئة ذاكرة. معامل key هو سلسلة المحارف المستخدمة للتفاوض بين عمليات متعددة ترغب في مشاركة العازلات. إذا وُصلت عازلات الملف في ذاكرة مشتركة، ستشارك جميع العمليات التي تستخدم نفس المفتاح العازلات. إذا كان key NULL، تُوصل العازلات في ذاكرة خاصة. معامل fd هو واصف ملف للملف الأساسي، والذي يجب أن يكون قابلًا للبحث. إذا كان key غير NULL ويطابق ملفًا موصولًا بالفعل، يُتجاهل معامل fd.

معامل pagesize هو حجم الصفحات، بالبايت، التي يُقسم إليها الملف. معامل maxcache هو أقصى عدد من الصفحات من الملف الأساسي لتخزينها مؤقتًا في أي وقت. هذه القيمة ليست نسبية لعدد العمليات التي تشارك عازلات الملف، بل ستكون أكبر قيمة يحددها أي من العمليات المشاركة للملف.

الدالة mpool_filter() مصممة لجعل معالجة الإدخال والإخراج للصفحات شفافة. إذا حُددت الدالة pgin، تُستدعى كل مرة يُقرأ فيها عازل إلى خبيئة الذاكرة من ملف الدعم. إذا حُددت الدالة pgout، تُستدعى كل مرة يُكتب فيها عازل إلى ملف الدعم. تُستدعى كلتا الدالتين مع مؤشر pgcookie، رقم الصفحة ومؤشر إلى الصفحة التي تُقرأ أو تُكتب.

الدالة mpool_new() تأخذ مؤشر MPOOL وعنوانًا كمعاملات. إذا أمكن تخصيص صفحة جديدة، يُعاد مؤشر إلى الصفحة ويُخزن رقم الصفحة في عنوان pgnoaddr. وإلا، يُعاد NULL ويُضبط errno.

الدالة mpool_get() تأخذ مؤشر MPOOL ورقم صفحة كمعاملات. إذا كانت الصفحة موجودة، يُعاد مؤشر إلى الصفحة. وإلا، يُعاد NULL ويُضبط errno. معامل flags غير مستخدم حاليًا.

الدالة mpool_put() تُحرر الصفحة المشار إليها بـ pgaddr. يجب أن يكون pgaddr عنوانًا أُعيد سابقًا بواسطة mpool_get() أو mpool_new(). تُحدد قيمة العلم بواسطة ORing أي من القيم التالية:

MPOOL_DIRTY
    الصفحة عُدلت وتحتاج إلى الكتابة إلى ملف الدعم.

mpool_put() تُعيد 0 عند النجاح و -1 إذا حدث خطأ.

الدالة mpool_sync() تكتب جميع الصفحات المعدلة المرتبطة بمؤشر MPOOL إلى ملف الدعم. mpool_sync() تُعيد 0 عند النجاح و -1 إذا حدث خطأ.

الدالة mpool_close() تُحرر أي ذاكرة مخصصة مرتبطة بكعكة خبيئة الذاكرة. الصفحات المعدلة لا تُكتب إلى ملف الدعم. mpool_close() تُعيد 0 عند النجاح و -1 إذا حدث خطأ.

الأخطاء
الدالة mpool_open() قد تفشل وتضبط errno لأي من الأخطاء المحددة للروتين المكتبي malloc(3).

الدالة mpool_get() قد تفشل وتضبط errno لما يلي:

EINVAL
    السجل المطلوب غير موجود.

قد تفشل الدالتان mpool_new() و mpool_get() وتُعيِّنان errno لأي من الأخطاء المُحدَّدة لدوال المكتبة read(2) و write(2) و malloc(3).

قد تفشل الدالة mpool_sync() وتُعيِّن errno لأي من الأخطاء المُحدَّدة لدالة المكتبة write(2).

قد تفشل الدالة mpool_close() وتُعيِّن errno لأي من الأخطاء المُحدَّدة لدالة المكتبة free(3).

المعايير
BSD.

انظر أيضًا
btree(3)، dbopen(3)، hash(3)، recno(3)

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

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

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