जवाबों:
क्या कोई कर्नेल प्रीमेप्टिव है या नहीं यह इस बात पर निर्भर करता है कि आप प्रीमेप्ट करना चाहते हैं, जैसे कि लिनक्स कर्नेल में, विभिन्न चीजें हैं जो प्रीमेशन इनेबल / डिसेबल हो सकती हैं।
यदि आपकी कर्नेल में सक्षम CONFIG_IKCONFIG
और CONFIG_IKCONFIG_PROC
सक्षम है, तो आप अपने प्रीएम्प्शन कॉन्फ़िगरेशन का पता लगा सकते हैं /proc/config.gz
(यदि आपके पास ऐसा नहीं है, तो कुछ वितरण /boot
इसके बजाय कर्नेल कॉन्फ़िगरेशन को शिप करते हैं ):
$ gzip -cd /proc/config.gz | grep PREEMPT
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_PREEMPT_TRACER is not set
यदि आपके पास है CONFIG_IKCONFIG
, लेकिन नहींCONFIG_IKCONFIG_PROC
, तो भी आप इसे कर्नेल छवि से बाहर निकाल सकते हैं extract-ikconfig
।
एक प्रीमेचेबल कर्नेल (कम-विलंबता डेस्कटॉप) ने PREEMPT
इसके संस्करण नाम ( uname -a
) में टैग किया है । इसमें भी दिखाई देता है/proc/version
मॉड्यूल में "वर्जन मैजिक" स्ट्रिंग जिसका उपयोग यह तय करने के लिए किया जाता है कि क्या किसी दिए गए कर्नेल पर लोड नहीं किया जा सकता है, जैसे
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
ऐसी कोई टैगिंग मौजूद नहीं है CONFIG_PREEMPT_VOLUNTARY
, afaik।