[lttng-dev] [PATCH lttng-modules 1/2] Fix: Add Fedora version macros

Michael Jeanson mjeanson at efficios.com
Tue Feb 20 12:10:04 EST 2018


From: Loïc Gelle <loic.gelle at polymtl.ca>

Signed-off-by: Loïc Gelle <loic.gelle at polymtl.ca>
Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
---
 Kbuild.common          |  6 ++++++
 abi-fedora-version.sh  | 21 +++++++++++++++++++++
 lttng-kernel-version.h | 19 +++++++++++++++++++
 3 files changed, 46 insertions(+)
 create mode 100755 abi-fedora-version.sh

diff --git a/Kbuild.common b/Kbuild.common
index 16c62ab..c0d5409 100644
--- a/Kbuild.common
+++ b/Kbuild.common
@@ -22,6 +22,12 @@ ifneq ($(SLE_API_VERSION), 0)
   ccflags-y += -DSLE_API_VERSION=$(SLE_API_VERSION)
 endif
 
+FEDORA_REVISION_VERSION:=$(shell $(TOP_LTTNG_MODULES_DIR)/abi-fedora-version.sh $(CURDIR))
+
+ifneq ($(FEDORA_REVISION_VERSION), 0)
+  ccflags-y += -DFEDORA_REVISION_VERSION=$(FEDORA_REVISION_VERSION)
+endif
+
 RT_PATCH_VERSION:=$(shell $(TOP_LTTNG_MODULES_DIR)/rt-patch-version.sh $(CURDIR))
 
 ifneq ($(RT_PATCH_VERSION), 0)
diff --git a/abi-fedora-version.sh b/abi-fedora-version.sh
new file mode 100755
index 0000000..52dd044
--- /dev/null
+++ b/abi-fedora-version.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# First argument is the path to the kernel headers.
+KPATH="$1"
+
+if [ ! -f "${KPATH}/include/generated/utsrelease.h" ]; then
+	echo 0
+	exit 0
+fi
+
+# Assuming KPATH is the target kernel headers directory
+UTS_RELEASE=$(sed -rn 's/^#define UTS_RELEASE "(.*)"/\1/p' "${KPATH}/include/generated/utsrelease.h")
+FEDORA_VERSION=$(echo "${UTS_RELEASE}" | sed -n 's/.*\.fc\([0-9]*\)\..*/\1/p')
+
+if [ "x${FEDORA_VERSION}" = "x" ]; then
+        echo 0
+        exit 0
+fi
+
+FEDORA_REVISION_VERSION=$(echo "${UTS_RELEASE}" | sed -n 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\-\([0-9]*\).*/\4/p')
+echo "${FEDORA_REVISION_VERSION}"
diff --git a/lttng-kernel-version.h b/lttng-kernel-version.h
index 387aa0a..2b63a5d 100644
--- a/lttng-kernel-version.h
+++ b/lttng-kernel-version.h
@@ -115,6 +115,25 @@
 		LTTNG_SLE_VERSION_CODE < \
 		LTTNG_SLE_KERNEL_VERSION(a_high, b_high, c_high, d_high, e_high, f_high))
 
+/* Fedora */
+
+#define LTTNG_FEDORA_KERNEL_VERSION(a, b, c, d) \
+        (((((a) << 16) + ((b) << 8) + (c)) * 10000ULL) + (d))
+
+#ifdef FEDORA_REVISION_VERSION
+#define LTTNG_FEDORA_VERSION_CODE \
+        ((LINUX_VERSION_CODE * 10000ULL) + FEDORA_REVISION_VERSION)
+#else
+#define LTTNG_FEDORA_VERSION_CODE         0
+#endif
+
+#define LTTNG_FEDORA_KERNEL_RANGE(a_low, b_low, c_low, d_low, \
+                a_high, b_high, c_high, d_high) \
+        (LTTNG_FEDORA_VERSION_CODE >= \
+                LTTNG_FEDORA_KERNEL_VERSION(a_low, b_low, c_low, d_low) && \
+                LTTNG_FEDORA_VERSION_CODE < \
+                LTTNG_FEDORA_KERNEL_VERSION(a_high, b_high, c_high, d_high))
+
 /* RT patch */
 
 #define LTTNG_RT_KERNEL_VERSION(a, b, c, d) \
-- 
2.7.4



More information about the lttng-dev mailing list