回答:
カーネルがプリエンプティブであるかどうかは、Linuxカーネルのようにプリエンプトしたいものに依存します。プリエンプションを個別に有効/無効にできるさまざまなものがあります。
あなたのカーネルが持っている場合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。