Add an additional kernel version field compare is more sane. But the RHEL version number like "2.6.18-248" is not common. So we add this specific version number check function *_rh_* only for RHEL use. Further more, we can add addition specific kernel version number check functions for SLES and so on if needed.
Signed-off-by: Wanlong Gao <[email protected]> --- include/test.h | 2 ++ lib/tst_kvercmp.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/include/test.h b/include/test.h index e68ae60..94f249f 100644 --- a/include/test.h +++ b/include/test.h @@ -172,6 +172,8 @@ char *get_high_address(void); /* lib/tst_kvercmp.c */ void tst_getkver(int *k1, int *k2, int *k3); int tst_kvercmp(int r1, int r2, int r3); +void tst_rh_getkver(int *k1, int *k2, int *k3, int *k4); +int tst_rh_kvercmp(int r1, int r2, int r3, int r4); /* lib/tst_is_cwd.c */ int tst_is_cwd_nfs(void); diff --git a/lib/tst_kvercmp.c b/lib/tst_kvercmp.c index cb4fd67..697b970 100644 --- a/lib/tst_kvercmp.c +++ b/lib/tst_kvercmp.c @@ -66,3 +66,37 @@ int tst_kvercmp(int r1, int r2, int r3) return currver - testver; } + +void get_rh_kver(int *k1, int *k2, int *k3, int *k4) +{ + struct utsname uval; + char *kver; + char *r1, *r2, *r3, *r4; +#if !defined(linux) + extern char *strsep(); +#endif + + uname(&uval); + kver = uval.release; + r1 = strsep(&kver, "."); + r2 = strsep(&kver, "."); + r3 = strsep(&kver, "-"); + r4 = strsep(&kver, "."); + + *k1 = atoi(r1); + *k2 = atoi(r2); + *k3 = atoi(r3); + *k4 = atoi(r4); +} + +int tst_rh_kvercmp(int r1, int r2, int r3, int r4) +{ + int a1, a2, a3, a4; + int testver, currver; + + get_rh_kver(&a1, &a2, &a3, &a4); + testver = (r1 << 24) + (r2 << 16) + (r3 << 8) + r4; + currver = (a1 << 24) + (a2 << 16) + (a3 << 8) + r4; + + return currver - testver; +} -- 1.8.3.2.634.g7a3187e ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
