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

Reply via email to