From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964815AbbJUUUX (ORCPT ); Wed, 21 Oct 2015 16:20:23 -0400 Received: from mga03.intel.com ([134.134.136.65]:52558 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756212AbbJUUOy (ORCPT ); Wed, 21 Oct 2015 16:14:54 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,178,1444719600"; d="scan'208";a="585559101" From: Andi Kleen To: x86@kernel.org Cc: rostedt@goodmis.org, peterz@infradead.org, linux-kernel@vger.kernel.org, Andi Kleen Subject: [PATCH 2/4] tracepoints: Move struct tracepoint to new tracepoint-defs.h header Date: Wed, 21 Oct 2015 13:14:36 -0700 Message-Id: <1445458478-16716-3-git-send-email-andi@firstfloor.org> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1445458478-16716-1-git-send-email-andi@firstfloor.org> References: <1445458478-16716-1-git-send-email-andi@firstfloor.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andi Kleen Steven recommended open coding access to tracepoint->key to add trace points to headers. Unfortunately this is difficult for some headers (such as x86 asm/msr.h) because including tracepoint.h includes so many other headers that it causes include loops. The main problem is the include of linux/rcupdate.h, which pulls in a lot of other headers. The rcu header is only needed when actually defining trace points. Move the struct tracepoint into a separate tracepoint-defs.h header that can be included without pulling in all of RCU. Signed-off-by: Andi Kleen --- include/linux/tracepoint-defs.h | 26 ++++++++++++++++++++++++++ include/linux/tracepoint.h | 15 +-------------- 2 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 include/linux/tracepoint-defs.h diff --git a/include/linux/tracepoint-defs.h b/include/linux/tracepoint-defs.h new file mode 100644 index 0000000..881aa6b --- /dev/null +++ b/include/linux/tracepoint-defs.h @@ -0,0 +1,26 @@ +#ifndef TRACEPOINT_DEFS_H +#define TRACEPOINT_DEFS_H 1 + +/* + * File can be included directly by headers who only want to access + * tracepoint->key to guard out of line trace calls. Otherwise + * linux/tracepoint.h should be used. + */ + +#include +#include + +struct tracepoint_func { + void *func; + void *data; +}; + +struct tracepoint { + const char *name; /* Tracepoint name */ + struct static_key key; + void (*regfunc)(void); + void (*unregfunc)(void); + struct tracepoint_func __rcu *funcs; +}; + +#endif diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index a5f7f3e..71072d1 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h @@ -17,25 +17,12 @@ #include #include #include -#include +#include struct module; struct tracepoint; struct notifier_block; -struct tracepoint_func { - void *func; - void *data; -}; - -struct tracepoint { - const char *name; /* Tracepoint name */ - struct static_key key; - void (*regfunc)(void); - void (*unregfunc)(void); - struct tracepoint_func __rcu *funcs; -}; - struct trace_enum_map { const char *system; const char *enum_string; -- 2.4.3