2012-03-21 15 views
6

जब मैं सिस्टम कॉल पर कुछ पढ़ने कर रहा था, मैं LXR में हेडर फाइल को खोजने के लिए syscalls.h के लिए एक खोज किया था। खोज परिणामों ने मुझे परेशान किया। arch/_arch_name_/include/asm के अंतर्गत निर्देशिकाओं से आने वाली syscalls.h फ़ाइलों में से एक दर्जन है। ये ठीक हैं, वे आर्किटेक्चर विशिष्ट परिभाषाएं हैं या कुछ और आवश्यक हैं। सवाल यह है कि हमारे पास include/linux और include/asm-generic दोनों के तहत दो अलग-अलग syscalls.h हेडर क्यों हैं?लिनक्स कर्नेल हेडर के संगठन

इसके अलावा, मैं यह जानना चाहता हूं कि include/linux शीर्षलेख क्या हैं और include/asm-generic शीर्षलेख क्या हैं। वे एक-दूसरे के बीच अंतर कैसे करते हैं? दो अलग हेडर फ़ोल्डरों के पीछे तर्क क्या है? वे एक-दूसरे से कैसे जुड़े होते हैं?

धन्यवाद

+1

क्या आप इन फ़ाइलों में से अंदर थे? –

+1

इन /include/linux/syscalls.h में, कई सिस्टम कॉल घोषणाएं हैं। /include/asm-generic/syscalls.h में, सभी सिस्टम कॉल मैक्रो परिभाषाओं के साथ घोषित किए जाते हैं। लेकिन यह केवल syscalls.h पर लागू होता है, हालांकि, मैं बड़ी तस्वीर को समझना चाहता हूं। – dirtybit

उत्तर

6

मैंने इस प्रश्न को Kernel Newbies ML पर पूछा है।

Cihangir Akturk लिखा है::

AFAIK, में/पाया हेडर शामिल हैं/ASM-सामान्य निर्देशिका वास्तुकला स्वतंत्र (शायद आर्किटेक्चर के पार साझा) कोड के लिए है मैं निम्नलिखित जवाब जो स्पष्ट बातें बनाता मिला है। अधिकतर आपको इन शीर्षकों को सीधे शामिल करने की आवश्यकता नहीं है, इसके बजाय हम इन हेडर को अप्रत्यक्ष रूप से आर्किटेक्चर निर्भर हेडर के माध्यम से शामिल करते हैं।

ओटीओएच,/शामिल/लिनक्स निर्देशिका जेनरिक हेडर फ़ाइलों के लिए है कर्नेल के घटकों के बीच इंटरफेस को परिभाषित करने के लिए। ज्यादातर स्थितियों में, आप इन शीर्षलेखों में आपको आवश्यक सभी कर्नेल कार्यक्षमताओं को ढूंढेंगे।

संबंध, chngr।

1

निर्देशिका arch/_arch_name_/include/asm में हेडर विशिष्ट वास्तुकला इस तरह के 86, एआरएम आर्किटेक्चर के लिए के रूप में, निर्भर हैं। तो अंदर तर्क मंच-विशिष्ट है और अत्यधिक अंतर्निहित हार्डवेयर पर निर्भर करता है। आप केवल अपनी प्लेटफ़ॉर्म आर्किटेक्चर को शामिल करेंगे।

include/linux में

हेडर आम है और मंच से स्वतंत्र हैं। वे आम तर्क हैं और क्रॉस आर्किटेक्चर साझा किए जाएंगे।

+0

दूसरा प्रश्न यह है कि/linux शीर्षलेखों को शामिल करने के अलावा/asm-generic शामिल करने का कारण क्या है? उनके बीच संबंध क्या है? – dirtybit

+0

मेरी राय 'शामिल/एएसएम-जेनेरिक' हार्डवेयर से संबंधित डेटा संरचना तक पहुंचने के लिए एक आम और वर्दी इंटरफ़ेस प्रदान करती है। 'शामिल/एएसएम-जेनेरिक' डेवलपर्स को अंतर्निहित हार्डवेयर को अधिक आसान नियंत्रित करने और हार्डवेयर स्पेक विवरण को खोदने की आवश्यकता नहीं है। उदाहरण के लिए, 'शामिल/asm-generic/rtc.h' आरटीसी जानकारी पुनर्प्राप्त करने के लिए एक समान इंटरफ़ेस प्रदान करता है, लेकिन इसके कार्यान्वयन में आर्किटेक्चर-निर्भर कोड, जैसे 'CMOS_WRITE' और' CMOS_READ' शामिल हैं। – Wayne

संबंधित मुद्दे