הסבר על המבנה 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 .
התיעוד של המבנה הזה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ memtrack.h