Ex5.1 Q3

major_num variable is also global and also local —>>> WHY?

if we use 

 module_param(major_num, int, S_IRUGO); 

than there is NO meaning because we use the LOCAL version of it!!!!

Asked on September 30, 2019 in Linux.
Add Comment
1 Answer(s)

התשובה פשוטה ומורכבת מ- 2 חלקים

1. להבין מי משתמש באובייקט ובהתאם לכך להגדיר את ה SCOPE שלו
2. לבדוק את ההבנה שלך בפועל ע”י קימפול ו הרצה

אני נתקלתי באותה בעיה ואני מחליט לבד מי STATIC ומי לא
עפ”י הנוהל הנ”ל

כשאתה מעביר שם של משתנה ל מקרו (module_param)
ה preprocessor לוקח את שם המשתנה ורושם אותו במקום שפוטנציאלית יכול ליהיות מחוץ למודול שלך
ולכן המשתנה הזה כדאי שיהיה גלובלי (לכן לא יכול ליהיות STATIC)

> כלומר יש עוד דרייבירים שה- preprocessor עושה בדיוק את אותו הדבר
> ואז יכולה להיות התנגשות…

נכון, ולכן חשוב שהשם של הפרמטר יהיה ייחודי
למשל תוסיף לו את שם ה DRIVER שכתבת

אם תכתוב IRQ ב- מספר DRIVERS
יכול ליהיות שתהיה התנגשות כי הם גלובליים
בשלב ה LINK ךהערכתי תהיהי התנגשות או בזמן ה INSMOD
כי בשלב הזה יש סוג של לינק

 

האם להימנע בשימוש במשתנים גלובלים בכתיבת דרייבר?
כשזה אפשרי זו חובה
כללי הנדסת תוכנה בסיסיים תמיד נכונים

 

אם יש לתת שם ייחודי גם ל-

int major_num
int minor_num

 

as I wrote set them static
if they are required elsewhere
add the driver name as thier prefic to make them unique

 

התשובה כאן היא של שוקי התותח !!!!
Answered on September 30, 2019.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.