Antworten:
Ob ein Kernel präemptiv ist oder nicht, hängt davon ab, was Sie präemptivieren möchten. Wie im Linux-Kernel gibt es verschiedene Dinge, bei denen die Preemption separat aktiviert / deaktiviert werden kann.
Wenn Ihr Kernel aktiviert CONFIG_IKCONFIG
und CONFIG_IKCONFIG_PROC
aktiviert ist, können Sie Ihre Preemption-Konfiguration über herausfinden /proc/config.gz
(falls dies nicht der Fall ist, wird die Kernel-Konfiguration von einigen Distributionen /boot
stattdessen ausgeliefert):
$ 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
Wenn Sie haben CONFIG_IKCONFIG
, aber nicht CONFIG_IKCONFIG_PROC
, können Sie es immer noch mit aus dem Kernel-Image herausholen extract-ikconfig
.
Ein präemptibler Kernel (Desktop mit geringer Latenz) hat PREEMPT
seinen Versionsnamen ( uname -a
) markiert . Dies erscheint auch in /proc/version
und in der Zeichenfolge "version magic", mit der entschieden wird, ob Module auf einen bestimmten Kernel geladen werden können / nicht, z
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Für CONFIG_PREEMPT_VOLUNTARY
afaik gibt es keine solche Kennzeichnung .