הסבר על המבנה memtrack_module

הסבר על המבנה memtrack_module

#include < memtrack.h >

שדות נתונים

struct hw_module_t   נפוץ
 
int(*  init )(const struct memtrack_module *module)
 
int(*  getMemory )(const struct memtrack_module *module, pid_t pid, int type, struct memtrack_record *records, size_t *num_records)
 

תיאור מפורט

לכל מודול חומרה צריך להיות מבנה נתונים בשם HAL_MODULE_INFO_SYM, והשדות של מבנה הנתונים הזה צריכים להתחיל ב- hw_module_t ולאחר מכן במידע ספציפי למודול.

ההגדרה מופיעה בשורה 120 בקובץ memtrack.h .

מסמכי תיעוד של שדה

struct hw_module_t common

ההגדרה מופיעה בשורה 121 בקובץ memtrack.h .

int(* getMemory)(const struct memtrack_module *module, pid_t pid, int type, struct memtrack_record *records, size_t *num_records)

הפונקציה (*getMemory)() מצפה למערך של אובייקטים של רשומות, ומאכלסת עד *num_record מבנים עם גדלי הזיכרון ועם הדגלים המשויכים לזיכרון הזה. הפונקציה גם מעדכנת את *num_records במספר הכולל של הרשומות שהיא יכולה להחזיר, אם הערך של *num_records היה גדול מספיק כשהוענק. צפוי שהמערכת תחזיר רשומות בגודל 0, ומספר הרשומות לא אמור להשתנות בין קריאות ל-getMemory לאותו סוג זיכרון, גם עבור pids שונים.

בדרך כלל, מבצע הקריאה יפעיל את getMemory עבור טיפוס ו-pid עם *num_records == 0 כדי לקבוע כמה רשומות להקצות מקום עבורן. במקרה כזה, צריך להיות נתיב מהיר ב-HAL, שמחזיר קבוע ולא שולח שאילתה לקובצי ליבה. אם הערך של *num_records שמעבירים הוא 0, יכול להיות שהרשומות יהיו NULL.

הפונקציה הזו חייבת להיות בטוחה לשרשור, כי יכול להיות שהיא תתקבל מכמה שרשורים בו-זמנית.

הפונקציה מחזירה 0 אם הפעולה בוצעה בהצלחה, -ENODEV אם הסוג לא נתמך ו-errno בשגיאות אחרות.

ההגדרה מופיעה בשורה 151 בקובץ memtrack.h .

int(* init)(const struct memtrack_module *module)

הפונקציה (*init)() מבצעת פעולות להגדרת ניהול memtrack, והיא נקראת פעם אחת לפני כל קריאה ל- getMemory()‎ . הפונקציה מחזירה 0 אם הפעולה בוצעה בהצלחה, ו-errno- אם הייתה שגיאה.

ההגדרה מופיעה בשורה 128 בקובץ memtrack.h .


התיעוד של המבנה הזה נוצר מהקובץ הבא: