सभी जानते हैं कि हस्तक्षेप हैंडलर जितना संभव हो छोटा होना चाहिए। और एक इंटरप्ट हैंडलर के अंदर डीबगिंग के लिए printk
जैसे कार्यों को जोड़ना ऐसा कुछ नहीं किया जाना चाहिए। असल में, मैंने इसे पहले कोशिश की जब मैं लिनक्स कर्नेल को एक इंटरप्ट संचालित चार डिवाइस के लिए डिबग कर रहा था, और यह ड्राइवर के समय को तोड़ दिया।प्रिंटक, क्या वाकई यह बुरा है?
मेरे पास सवाल है, यही कारण है कि यह क्यों हो रहा है? printk
फ़ंक्शन buffered है! इसका मतलब है, जहां तक मैं समझता हूं कि डेटा को कतार में डाला गया है, और इसे बाद में संभाला जा रहा है, संभवतया इंटरप्ट हैंडलर समाप्त होने के बाद।
तो यह क्यों काम नहीं करता है?
संभावना पर विचार करें कि आपका प्रिंट-कॉल बस बफर भरता है, जिससे इसे फ्लश करने के लिए मजबूर किया जाता है। आपके इंटरप्ट हैंडलर में I/O करते समय क्या होगा? –
हाँ, यह वास्तव में बुरा है। धन्यवाद और शुभ रात्रि। –
यह * काम * करता है। 'printk' को इंटरप्ट या प्रक्रिया संदर्भ से बुलाया जाने वाला डिज़ाइन किया गया है। यदि ऐसा नहीं होता है, तो यह डिबगिंग के लिए अधिक उपयोग नहीं करेगा। हालांकि, आप स्पष्ट रूप से उत्पादन निर्माता में इंटरप्ट संदर्भ में इसे कॉल नहीं करते हैं। – EML