हम बिल्ट-इन ड्राइवर लोड ऑर्डर को कैसे अनुकूलित कर सकते हैं (कुछ अंतर्निहित ड्राइवर मॉड्यूल लोड को पहले बनाने के लिए, और बाद में निर्भर मॉड्यूल लोड)?लिनक्स अंतर्निहित ड्राइवर लोड ऑर्डर क्या है?
उत्तर
बिल्ट-इन ड्राइवर लोड नहीं होंगे, इसलिए अंतर्निहित। उनके प्रारंभिक कार्यों को बुलाया जाता है और कर्नेल सक्रिय होने पर ड्राइवर सक्रिय होते हैं। इन init कार्यों को init/main.c::do_initcalls()
में बुलाया जाता है। सभी init कॉल का स्तर है, जो initcall_levels
में परिभाषित कर रहे हैं और include/linux/init.h
इन स्तरों actuall लिंकर लिपि (arch/*/kernel/vmlinux.lds.*
) में परिभाषित प्रतीक हैं में वर्गीकृत किया जाता है। कर्नेल संकलन समय पर, लिंकर module_init()
या अन्य *_initcall()
चिह्नित सभी फ़ंक्शंस एकत्र करता है, स्तरों में वर्गीकृत करता है, सभी कार्यों को एक ही स्तर पर एक ही स्तर पर एक साथ रखता है, और फ़ंक्शन पॉइंटर्स की एक सरणी बनाता है।
रन-टाइम में do_initcall_level() क्या करता है, प्रत्येक फ़ंक्शन को सरणी में पॉइंटर्स द्वारा इंगित किया जाता है। Do_initcall_level में, स्तरों को छोड़कर, कोई कॉलिंग नीति नहीं है, लेकिन सरणी में ऑर्डर लिंक समय में तय किया जाता है।
तो, अब आप देख सकते हैं कि चालक का दीक्षा आदेश लिंक समय पर तय किया गया है, लेकिन आप क्या कर सकते हैं?
- उच्च स्तर में अपने init समारोह में कहें, या
Makefile
पहले एक स्पष्ट है अगर आप उपरोक्त पढ़ा है में ऊंचे स्थान पर अपने डिवाइस ड्राइवर डाल दिया। यानी) अगर यह उचित है तो early_initcall() का उपयोग करें।
दूसरे को थोड़ा और स्पष्टीकरण की आवश्यकता है। Makefile
मामले में ऑर्डर यह है कि मौजूदा कर्नेल बिल्ड सिस्टम कैसे काम करता है और लिंकर्स कैसे काम करता है। एक लंबी कहानी कम करने के लिए, बिल्ड सिस्टम सभी ऑब्जेक्ट फ़ाइलों को obj-y
में ले जाता है और उन्हें एक साथ जोड़ता है। यह अत्यधिक पर्यावरण निर्भर है लेकिन उच्च संभावना है कि लिंकर पहले ऑब्जेक्ट फ़ाइल को obj-y
में निचले पते में रखता है, इस प्रकार, जिसे पहले कहा जाता था।
यदि आप चाहते हैं कि आपके ड्राइवर को उसी निर्देशिका में अन्य ड्राइवरों की तुलना में पहले बुलाया जाए, तो यह करने का सबसे आसान तरीका है।
depmod
प्रत्येक मॉड्यूल द्वारा निर्यात और आवश्यक प्रतीकों की जांच करता है और उन पर एक स्थलीय प्रकार करता है जो modprobe
बाद में उचित क्रम में मॉड्यूल लोड करने के लिए उपयोग कर सकते हैं। उन मॉड्यूल से प्रतीकों की आवश्यकता है जिन पर आप निर्भर होना चाहते हैं, यह सही चीज करने के लिए पर्याप्त है।
हाल ही में मुझे यह समस्या मिली है मेरे चार्जर ड्राइवर को एडीसी चालक पर निर्भरता है इसलिए एडीसी चालक चार्जर ड्राइवर लोड करने से पहले लोड किया गया है और डीटीएस फ़ाइल में परिभाषित एडीसी फंडाल की जांच कर रहा है और उसे एडीसी चालक द्वारा इंटिलाइज करना है। इसे ड्राइवर/मेकफ़ाइल
- 1. लिनक्स ट्यून ड्राइवर
- 2. लिनक्स ड्राइवर प्रोग्रामिंग
- 3. लिनक्स ड्राइवर sysfs
- 4. लिनक्स डिवाइस ड्राइवर प्रोग्रामिंग
- 5. लिनक्स में शैल अंतर्निहित कमांड क्या हैं?
- 6. लिनक्स कर्नेल डिवाइस ड्राइवर प्रोग्रामिंग
- 7. लोड हो रहा है JDBC ड्राइवर
- 8. लिनक्स ड्राइवर विकास: पीसीआई और पीसीआईई ड्राइवर के बीच अंतर?
- 9. लिनक्स कर्नेल कैसे जानता है कि बूट पर कौन से ड्राइवर लोड हो सकते हैं?
- 10. लिनक्स डिवाइस ड्राइवर में स्थिर कार्य?
- 11. पीसीआईई लिनक्स कर्नेल ड्राइवर में स्ट्रीमिंग डीएमए
- 12. लिनक्स कर्नेल/ड्राइवर विकास के लिए नया
- 13. लिनक्स मॉड्यूल इनिट कॉल का ऑर्डर कैसे निर्धारित करता है?
- 14. "ऑर्डर लाइन" क्या है?
- 15. QSQLITE ड्राइवर लोड नहीं हुआ - qt डेटाबेस ड्राइवर प्लगइन्स कहां रखना है
- 16. क्या .NET में अंतर्निहित लॉगिंग फ्रेमवर्क है?
- 17. क्या readdir() ऑर्डर की गारंटी देता है?
- 18. टाइप 4 एक्सए ड्राइवर क्या है?
- 19. MySQL जेडीबीसी ड्राइवर कनेक्शन स्ट्रिंग क्या है?
- 20. ड्राइवर प्रोग्राम का क्या अर्थ है?
- 21. ऑर्डर द्वारा ऑर्डर में कुल कार्य क्या कर सकता है?
- 22. लिनक्स कर्नेल कैसे पता चलता है कि ड्राइवर फर्मवेयर कहां देखना है?
- 23. लिनक्स, या अन्य यूटीएफ -8 सक्षम ड्राइवर पर SQLSRV ड्राइवर स्थापित करें?
- 24. जेटीडीएस ड्राइवर पुराना है?
- 25. लिनक्स स्टैक क्या है?
- 26. डिवाइस ड्राइवर बनाम ड्राइवर स्टैक
- 27. ड्राइवर
- 28. लिनक्स यूएसबी थोक हस्तांतरण कर्नेल ड्राइवर और हार्डवेयर लूपबैक
- 29. ओएसजीआई में अंतर्निहित थीम क्या है?
- 30. क्या रूबी का अंतर्निहित काम है ... जबकि?
में मॉड्यूल के क्रम को बदलकर हल किया गया है, आपके बहुत विस्तार से स्पष्टीकरण के लिए @Yusushi Shoji धन्यवाद! –
यह एक उत्कृष्ट उत्तर का एक उदाहरण है! – VividD