From ab0a7e0a44d494e175bde13f1b5f632f6edbb9f8 Mon Sep 17 00:00:00 2001 From: Kozlowski Mateusz Date: Fri, 26 Mar 2021 12:57:28 +0100 Subject: [PATCH] Add detection of ktime_get_real_ts64 vs getnstimeofday Signed-off-by: Kozlowski Mateusz --- configure.d/1_timekeeping.conf | 31 ++++++++++++++++++++++++ modules/cas_cache/linux_kernel_version.h | 2 +- modules/cas_cache/ocf_env.h | 6 ++--- 3 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 configure.d/1_timekeeping.conf diff --git a/configure.d/1_timekeeping.conf b/configure.d/1_timekeeping.conf new file mode 100644 index 0000000..372e2ff --- /dev/null +++ b/configure.d/1_timekeeping.conf @@ -0,0 +1,31 @@ +#!/bin/bash +# +# Copyright(c) 2012-2021 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause-Clear +# + +. $(dirname $3)/conf_framework + +check() { + cur_name=$(basename $2) + config_file_path=$1 + if compile_module $cur_name "ktime_get_real_ts64(NULL)" "linux/ktime.h" + then + echo $cur_name "1" >> $config_file_path + else + echo $cur_name "2" >> $config_file_path + fi +} + +apply() { + case "$1" in + "1") + add_define "CAS_GET_CURRENT_TIME(timespec) ktime_get_real_ts64(timespec)" ;; + "2") + add_define "CAS_GET_CURRENT_TIME(timespec) getnstimeofday(timespec)" ;; + *) + exit 1 + esac +} + +conf_run $@ diff --git a/modules/cas_cache/linux_kernel_version.h b/modules/cas_cache/linux_kernel_version.h index 8e59b88..40dd497 100644 --- a/modules/cas_cache/linux_kernel_version.h +++ b/modules/cas_cache/linux_kernel_version.h @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include "generated_defines.h" diff --git a/modules/cas_cache/ocf_env.h b/modules/cas_cache/ocf_env.h index 60a130d..d879b04 100644 --- a/modules/cas_cache/ocf_env.h +++ b/modules/cas_cache/ocf_env.h @@ -533,14 +533,14 @@ static inline void env_cond_resched(void) static inline int env_in_interrupt(void) { - return in_interrupt();; + return in_interrupt(); } /* *** TIME *** */ static inline uint64_t env_get_tick_count(void) { - struct timespec ts; - getnstimeofday(&ts); + struct timespec64 ts; + CAS_GET_CURRENT_TIME(&ts); return ts.tv_sec * 1000000000UL + ts.tv_nsec; }