लिनस टोरवाल्ड्स ने लिनक्स 7.3-rc2 कर्नेल में एक महत्वपूर्ण कोड परिवर्तन को मर्ज किया है, जो अधिक `kmalloc()` फ़ंक्शन कॉल को नए `kmalloc_obj()` फ़ंक्शन परिवार में परिवर्तित कर रहा है। यह व्यापक प्रयास, लिनक्स डेवलपर कीस कुक द्वारा संचालित, कर्नेल के भीतर मेमोरी आवंटन को बेहतर बनाने का लक्ष्य रखता है।
कोसिनले-संचालित स्क्रिप्ट का उपयोग करके किया गया यह रूपांतरण सैकड़ों फ़ाइलों और 600 से अधिक कोड लाइनों को प्रभावित करता है। यह पिछले अधूरे `kmalloc_obj()` में संक्रमणों को संबोधित करता है और Linux 7.0 में इसके परिचय के बाद से इसके उपयोग का विस्तार करता है। `kmalloc_obj()` फ़ंक्शन `kmalloc()` पर कई फायदे प्रदान करते हैं, जिसमें `sizeof()` और प्रकार के नाम की आवश्यकता को समाप्त करना, आवंटित प्रकारों के आंतरिक निरीक्षण को सक्षम करना और भविष्य के संवर्द्धन जैसे सख्त और संरेखण-जागरूक विकल्पों के लिए मार्ग प्रशस्त करना शामिल है।
इस वर्ष की शुरुआत में `kmalloc_obj()` फ़ंक्शन पेश करने वाले एक कमिट के अनुसार, परिवर्तन सामान्य आवंटन मुहावरों को प्रतिस्थापित करता है। उदाहरण के लिए, `ptr = kmalloc(sizeof(*ptr), gfp);` बन जाता है `ptr = kmalloc_obj(*ptr, gfp);`। प्राथमिक लाभ `sizeof()` और प्रकार के नाम की आवश्यकता को हटाना है, साथ ही असाइनमेंट प्रकारों को लागू करना - फ़ंक्शन पहले तर्क के प्रकार के लिए एक सूचक लौटाते हैं। प्रकार का नाम अभी भी अप्रत्यक्ष असाइनमेंट के लिए इस्तेमाल किया जा सकता है। इसके अतिरिक्त, नए फ़ंक्शन चर को `__auto_type` का उपयोग करके घोषित करने की अनुमति देते हैं, जैसे `__auto_type ptr = kmalloc_obj(struct foo, gfp);`।
मूल कवरेज पढ़ें
💬 टिप्पणियाँ
📜 टिप्पणी नीति