2012-02-24 23 views
5

मैं __KERNEL__ जैसे छोटे सम्मेलनों में चल रहा हूं।लिनक्स कर्नेल पहचानकर्ताओं में अग्रणी और पिछली अंडरस्कोर का अर्थ क्या है?

__ इस मामले में कर्नेल डेवलपर्स द्वारा उपयोग किए जाने वाले नामकरण सम्मेलन या क्या यह एक मैक्रो नामकरण के लिए एक वाक्यविन्यास विशिष्ट कारण है?

इस कोड के पूरे कई उदाहरण हैं।

उदाहरण के लिए कुछ फ़ंक्शन और चर _ या यहां तक ​​कि __ से शुरू होते हैं।

क्या इसके लिए कोई विशिष्ट कारण है?

ऐसा लगता है कि यह व्यापक रूप से उपयोग किया जाता है और मुझे केवल कुछ स्पष्टीकरण की आवश्यकता है कि इन चीजों का एक वाक्य रचनात्मक उद्देश्य है या यह केवल नामकरण सम्मेलन है।

इसके अलावा मैं यूआईडी_टी जैसे उपयोगकर्ता घोषित प्रकारों को देखता हूं। फिर मुझे लगता है कि यह एक नामकरण सम्मेलन है जो पाठक को बता रहा है कि यह उपयोगकर्ता द्वारा परिभाषित प्रकार है?

+2

'_t' आपको बताता है कि यह' typedef' द्वारा बनाई गई एक प्रकार है। प्रतिक्रिया के लिए – Linuxios

+0

चीयर्स। क्षमा करें, एक अस्पष्टता को साफ़ करने के लिए, जब मैं उपयोगकर्ता परिभाषित प्रकार कहता हूं तो मेरा मतलब वास्तव में टाइपिफ़ द्वारा परिभाषित किया गया है। –

+1

निश्चित रूप से। अंडरस्कोर के लिए, मेरा अनुमान है कि एक मैक्रो का इस्तेमाल किया जा रहा है जहां इसका इरादा नहीं था जब उसके पास फ़ंक्शन या क्लास के साथ संदिग्ध नाम हो। – Linuxios

उत्तर

4

कई मामलों रहे हैं:

  • सार्वजनिक संपर्क वाले हेडर में, यानी कुछ भी है कि libc पदभार संभालने की जाएगी और /usr/include/linux के तहत डाल, मानकों निर्दिष्ट करें कि कौन प्रतीकों परिभाषित किया जाना चाहिए और किसी भी अन्य प्रतीकों प्रणाली के लिए विशिष्ट करेगा अंडरस्कोर और पूंजी पत्र या दो अंडरस्कोर से शुरू करें। विशेष रूप से __KERNEL__ का कारण यह है, क्योंकि यह हेडर में उपयोग किया जाता है जो कर्नेल और libc दोनों में शामिल होते हैं और कुछ घोषणाएं अलग होती हैं।
  • आंतरिक कोड में, आमतौर पर सम्मेलन यह है कि __something कुछ प्रबंधन को छोड़कर something के लिए वर्कहोर है, अक्सर लॉकिंग। यह __d_lookup जैसी चीजों का कारण है। सिस्टम कॉल के लिए समान सम्मेलन यह है कि sys_something सिस्टम कॉल एंट्री पॉइंट है जो कर्नेल से संदर्भ स्विच को संभालता है और वास्तविक कार्य करने के लिए do_something पर कॉल करता है।
  • _t प्रत्यय टाइपपीफ के लिए मानक पुस्तकालय सम्मेलन है। जैसे size_t, ptrdiff_t, foff_t और ऐसे। कर्नेल कोड इस सम्मेलन का भी इसके आंतरिक प्रकारों के लिए अनुसरण करता है।
+0

आपके उत्तर के लिए धन्यवाद। कर्नेल के बारे में सभी कोडिंग शैली दस्तावेज के साथ, मुझे हैरान है कि मुझे कर्नेल में नामकरण सम्मेलनों पर बहुत सारे दस्तावेज नहीं मिलते हैं। क्या आपने कर्नेल हैकिंग करके इन चीजों को उठाया था? – KarateSnowMachine

+0

@ कराटेसोनोमाचिन: ​​ठीक है, पहला और आखिरी बिंदु सी मानक से आता है। मध्य बिंदु, ज्यादातर हां। मैंने कोई गंभीर कर्नेल हैकिंग नहीं किया, लेकिन मेरे पास स्कूल में कर्नेल में एक असाइनमेंट था, इसलिए मुझे कोड का थोड़ा सा पढ़ना पड़ा (विशेष रूप से लॉकिंग को दोबारा जांचना)। –