From: Frederic Weisbecker <fweisbec@gmail.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Li Zhong <zhong@linux.vnet.ibm.com>,
Namhyung Kim <namhyung.kim@lge.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 1/8] context_tracking: Export context state for generic vtime
Date: Mon, 28 Jan 2013 20:03:58 +0100 [thread overview]
Message-ID: <1359399845-10568-2-git-send-email-fweisbec@gmail.com> (raw)
In-Reply-To: <1359399845-10568-1-git-send-email-fweisbec@gmail.com>
Export the context state: whether we run in user / kernel
from the context tracking subsystem point of view.
This is going to be used by the generic virtual cputime
accounting subsystem that is needed to implement the full
dynticks.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/context_tracking.h | 28 ++++++++++++++++++++++++++++
kernel/context_tracking.c | 16 +---------------
2 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
index e24339c..b28d161 100644
--- a/include/linux/context_tracking.h
+++ b/include/linux/context_tracking.h
@@ -3,12 +3,40 @@
#ifdef CONFIG_CONTEXT_TRACKING
#include <linux/sched.h>
+#include <linux/percpu.h>
+
+struct context_tracking {
+ /*
+ * When active is false, probes are unset in order
+ * to minimize overhead: TIF flags are cleared
+ * and calls to user_enter/exit are ignored. This
+ * may be further optimized using static keys.
+ */
+ bool active;
+ enum {
+ IN_KERNEL = 0,
+ IN_USER,
+ } state;
+};
+
+DECLARE_PER_CPU(struct context_tracking, context_tracking);
+
+static inline bool context_tracking_in_user(void)
+{
+ return __this_cpu_read(context_tracking.state) == IN_USER;
+}
+
+static inline bool context_tracking_active(void)
+{
+ return __this_cpu_read(context_tracking.active);
+}
extern void user_enter(void);
extern void user_exit(void);
extern void context_tracking_task_switch(struct task_struct *prev,
struct task_struct *next);
#else
+static inline bool context_tracking_in_user(void) { return false; }
static inline void user_enter(void) { }
static inline void user_exit(void) { }
static inline void context_tracking_task_switch(struct task_struct *prev,
diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c
index e0e07fd..54f471e 100644
--- a/kernel/context_tracking.c
+++ b/kernel/context_tracking.c
@@ -1,24 +1,10 @@
#include <linux/context_tracking.h>
#include <linux/rcupdate.h>
#include <linux/sched.h>
-#include <linux/percpu.h>
#include <linux/hardirq.h>
-struct context_tracking {
- /*
- * When active is false, hooks are not set to
- * minimize overhead: TIF flags are cleared
- * and calls to user_enter/exit are ignored. This
- * may be further optimized using static keys.
- */
- bool active;
- enum {
- IN_KERNEL = 0,
- IN_USER,
- } state;
-};
-static DEFINE_PER_CPU(struct context_tracking, context_tracking) = {
+DEFINE_PER_CPU(struct context_tracking, context_tracking) = {
#ifdef CONFIG_CONTEXT_TRACKING_FORCE
.active = true,
#endif
--
1.7.5.4
next prev parent reply other threads:[~2013-01-28 19:04 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-28 19:03 [GIT PULL] cputime: Full dynticks task/cputime accounting v7 Frederic Weisbecker
2013-01-28 19:03 ` Frederic Weisbecker [this message]
2013-01-28 19:03 ` [PATCH 2/8] cputime: Librarize per nsecs resolution cputime definitions Frederic Weisbecker
2013-02-14 19:49 ` Kevin Hilman
2013-02-20 16:07 ` Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 3/8] cputime: Move default nsecs_to_cputime() to jiffies based cputime file Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 4/8] cputime: Generic on-demand virtual cputime accounting Frederic Weisbecker
2013-02-08 3:07 ` Stephen Rothwell
2013-02-08 3:14 ` Stephen Rothwell
2013-02-08 3:19 ` [PATCH] cputime: restore CPU_ACCOUNTING config defaults for PPC64 Stephen Rothwell
2013-02-08 15:18 ` [tip:sched/core] cputime: Restore " tip-bot for Stephen Rothwell
2013-02-08 14:31 ` [PATCH 4/8] cputime: Generic on-demand virtual cputime accounting Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 5/8] cputime: Allow dynamic switch between tick/virtual based " Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 6/8] cputime: Use accessors to read task cputime stats Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 7/8] kvm: Prepare to add generic guest entry/exit callbacks Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 8/8] cputime: Safely read cputime of full dynticks CPUs Frederic Weisbecker
2013-01-28 21:51 ` Sedat Dilek
2013-01-30 21:57 ` Sedat Dilek
2013-01-31 0:38 ` Frederic Weisbecker
2013-01-31 7:24 ` Sedat Dilek
2013-01-31 10:12 ` Frederic Weisbecker
2013-01-31 10:30 ` Sedat Dilek
2013-01-31 16:29 ` Frederic Weisbecker
2013-01-28 19:18 ` [GIT PULL] cputime: Full dynticks task/cputime accounting v7 Christoph Lameter
2013-01-28 19:21 ` Frederic Weisbecker
2013-01-28 20:14 ` Christoph Lameter
2013-01-29 1:42 ` Frederic Weisbecker
2013-01-29 0:02 ` Steven Rostedt
2013-01-29 1:36 ` Frederic Weisbecker
2013-01-29 2:36 ` Steven Rostedt
2013-01-29 2:39 ` Frederic Weisbecker
2013-01-29 2:44 ` Steven Rostedt
2013-01-29 3:29 ` Frederic Weisbecker
2013-01-29 4:38 ` Steven Rostedt
2013-01-29 15:12 ` Frederic Weisbecker
2013-01-29 16:46 ` Steven Rostedt
2013-01-29 16:55 ` Frederic Weisbecker
2013-01-29 17:08 ` Steven Rostedt
2013-01-29 21:26 ` Steven Rostedt
2013-01-29 21:37 ` Frederic Weisbecker
2013-02-15 1:55 ` Kevin Hilman
2013-02-15 14:04 ` Mats Liljegren
2013-02-15 15:06 ` Kevin Hilman
2013-02-20 15:53 ` Frederic Weisbecker
2013-02-20 17:53 ` Kevin Hilman
2013-02-20 15:44 ` Frederic Weisbecker
2013-02-20 18:48 ` Kevin Hilman
-- strict thread matches above, loose matches on Subject: below --
2013-01-23 0:03 [PATCH 0/8] cputime: Full dynticks task/cputime accounting v6 Frederic Weisbecker
2013-01-23 0:03 ` [PATCH 1/8] context_tracking: Export context state for generic vtime Frederic Weisbecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1359399845-10568-2-git-send-email-fweisbec@gmail.com \
--to=fweisbec@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung.kim@lge.com \
--cc=paul.gortmaker@windriver.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=zhong@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).