
This allows to pass not only C code, but also preprocessor directives. Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
75 lines
2.4 KiB
Bash
75 lines
2.4 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Copyright(c) 2012-2022 Intel Corporation
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
|
|
. $(dirname $3)/conf_framework
|
|
|
|
# RHEL 7.3
|
|
check() {
|
|
cur_name=$(basename $2)
|
|
config_file_path=$1
|
|
if compile_module $cur_name "struct queue_limits q; q.limits_aux;" "linux/blkdev.h"
|
|
then
|
|
echo $cur_name "1" >> $config_file_path
|
|
elif compile_module $cur_name "struct queue_limits q; q.max_write_zeroes_sectors;" "linux/blkdev.h"
|
|
then
|
|
echo $cur_name "2" >> $config_file_path
|
|
elif compile_module $cur_name "struct queue_limits q; q.max_write_same_sectors;" "linux/blkdev.h"
|
|
then
|
|
echo $cur_name "3" >> $config_file_path
|
|
else
|
|
echo $cur_name "X" >> $config_file_path
|
|
fi
|
|
}
|
|
|
|
apply() {
|
|
case "$1" in
|
|
"1")
|
|
add_function "
|
|
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
|
struct request_queue *cache_q, struct request_queue *core_q)
|
|
{
|
|
struct queue_limits_aux *l_aux = exp_q->limits.limits_aux;
|
|
exp_q->limits = cache_q->limits;
|
|
exp_q->limits.limits_aux = l_aux;
|
|
if (exp_q->limits.limits_aux && cache_q->limits.limits_aux)
|
|
*exp_q->limits.limits_aux = *cache_q->limits.limits_aux;
|
|
exp_q->limits.max_sectors = core_q->limits.max_sectors;
|
|
exp_q->limits.max_hw_sectors = core_q->limits.max_hw_sectors;
|
|
exp_q->limits.max_segments = core_q->limits.max_segments;
|
|
exp_q->limits.max_write_same_sectors = 0;
|
|
if (queue_virt_boundary(cache_q))
|
|
queue_flag_set(QUEUE_FLAG_NOMERGES, cache_q);
|
|
}" ;;
|
|
"2")
|
|
add_function "
|
|
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
|
struct request_queue *cache_q, struct request_queue *core_q)
|
|
{
|
|
exp_q->limits = cache_q->limits;
|
|
exp_q->limits.max_sectors = core_q->limits.max_sectors;
|
|
exp_q->limits.max_hw_sectors = core_q->limits.max_hw_sectors;
|
|
exp_q->limits.max_segments = core_q->limits.max_segments;
|
|
exp_q->limits.max_write_same_sectors = 0;
|
|
exp_q->limits.max_write_zeroes_sectors = 0;
|
|
}" ;;
|
|
"3")
|
|
add_function "
|
|
static inline void cas_copy_queue_limits(struct request_queue *exp_q,
|
|
struct request_queue *cache_q, struct request_queue *core_q)
|
|
{
|
|
exp_q->limits = cache_q->limits;
|
|
exp_q->limits.max_sectors = core_q->limits.max_sectors;
|
|
exp_q->limits.max_hw_sectors = core_q->limits.max_hw_sectors;
|
|
exp_q->limits.max_segments = core_q->limits.max_segments;
|
|
exp_q->limits.max_write_same_sectors = 0;
|
|
}" ;;
|
|
*)
|
|
exit 1
|
|
esac
|
|
}
|
|
|
|
conf_run $@
|