Respostas:
Se um kernel é preemptivo ou não, depende do que você deseja antecipar, como no kernel Linux, há várias coisas que podem ter a preempção ativada / desativada separadamente.
Se o seu kernel tiver CONFIG_IKCONFIG
e CONFIG_IKCONFIG_PROC
ativado, você poderá descobrir sua configuração de preempção /proc/config.gz
(se você não tiver isso, algumas distribuições enviarão a configuração do kernel /boot
):
$ 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 você possui CONFIG_IKCONFIG
, mas não CONFIG_IKCONFIG_PROC
pode, ainda pode tirá-lo da imagem do kernel extract-ikconfig
.
Um kernel preemptivo (área de trabalho de baixa latência) foi PREEMPT
marcado em seu nome de versão ( uname -a
). Isso também aparece na /proc/version
string "version magic" usada para decidir se os módulos podem ou não ser carregados em um determinado kernel, por exemplo
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Não existe essa marcação para CONFIG_PREEMPT_VOLUNTARY
, depois.