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