Merge pull request #1646 from mmichal10/configure-preempt

configure: add preemption_model_*() functions
This commit is contained in:
Robert Baldyga 2025-04-09 11:20:05 +02:00 committed by GitHub
commit 3c19caae1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 53 additions and 4 deletions

View File

@ -0,0 +1,52 @@
#!/bin/bash
#
# Copyright(c) 2025 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#
. $(dirname $3)/conf_framework.sh
check() {
cur_name=$(basename $2)
config_file_path=$1
if compile_module $cur_name "preempt_model_voluntary();" "linux/preempt.h" &&
compile_module $cur_name "preempt_model_none();" "linux/preempt.h"
then
echo $cur_name "1" >> $config_file_path
else
echo $cur_name "2" >> $config_file_path
fi
}
apply() {
case "$1" in
"1")
add_function "
static inline int cas_preempt_model_voluntary(void)
{
return preempt_model_voluntary();
}"
add_function "
static inline int cas_preempt_model_none(void)
{
return preempt_model_none();
}" ;;
"2")
add_function "
static inline int cas_preempt_model_voluntary(void)
{
return IS_ENABLED(CONFIG_PREEMPT_VOLUNTARY);
}"
add_function "
static inline int cas_preempt_model_none(void)
{
return IS_ENABLED(CONFIG_PREEMPT_NONE);
}" ;;
*)
exit 1
esac
}
conf_run $@

View File

@ -65,9 +65,6 @@ static inline uint32_t involuntary_preemption_enabled(void)
} }
#ifdef CONFIG_PREEMPT_DYNAMIC #ifdef CONFIG_PREEMPT_DYNAMIC
/* preempt_model_none() or preempt_model_voluntary() are not defined if
* the kernel has been compiled without PREEMPT_DYNAMIC
*/
printk(KERN_WARNING OCF_PREFIX_SHORT printk(KERN_WARNING OCF_PREFIX_SHORT
"The kernel has been compiled with preemption configurable\n" "The kernel has been compiled with preemption configurable\n"
"at boot time (PREEMPT_DYNAMIC=y). Open CAS doesn't support\n" "at boot time (PREEMPT_DYNAMIC=y). Open CAS doesn't support\n"
@ -75,7 +72,7 @@ static inline uint32_t involuntary_preemption_enabled(void)
"\"preempt=\" to \"none\" or \"voluntary\" in the kernel" "\"preempt=\" to \"none\" or \"voluntary\" in the kernel"
" command line\n"); " command line\n");
if (!preempt_model_none() && !preempt_model_voluntary()) { if (!cas_preempt_model_none() && !cas_preempt_model_voluntary()) {
printk(KERN_ERR OCF_PREFIX_SHORT printk(KERN_ERR OCF_PREFIX_SHORT
"The kernel has been booted with involuntary " "The kernel has been booted with involuntary "
"preemption enabled.\nFailed to load Open CAS kernel " "preemption enabled.\nFailed to load Open CAS kernel "