Qu'un noyau soit préemptif ou non dépend de ce que vous voulez préempter, comme dans le noyau Linux, il y a plusieurs choses qui peuvent avoir la préemption activée/désactivée séparément.
Si votre noyau a CONFIG_IKCONFIG et CONFIG_IKCONFIG_PROC activé, vous pouvez connaître votre configuration de préemption via /proc/config.gz (si vous ne l'avez pas, certaines distributions fournissent la configuration du noyau en /boot à la place):
$ 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
Si vous avez CONFIG_IKCONFIG , mais pas CONFIG_IKCONFIG_PROC , vous pouvez toujours l'extraire de l'image du noyau avec extract-ikconfig .
Un noyau préemptif (bureau à faible latence) a PREEMPT marqué dans son nom de version (uname -a ). Cela apparaît également dans /proc/version et dans la chaîne "version magique" utilisée pour décider si les modules peuvent/ne peuvent pas être chargés sur un noyau donné, par ex.
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Aucun balisage de ce type n'existe pour CONFIG_PREEMPT_VOLUNTARY , autant que je sache.