लिनक्स में मुझे सभी सिस्टम कॉल के लिए स्रोत कोड कहां मिल सकता है, क्योंकि मेरे पास स्रोत पेड़ है? अगर मैं किसी विशेष सिस्टम कॉल के लिए स्रोत कोड और असेंबली देखना चाहता हूं तो क्या ऐसा कुछ है जिसे मैं टर्मिनल में टाइप कर सकता हूं जैसे-my_system_call?मुझे सिस्टम कॉल स्रोत कोड कहां मिल सकता है?
उत्तर
सिस्टम कॉल के वास्तविक स्रोत को देखने के लिए आपको लिनक्स कर्नेल स्रोतों की आवश्यकता होगी। मैन्युअल पेज, यदि आपके स्थानीय सिस्टम पर स्थापित है, तो केवल कॉल का प्रलेखन होता है, न कि उनके स्रोत को।
दुर्भाग्य से आपके लिए, सिस्टम कॉल पूरे कर्नेल पेड़ में केवल एक विशेष स्थान पर संग्रहीत नहीं होते हैं। ऐसा इसलिए है क्योंकि विभिन्न सिस्टम कॉल सिस्टम के विभिन्न हिस्सों (प्रक्रिया प्रबंधन, फाइल सिस्टम प्रबंधन इत्यादि) को संदर्भित कर सकते हैं और इसलिए सिस्टम के उस विशेष भाग से संबंधित पेड़ के हिस्से से उन्हें अलग करने के लिए अक्षम नहीं होगा।
सबसे अच्छी बात यह है कि आप SYSCALL_DEFINE[0-6]
मैक्रो की तलाश कर सकते हैं। यह सिस्टम कॉल के रूप में कोड के दिए गए ब्लॉक को परिभाषित करने के लिए (स्पष्ट रूप से) उपयोग किया जाता है।
SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
{
/* do freaky ioctl stuff */
}
इस तरह की एक परिभाषा का अर्थ है कि ioctl
syscall घोषित किया जाता है और तीन तथ्य होते हैं: उदाहरण के लिए, fs/ioctl.c
निम्नलिखित कोड है। SYSCALL_DEFINE
के बगल में संख्या का अर्थ तर्कों की संख्या है।
SYSCALL_DEFINE0(getpid)
{
return task_tgid_vnr(current);
}
आशा है कि चीजें थोड़ा साफ करता है: उदाहरण के लिए, getpid(void)
के मामले में,, हम कोड निम्नलिखित है kernel/timer.c
में घोषित कर दिया।
किसी एप्लिकेशन के दृष्टिकोण से, system callkernel द्वारा किया गया एक प्राथमिक और परमाणु संचालन है।
Assembly Howto बताता है कि मशीन निर्देश के संदर्भ में क्या हो रहा है।
बेशक, कर्नेल एक सिस्कोल को संभालने के दौरान बहुत सी चीजें कर रहा है।
असल में, आप लगभग विश्वास कर सकते हैं कि संपूर्ण कर्नेल कोड सभी सिस्टम कॉल को संभालने के लिए समर्पित है (यह पूरी तरह से सत्य नहीं है, लेकिन लगभग; अनुप्रयोगों के दृष्टिकोण से, कर्नेल केवल सिस्टम कॉल के माध्यम से दिखाई देता है)। डैनियल कैमिल कोजर द्वारा अन्य answer बता रहे हैं कि कर्नेल फ़ंक्शन कुछ सिस्टम कॉल के संचालन को शुरू कर रहा है (लेकिन अक्सर, कर्नेल के कई अन्य हिस्सों पर अप्रत्यक्ष रूप से सिस्टम कॉल में भाग लेते हैं; उदाहरण के लिए, शेड्यूलर अप्रत्यक्ष रूप से fork
को लागू करने में भाग लेता है क्योंकि यह प्रबंधित करता है एक सफल fork
syscall द्वारा बनाई गई बाल प्रक्रिया)।
मैं जानता हूँ कि यह पुरानी है, लेकिन मैं भी _system_call()
के लिए स्रोत के लिए खोज रहा था और इस tidbit system_call प्रवेश बिंदु के लिए
वास्तविक कोड/usr/src/linux/कर्नेल/sys_call में पाया जा सकता पाया। कई सिस्टम कॉल के लिए एस वास्तविक कोड /usr/src/linux/kernel/sys.c में पाया जा सकता है, और शेष अन्यत्र पाए जाते हैं। ढूंढो तुम्हारा दोस्त है
मुझे लगता है कि यह दिनांकित है, क्योंकि मेरे पास यह फ़ाइल भी नहीं है। हालांकि, grep को ENTRY(system_call)
आर्क/x86/कर्नेल/entry_64 में मिला। और ऐसा लगता है कि व्यक्तिगत सिस्टम कॉल को कॉल किया जाता है। मैं अभी अपने इंटेल-सिंटैक्स x86 एएसएम पर नहीं हूं, इसलिए आपको देखना होगा कि यह वही है जो आप चाहते थे।
'entry_64.S' अब मुख्यलाइन 4.8 में मौजूद नहीं है। – sherrellbc
- 1. मुझे libpq स्रोत कहां मिल सकता है?
- 2. मुझे नमूना एक्सएचटीएमएल 5 स्रोत कोड कहां मिल सकता है?
- 3. मुझे System.Numerics.BigInteger के लिए स्रोत कोड कहां मिल सकता है?
- 4. मुझे एंड्रॉइड कैमरा एप्लिकेशन स्रोत कोड कहां मिल सकता है?
- 5. मुझे जेडीके 1.5 स्रोत कोड कहां मिल सकता है?
- 6. मुझे Qt4 स्रोत कोड संपादक विजेट कहां मिल सकता है?
- 7. मुझे अच्छा सी ++ स्रोत कोड कहां मिल सकता है?
- 8. मुझे System.Web.Optimization के लिए स्रोत कहां मिल सकता है?
- 9. यूनिक्स उपयोगिताओं का स्रोत कोड कहां मिल सकता है?
- 10. मुझे पाइथन मानक लाइब्रेरी कोड कहां मिल सकता है?
- 11. मुझे एमडीबीजी कहां मिल सकता है?
- 12. मुझे CreateProcess त्रुटि कोड 'विवरण कहां मिल सकता है?
- 13. मुझे SilverlightUIAutomationHelper.dll कहां मिल सकता है?
- 14. मुझे jsdom दस्तावेज़ीकरण कहां मिल सकता है?
- 15. मुझे पैकेज javax.media.opengl कहां मिल सकता है?
- 16. मुझे नवीनतम माइक्रोसॉफ्ट.एक्सचेंज.WebServices.DLL कहां मिल सकता है?
- 17. मुझे MysqlDumpSlow कमांड कहां मिल सकता है?
- 18. मुझे TableDiff.exe कहां मिल सकता है?
- 19. मुझे System.Linq.Dynamic dll कहां मिल सकता है?
- 20. मुझे एमएसपीईसी दस्तावेज कहां मिल सकता है?
- 21. मुझे GACUtil कहां मिल सकता है?
- 22. मुझे diff एल्गोरिदम कहां मिल सकता है?
- 23. मुझे एडोब जार कहां मिल सकता है?
- 24. मुझे जॉग जार कहां मिल सकता है?
- 25. मुझे WSDL.exe कहां मिल सकता है?
- 26. मुझे Hpricot दस्तावेज़ कहां मिल सकता है?
- 27. जावा के स्क्वायर रूट फ़ंक्शन के लिए मुझे स्रोत कोड कहां मिल सकता है?
- 28. मुझे सभी सी मानक पुस्तकालयों के लिए स्रोत कोड कहां मिल सकता है?
- 29. लिनक्स कोर कमांड के लिए मुझे स्रोत कोड कहां मिल सकता है?
- 30. मुझे विजिनेर सिफर के लिए जावा स्रोत कोड कहां मिल सकता है? मेरे ऐप में
http://kernel.org/ – TJD