[ovs-dev] [PATCH] autoconf: check for linux/perf_event.h
Andy Zhou
azhou at nicira.com
Thu Apr 16 20:02:06 UTC 2015
Older Linux prior to version 2.6.32 do not support user mode
performance events, They also don't have 'linux/perf_event.h' header
file. Add check for those older Linux to conditionally compile
perf-counter.c
Reported-by: Alex Wang <alexw at nicira.com>
Signed-off-by: Andy Zhou <azhou at nicira.com>
---
configure.ac | 1 +
lib/perf-counter.c | 5 +++--
lib/perf-counter.h | 4 ++--
m4/openvswitch.m4 | 4 ++++
4 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index 8d47eb9..d1b48ca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -111,6 +111,7 @@ OVS_CHECK_PKIDIR
OVS_CHECK_RUNDIR
OVS_CHECK_DBDIR
OVS_CHECK_BACKTRACE
+OVS_CHECK_PERF_EVENT
OVS_CHECK_VALGRIND
OVS_CHECK_SOCKET_LIBS
OVS_CHECK_XENSERVER_VERSION
diff --git a/lib/perf-counter.c b/lib/perf-counter.c
index 4188f6b..a6c4965 100644
--- a/lib/perf-counter.c
+++ b/lib/perf-counter.c
@@ -15,7 +15,9 @@
*/
/* This implementation only applies to the Linux platform. */
-#ifdef __linux__
+
+#include <config.h>
+#if defined(__linux__) && defined(HAVE_PERF_EVENT_H)
#include <stddef.h>
#include <sys/types.h>
@@ -24,7 +26,6 @@
#include <sys/ioctl.h>
#include <linux/perf_event.h>
#include <asm/unistd.h>
-#include <config.h>
#include "dynamic-string.h"
#include "openvswitch/vlog.h"
#include "perf-counter.h"
diff --git a/lib/perf-counter.h b/lib/perf-counter.h
index 851bd63..9b36919 100644
--- a/lib/perf-counter.h
+++ b/lib/perf-counter.h
@@ -94,7 +94,7 @@
* will work just fine.
*/
-#ifdef __linux__
+#if defined(__linux__) && defined(HAVE_PERF_EVENT_H)
struct perf_counter {
const char *name;
bool once;
@@ -138,7 +138,7 @@ static inline void perf_counters_clear(void) {}
static inline char *
perf_counters_to_string(void)
{
- return xstrdup("Not Supported on this platform. Only available on Linux.");
+ return xstrdup("Not Supported on this platform. Only available on Linux (version >= 2.6.32)");
}
#endif
diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
index ba3ed9b..8ace9ce 100644
--- a/m4/openvswitch.m4
+++ b/m4/openvswitch.m4
@@ -243,6 +243,10 @@ AC_DEFUN([OVS_CHECK_BACKTRACE],
[AC_DEFINE([HAVE_BACKTRACE], [1],
[Define to 1 if you have backtrace(3).])])])
+dnl Defines HAVE_PERF_EVENT if linux/perf_event.h is found.
+AC_DEFUN([OVS_CHECK_PERF_EVENT],
+ [AC_CHECK_HEADERS([linux/perf_event.h])])
+
dnl Checks for valgrind/valgrind.h.
AC_DEFUN([OVS_CHECK_VALGRIND],
[AC_CHECK_HEADERS([valgrind/valgrind.h])])
--
1.9.1
More information about the dev
mailing list