Also, use it in getdelays.c to prevent compilation failures

Hello,

I've found that ltp didn't compile on Debian because of old kernel headers, 
which contain taskstats struct without some of the needed fields. This autoconf 
test detects it and disables the code that would otherwise break.

Regards
     Jiri Palecek

Signed-off-by: Jiri Palecek <[email protected]>
---
  configure.ac                                    |    1 +
  include/config.h.default                        |    2 +
  m4/ltp-taskstats.m4                             |   38 +++++++++++++++++++++++
  testcases/kernel/controllers/cgroup/getdelays.c |   15 ++++++---
  4 files changed, 51 insertions(+), 5 deletions(-)
  create mode 100644 m4/ltp-taskstats.m4

diff --git a/configure.ac b/configure.ac
index c534c97..9fc1696 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,5 +20,6 @@ LTP_CHECK_SYSCALL_MODIFY_LDT
  LTP_CHECK_SYSCALL_SIGNALFD
  LTP_CHECK_SELINUX
  LTP_CHECK_CRYPTO
+LTP_CHECK_TASKSTATS
   AC_OUTPUT
diff --git a/include/config.h.default b/include/config.h.default
index 9125d85..b9a6731 100644
--- a/include/config.h.default
+++ b/include/config.h.default
@@ -14,3 +14,5 @@
   /* ifaddrs.h is in glibc-2.3+ */
  #define HAVE_IFADDRS_H 1
+
+#define HAVE_TASKSTATS_FREEPAGES_COUNT 1
diff --git a/m4/ltp-taskstats.m4 b/m4/ltp-taskstats.m4
new file mode 100644
index 0000000..54da783
--- /dev/null
+++ b/m4/ltp-taskstats.m4
@@ -0,0 +1,38 @@
+dnl
+dnl Copyright (c) Jiri Palecek 2009
+dnl
+dnl This program is free software;  you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY;  without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+dnl the GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program;  if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+dnl
+
+
+AC_DEFUN([LTP_CHECK_TASKSTATS],
+_LTP_CHECK_TASKSTATS_FREEPAGES
+)dnl
+
+dnl _LTP_CHECK_TASKSTATS_FREEPAGES
+dnl ----------------------------------------
+dnl
+dnl Check for taskstat.freepages_* members, introduced to the kernel
+dnl in commit 016ae219 in July 2008
+dnl
+
+AC_DEFUN([_LTP_CHECK_TASKSTATS_FREEPAGES],
+[dnl
+AC_CHECK_MEMBERS([struct taskstats.freepages_count],[],[],[dnl
+#include <linux/types.h>
+#include <linux/taskstats.h>
+])
+]dnl
+)dnl
diff --git a/testcases/kernel/controllers/cgroup/getdelays.c 
b/testcases/kernel/controllers/cgroup/getdelays.c
index 13f7b3a..9fe2831 100644
--- a/testcases/kernel/controllers/cgroup/getdelays.c
+++ b/testcases/kernel/controllers/cgroup/getdelays.c
@@ -199,8 +199,10 @@ void print_delayacct(struct taskstats *t)
               "SWAP  %15s%15s\n"
               "      %15llu%15llu\n"
               "RECLAIM  %12s%15s\n"
-              "      %15llu%15llu\n",
-              "count", "real total", "virtual total", "delay total",
+#ifdef HAVE_TASKSTATS_FREEPAGES_COUNT
+              "      %15llu%15llu\n"
+#endif
+              , "count", "real total", "virtual total", "delay total",
               (unsigned long long)t->cpu_count,
               (unsigned long long)t->cpu_run_real_total,
               (unsigned long long)t->cpu_run_virtual_total,
@@ -211,9 +213,12 @@ void print_delayacct(struct taskstats *t)
               "count", "delay total",
               (unsigned long long)t->swapin_count,
               (unsigned long long)t->swapin_delay_total,
-              "count", "delay total",
-              (unsigned long long)t->freepages_count,
-              (unsigned long long)t->freepages_delay_total);
+              "count", "delay total"
+#ifdef HAVE_TASKSTATS_FREEPAGES_COUNT
+              , (unsigned long long)t->freepages_count,
+              (unsigned long long)t->freepages_delay_total
+#endif
+              );
  }
   void task_context_switch_counts(struct taskstats *t)
-- 
1.6.2


------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to