lttng-statedump-impl: Use generic hard irqs for Linux >= 3.12
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 28 Oct 2013 12:11:00 +0000 (12:11 +0000)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 4 Nov 2013 17:31:42 +0000 (12:31 -0500)
Quoting the original patch changelog from Otavio Salvador:

> The Linux kernel 3.12 uses the generic hard irqs system for all
> architectures and dropped the GENERIC_HARDIRQ option, as can be seen
> at the commit quoted below:
>
> ,----
> | commit 0244ad004a54e39308d495fee0a2e637f8b5c317
> | Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
> | Date:   Fri Aug 30 09:39:53 2013 +0200
> |
> |     Remove GENERIC_HARDIRQ config option
> |
> |     After the last architecture switched to generic hard irqs the config
> |     options HAVE_GENERIC_HARDIRQS & GENERIC_HARDIRQS and the related code
> |     for !CONFIG_GENERIC_HARDIRQS can be removed.
> |
> |     Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
> `----

Introduce wrapper/irq.h to move the feature availability testing logic
into a specific wrapper header. It now tests if the kernel version is
>= 3.12 or if CONFIG_GENERIC_HARDIRQS is defined (for older kernels).
Introduce the lttng-specific CONFIG_LTTNG_HAS_LIST_IRQ to track
availability of this feature within LTTng.

Reported-by: Philippe Mangaud <r49081@freescale.com>
Reported-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
lttng-statedump-impl.c
wrapper/irq.h [new file with mode: 0644]

index b8f9d356e486ac4ce5a4b414a168a398bdee0542..1269a3e05ee7e680d8130ed4c8a47f4ea6ac22a6 100755 (executable)
@@ -51,8 +51,9 @@
 #include "wrapper/spinlock.h"
 #include "wrapper/fdtable.h"
 #include "wrapper/nsproxy.h"
+#include "wrapper/irq.h"
 
-#ifdef CONFIG_GENERIC_HARDIRQS
+#ifdef CONFIG_LTTNG_HAS_LIST_IRQ
 #include <linux/irq.h>
 #endif
 
@@ -244,7 +245,7 @@ int lttng_enumerate_vm_maps(struct lttng_session *session)
 }
 #endif
 
-#ifdef CONFIG_GENERIC_HARDIRQS
+#ifdef CONFIG_LTTNG_HAS_LIST_IRQ
 
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
 #define irq_desc_get_chip(desc) get_irq_desc_chip(desc)
diff --git a/wrapper/irq.h b/wrapper/irq.h
new file mode 100644 (file)
index 0000000..b6feb0c
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _LTTNG_WRAPPER_IRQ_H
+#define _LTTNG_WRAPPER_IRQ_H
+
+/*
+ * wrapper/irq.h
+ *
+ * wrapper around linux/irq.h.
+ *
+ * Copyright (C) 2013 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; only
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <linux/version.h>
+
+/*
+ * Starting from the 3.12 Linux kernel, all architectures use the
+ * generic hard irqs system. More details can be seen at commit
+ * 0244ad004a54e39308d495fee0a2e637f8b5c317 in the Linux kernel GIT.
+ */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0) \
+       || defined(CONFIG_GENERIC_HARDIRQS))
+# define CONFIG_LTTNG_HAS_LIST_IRQ
+#endif
+
+#endif /* _LTTNG_WRAPPER_IRQ_H */
This page took 0.027238 seconds and 4 git commands to generate.