Zda je jádro preemptivní nebo ne, záleží na tom, co chcete preempovat, stejně jako v linuxovém jádře existují různé věci, které mohou mít preempci povolenou/deaktivovanou samostatně.
Pokud má vaše jádro CONFIG_IKCONFIG
a CONFIG_IKCONFIG_PROC
Pokud je povoleno, můžete svou konfiguraci preempce zjistit pomocí /proc/config.gz
(pokud toto nemáte, některé distribuce dodávají konfiguraci jádra v /boot
místo toho):
$ 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
Pokud máte CONFIG_IKCONFIG
, ale ne CONFIG_IKCONFIG_PROC
, stále jej můžete získat z obrazu jádra pomocí extract-ikconfig
.
Preemptibilní jádro (plocha s nízkou latencí) má PREEMPT
označený v názvu verze (uname -a
). To se také objevuje v /proc/version
a v řetězci "version magic", který se používá k rozhodnutí, zda moduly lze/nelze načíst do daného jádra, např.
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Pro CONFIG_PREEMPT_VOLUNTARY
žádné takové značení neexistuje , afaik.