1dnl #
2dnl # Ensure the DECLARE_EVENT_CLASS macro is available to non-GPL modules.
3dnl #
4AC_DEFUN([ZFS_AC_KERNEL_DECLARE_EVENT_CLASS], [
5	AC_MSG_CHECKING([whether DECLARE_EVENT_CLASS() is available])
6	ZFS_LINUX_TRY_COMPILE_HEADER([
7		#include <linux/module.h>
8		MODULE_LICENSE("$ZFS_META_LICENSE");
9
10		#define CREATE_TRACE_POINTS
11		#include "conftest.h"
12	],[
13		trace_zfs_autoconf_event_one(1UL);
14		trace_zfs_autoconf_event_two(2UL);
15	],[
16		AC_MSG_RESULT(yes)
17		AC_DEFINE(HAVE_DECLARE_EVENT_CLASS, 1,
18		    [DECLARE_EVENT_CLASS() is available])
19	],[
20		AC_MSG_RESULT(no)
21	],[
22		#if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ)
23		#define _CONFTEST_H
24
25		#undef  TRACE_SYSTEM
26		#define TRACE_SYSTEM zfs
27		#include <linux/tracepoint.h>
28
29		DECLARE_EVENT_CLASS(zfs_autoconf_event_class,
30			TP_PROTO(unsigned long i),
31			TP_ARGS(i),
32			TP_STRUCT__entry(
33				__field(unsigned long, i)
34			),
35			TP_fast_assign(
36				__entry->i = i;
37			),
38			TP_printk("i = %lu", __entry->i)
39		);
40
41		#define DEFINE_AUTOCONF_EVENT(name) \
42		DEFINE_EVENT(zfs_autoconf_event_class, name, \
43			TP_PROTO(unsigned long i), \
44			TP_ARGS(i))
45		DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one);
46		DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two);
47
48		#endif /* _CONFTEST_H */
49
50		#undef  TRACE_INCLUDE_PATH
51		#define TRACE_INCLUDE_PATH .
52		#define TRACE_INCLUDE_FILE conftest
53		#include <trace/define_trace.h>
54	])
55])
56