From fd51d7bac97fc57370b0d908a7740c4ff934cd3f Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 2 Apr 2017 02:33:20 +0200 Subject: [PATCH] refactoring: kernel_has_version() => kernel_get_version() + version_cmp() --- include/villas/kernel/kernel.h | 11 +++++------ lib/kernel/kernel.c | 8 +++----- src/node.c | 3 ++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/include/villas/kernel/kernel.h b/include/villas/kernel/kernel.h index b8a54af81..5956c01b3 100644 --- a/include/villas/kernel/kernel.h +++ b/include/villas/kernel/kernel.h @@ -11,6 +11,9 @@ #include +/* Forward declarations */ +struct version; + //#include /** Check if current process has capability \p cap. @@ -38,12 +41,8 @@ int kernel_set_nr_hugepages(int nr); */ int kernel_get_cmdline_param(const char *param, char *buf, size_t len); -/** Check if kernel is version is sufficient - * - * @retval 0 Kernel version is sufficient. - * @reval <>0 Kernel version is not sufficient. - */ -int kernel_has_version(int maj, int min); +/** Get the version of the kernel. */ +int kernel_get_version(struct version *v); /** Checks if a kernel module is loaded * diff --git a/lib/kernel/kernel.c b/lib/kernel/kernel.c index f4969ef62..07bdcbc8d 100644 --- a/lib/kernel/kernel.c +++ b/lib/kernel/kernel.c @@ -87,19 +87,17 @@ int kernel_module_loaded(const char *module) return ret; } -int kernel_has_version(int maj, int min) +int kernel_get_version(struct version *v) { struct utsname uts; - struct version current; - struct version required = { maj, min }; if (uname(&uts) < 0) return -1; - if (version_parse(uts.release, ¤t)) + if (version_parse(uts.release, v)) return -1; - return version_cmp(¤t, &required) < 0; + return 0; } int kernel_get_cmdline_param(const char *param, char *buf, size_t len) diff --git a/src/node.c b/src/node.c index 06350cadc..acd4feb7a 100644 --- a/src/node.c +++ b/src/node.c @@ -89,7 +89,8 @@ int main(int argc, char *argv[]) BLD(MAG(__DATE__)), BLD(MAG(__TIME__))); /* Checks system requirements*/ - if (kernel_has_version(KERNEL_VERSION_MAJ, KERNEL_VERSION_MIN)) + struct version kver, reqv = { KERNEL_VERSION_MAJ, KERNEL_VERSION_MIN }; + if (kernel_get_version(&kver) == 0 && version_cmp(&kver, &reqv) < 0) error("Your kernel version is to old: required >= %u.%u", KERNEL_VERSION_MAJ, KERNEL_VERSION_MIN); signals_init(quit);