Jawaban:
Apakah kernel preemptive atau tidak tergantung pada apa yang ingin Anda preempt, seperti pada kernel Linux, ada berbagai hal yang dapat mengaktifkan / menonaktifkan preemption secara terpisah.
Jika kernel Anda telah CONFIG_IKCONFIG
dan CONFIG_IKCONFIG_PROC
diaktifkan, Anda dapat mengetahui konfigurasi preemption Anda melalui /proc/config.gz
(jika Anda tidak memiliki ini, beberapa distribusi mengirimkan konfigurasi kernel /boot
sebagai gantinya):
$ 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
Jika sudah CONFIG_IKCONFIG
, tetapi belum CONFIG_IKCONFIG_PROC
, Anda masih bisa mengeluarkannya dari kernel image extract-ikconfig
.
Kernel preemptible (desktop latensi rendah) telah PREEMPT
memberi tag pada nama versinya ( uname -a
). Ini juga muncul di /proc/version
dan dalam string "sihir versi" yang digunakan untuk memutuskan apakah modul dapat / tidak dapat dimuat pada kernel yang diberikan, misalnya
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Tidak ada penandaan seperti itu untuk CONFIG_PREEMPT_VOLUNTARY
, afaik.