या अधिक आम तौर पर, क्या होता है यदि एक ऑपोड के साथ एक स्विई निर्देश! = 0 ऐसे कर्नेल पर निष्पादित किया जाता है? क्या यह संकेत उत्पन्न करता है? मैं पूछता हूं क्योंकि मैं इसे फंसाना चाहता हूं।क्या होता है यदि कोई प्रोग्राम ईएबीआई-केवल कर्नेल में ओएबीआई स्टाइल सिस्कल बनाता है?
उत्तर
कोड जो swi
फ़ील्ड फ़ील्ड यहां है: http://lxr.linux.no/linux+*/arch/arm/kernel/entry-common.S#L335। मैं एआरएम विशेषज्ञ नहीं हूं, लेकिन ऐसा प्रतीत होता है कि सीपीयू swi
तर्क को तब भी नहीं दबाता है जब कर्नेल इसे प्राप्त कर सकता है; अगर कर्नेल जानना चाहता है, तो उसे कॉलिंग प्रोग्राम की रनटाइम छवि से निर्देश प्राप्त करना होगा। यह हर सिस्टम को अधिक महंगी कॉल करता है, इसलिए (यदि मैं चीजों को सही तरीके से पढ़ रहा हूं) कर्नेल केवल यह जानने के लिए परेशान है कि swi
तर्क यह है कि यह CONFIG_OABI_COMPAT
के साथ संकलित है।
संपादित करें: ARM ARM पुष्टि करता है कि एसडब्ल्यूआई इसके तर्क के साथ कुछ भी उपयोगी नहीं करता है। (भौतिक पृष्ठ 634/तार्किक पृष्ठ ए 7-118।)
से एक निश्चित उत्तर नहीं मिला। आप सही हैं। यह (http://www.gossamer-threads.com/lists/linux/kernel/970771?do=post_view_threaded#970771) सबसे नज़दीकी चीज है जो मुझे मिल सकती है, मैं इसे हाथ और हालिया कर्नेल में बंदरगाह करने की कोशिश कर रहा हूं। – Alberto
तो मैंने यह देखने की कोशिश की कि क्या होगा। मैं निम्नलिखित कार्यक्रम संकलित और यह भाग गया:
#include <stdio.h>
#include <signal.h>
void traphandler(int signum, siginfo_t *info, void *context)
{
puts("trap");
}
int main()
{
struct sigaction sa;
sa.sa_sigaction = traphandler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART | SA_SIGINFO;
sigaction(SIGTRAP, &sa, NULL);
puts("begin");
asm("swi 1");
puts("after swi 1");
asm("swi 255");
puts("after swi 255");
}
और आउटपुट था:
begin
after swi 1
after swi 255
संकेत हैंडलर नहीं बुलाया गया था, और न ही कार्यक्रम की मौत हो गई। काफी निराशाजनक।
- 1. लिनक्स पर वास्तव में एक सिस्कल कैसे होता है?
- 2. जब आप कोई प्रोग्राम चलाते हैं तो क्या होता है?
- 3. क्या होता है जब कर्नेल देरी_वर्क को
- 4. क्या होता है यदि php.ini गुम है?
- 5. क्या होता है यदि कंपाइलर फ़ंक्शन पॉइंटर
- 6. क्या jQuery में कोई स्टाइल चयनकर्ता है?
- 7. जब जावा प्रोग्राम शुरू होता है तो क्या होता है?
- 8. यदि जंगल में एक क्यूटी संकेत उत्सर्जित होता है और कोई भी इसे सुनने के लिए नहीं होता है, तो क्या यह ध्वनि बनाता है?
- 9. क्या कोई जावा कर्नेल/डेस्कटॉप अनुप्रयोग है?
- 10. एक प्रोग्राम जो एक और प्रोग्राम बनाता है
- 11. किसी प्रोग्राम में पहचानकर्ताओं के साथ क्या होता है?
- 12. यदि कोई कॉलम शून्य है
- 13. क्या होता है यदि ["x"! = X] बाश में करते हैं?
- 14. क्या जावा कर्नेल वास्तव में मौजूद है?
- 15. क्या विंडोज में लिनक्स पट्रस सिस्कल की तरह कुछ है?
- 16. क्या बनाता है! रेल में मतलब है?
- 17. क्या कोई उपलब्ध प्रोसेसिंग प्रोग्राम प्रोफाइलर है?
- 18. कर्नेल धागा क्या है?
- 19. प्रोग्राम प्रारंभ के दौरान टास्कबार में एप्लिकेशन आइकन गुम है, यदि कोई अन्य एप्लिकेशन सक्रिय है
- 20. क्या होता है यदि कोई साझा_प्टर का निर्माता विफल रहता है?
- 21. यदि कोई व्युत्पन्न वर्ग विनाशक अपवाद फेंकता है तो बेस क्लास विनाशक का क्या होता है
- 22. क्या होता है यदि अंतिमकरण के दौरान कोई अपवाद फेंक दिया जाता है()
- 23. यदि कोई कॉल कॉल दो कॉलन के साथ शुरू होता है तो इसका क्या अर्थ है?
- 24. क्या होता है यदि कोई उपयोगकर्ता ब्राउज़र से बाहर निकलता है या AJAX अनुरोध
- 25. क्या होता है यदि कोई डीडीओएस हमला विंडोज एज़ूर वेब साइट्स को हिट करता है?
- 26. क्या होता है यदि मेरा प्रोग्राम छोड़ने पर वर्टेक्स बफर ऑब्जेक्ट को हटाने में विफल रहता है?
- 27. ओपन एमपीआई/एमपीआईसी - क्या होता है यदि कोई नोड समाप्त हो जाता है?
- 28. यदि आप C++ में कोई मान वापस नहीं करते हैं तो क्या होता है?
- 29. स्मृति के साथ क्या होता है जो प्रोग्राम के अंत के बाद मुक्त नहीं होता है?
- 30. ओमेटा विशेष क्या बनाता है?
मैं कर्नेल स्रोत-पेड़ में चारों ओर खुदाई करने की सिफारिश करता हूं। एसआरआई जाल, शायद आश्चर्य की बात नहीं है, एआरएम असेंबलर में कर्नेल के बहुत कम हिस्सों में से एक है। – marko
सुझाव के लिए धन्यवाद, मैंने स्रोत को देखा लेकिन यह बिल्कुल आसान नहीं है :-) इसलिए मुझे – Alberto