यह this question से संबंधित है।लिनक्स डिवाइस ड्राइवरों में फ़्लोटिंग-पॉइंट का उपयोग करने के लिए कोडिंग सम्मेलन क्या हैं?
मैं लिनक्स डिवाइस ड्राइवर या कर्नेल मॉड्यूल पर एक विशेषज्ञ नहीं हूं, लेकिन मैं रुबिनी & कॉर्बेट और कई ऑनलाइन स्रोतों द्वारा "लिनक्स डिवाइस ड्राइवर्स" [O'Reilly] पढ़ रहा हूं, लेकिन मेरे पास नहीं है अभी तक इस विशिष्ट मुद्दे पर कुछ भी खोजने में सक्षम है।
कर्नेल या ड्राइवर मॉड्यूल को फ़्लोटिंग-पॉइंट रजिस्टरों का उपयोग करने की अनुमति कब दी जाती है?
यदि हां, तो उनकी सामग्री को सहेजने और पुनर्स्थापित करने के लिए कौन जिम्मेदार है?
(x86-64 वास्तुकला मान लें)
अगर मैं सही ढंग से समझ, जब भी एक किलोमीटर चल रहा है, यह एक हार्डवेयर संदर्भ (या हार्डवेयर धागा या पंजीकृत सेट - जो कुछ भी आप इसे कॉल करना चाहते हैं) का उपयोग किया जाता है कि preempted कर दिया गया है कुछ आवेदन धागे से। यदि आप सी में अपना केएम लिखते हैं, तो संकलक सही ढंग से बीमा करेगा कि सामान्य प्रयोजन रजिस्ट्रार ठीक से सहेजे और पुनर्स्थापित किए जाते हैं (एप्लिकेशन में जितना अधिक), लेकिन यह स्वचालित रूप से फ़्लोटिंग-पॉइंट रजिस्टरों के साथ नहीं होता है। उस मामले के लिए, बहुत सारे केएम यह भी मान नहीं सकते कि प्रोसेसर में कोई फ़्लोटिंग-पॉइंट क्षमता है।
क्या मैं यह अनुमान लगाने में सही हूं कि एक केएम जो फ़्लोटिंग-पॉइंट का उपयोग करना चाहता है उसे फ़्लोटिंग-पॉइंट स्टेटस को सावधानीपूर्वक सहेजना और पुनर्स्थापित करना है? क्या ऐसा करने के लिए मानक कर्नेल फ़ंक्शन हैं?
क्या कोडिंग सम्मेलन इस वर्तनी के लिए कहीं भी बाहर हैं?
क्या वे एसएमपी-गैर एसएमपी ड्राइवरों के लिए अलग हैं?
क्या वे पुराने गैर-प्रीपेप्टिव कर्नल और नए प्रीपेप्टिव कर्नेल के लिए अलग हैं?