Il fatto che un kernel sia preemptive o meno dipende da ciò che vuoi anticipare, come nel kernel di Linux, ci sono varie cose che possono avere la preemption abilitata/disabilitata separatamente.
Se il tuo kernel ha CONFIG_IKCONFIG e CONFIG_IKCONFIG_PROC abilitato, puoi scoprire la tua configurazione di prelazione tramite /proc/config.gz (se non ce l'hai, alcune distribuzioni spediscono la configurazione del kernel in /boot invece):
$ 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
Se hai CONFIG_IKCONFIG , ma non CONFIG_IKCONFIG_PROC , puoi ancora estrarlo dall'immagine del kernel con extract-ikconfig .
Un kernel prerilasciabile (desktop a bassa latenza) ha PREEMPT taggato nel nome della sua versione (uname -a ). Questo appare anche in /proc/version e nella stringa "version magic" usata per decidere se i moduli possono/non possono essere caricati su un dato kernel, ad es.
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Non esistono tag di questo tipo per CONFIG_PREEMPT_VOLUNTARY , afaik.