2015-11-02 3 views

उत्तर

6

spin_lock* कार्यों कर raw_spin_lock* के समान के साथ साथ, जब लॉक डिबगिंग (CONFIG_DEBUG_LOCK_ALLOC) सक्षम है, इस तरह की जांच के रूप में ताला के संचालन के लिए कुछ अतिरिक्त क्रम चेक, प्रदर्शन डेडलॉक के लिए। ये चेक lockdep सबसिस्टम द्वारा किए जाते हैं।

एक नियम के रूप में, spin_lock* फ़ंक्शंस का उपयोग तब भी किया जाना चाहिए जब यह संभव हो

केवल बहुत ही मुश्किल लॉकिंग नीति के दुर्लभ मामलों में, जब lockdep झूठी चेतावनियां उत्पन्न कर सकता है, raw_spin_lock* फ़ंक्शंस का उपयोग किया जा सकता है।

इसके अलावा, raw_* कार्यों को स्मृति उपयोग या perfomance कारणों को कम करने के लिए आम लोगों को प्राथमिकता दी जा सकती है। लेकिन यह वास्तविक समय/स्थान माप होना चाहिए, इन अनुकूलन का उपयोग करने से महत्वपूर्ण परावर्तित परावर्तित होना चाहिए।

+0

जब लॉकडेप झूठी चेतावनियां उत्पन्न कर सकता है? और in -rt सामान्य spin_lock सो सकते हैं जबकि raw_spin_lock नहीं है, क्या यह सच है? –

3

मुख्य अंतर यह है spin_lock गैर RT के लिए raw_spin_lock वेरिएंट के लिए नक्शे वेरिएंट जबकि अगर CONFIG_PREEMPT_RT सेट कर दिया जाता है, तो वे rt_spin_lock को जो सो सकते हैं नक्शा है।

हम आरटी हैं या नहीं, इस पर निर्भर करते हुए spin_lock नींद से बनाम गैर-नींद भिन्नता से decoupling करके, spin_lock API को कर्नेल कोड में लगातार रखा जा सकता है।

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