From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@elte.hu, laijs@cn.fujitsu.com, dipankar@in.ibm.com,
akpm@linux-foundation.org, mathieu.desnoyers@polymtl.ca,
josh@joshtriplett.org, niv@us.ibm.com, tglx@linutronix.de,
peterz@infradead.org, rostedt@goodmis.org,
Valdis.Kletnieks@vt.edu, dhowells@redhat.com,
edumazet@google.com, darren@dvhart.com, fweisbec@gmail.com,
sbw@mit.edu, patches@linaro.org,
Michael Wang <wangyun@linux.vnet.ibm.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: [PATCH tip/core/rcu 02/14] rcu: Fundamental facility for 'CPU units sequence reading'
Date: Tue, 30 Oct 2012 10:05:01 -0700 [thread overview]
Message-ID: <1351616713-26930-2-git-send-email-paulmck@linux.vnet.ibm.com> (raw)
In-Reply-To: <1351616713-26930-1-git-send-email-paulmck@linux.vnet.ibm.com>
From: Michael Wang <wangyun@linux.vnet.ibm.com>
This patch add the fundamental facility used by the following patches, so we
can implement the 'CPU units sequence reading' later.
This helps us avoid losing data when there are too many CPUs and too
small of a buffer, since this new approach allows userspace to read out
the data one CPU at a time. Thus, if the buffer is not large enough,
userspace will get whatever CPUs fit, and can then issue another read
for the remainder of the data.
Signed-off-by: Michael Wang <wangyun@linux.vnet.ibm.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree_trace.c | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
index 62223a2..0dfe9b5 100644
--- a/kernel/rcutree_trace.c
+++ b/kernel/rcutree_trace.c
@@ -46,6 +46,36 @@
#define RCU_TREE_NONCORE
#include "rcutree.h"
+static int r_open(struct inode *inode, struct file *file,
+ const struct seq_operations *op)
+{
+ int ret = seq_open(file, op);
+ if (!ret) {
+ struct seq_file *m = (struct seq_file *)file->private_data;
+ m->private = inode->i_private;
+ }
+ return ret;
+}
+
+static void *r_start(struct seq_file *m, loff_t *pos)
+{
+ struct rcu_state *rsp = (struct rcu_state *)m->private;
+ *pos = cpumask_next(*pos - 1, cpu_possible_mask);
+ if ((*pos) < nr_cpu_ids)
+ return per_cpu_ptr(rsp->rda, *pos);
+ return NULL;
+}
+
+static void *r_next(struct seq_file *m, void *v, loff_t *pos)
+{
+ (*pos)++;
+ return r_start(m, pos);
+}
+
+static void r_stop(struct seq_file *m, void *v)
+{
+}
+
static int show_rcubarrier(struct seq_file *m, void *unused)
{
struct rcu_state *rsp;
--
1.7.8
next prev parent reply other threads:[~2012-10-30 17:32 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-30 17:04 [PATCH tip/core/rcu 0/14] Tracing changes for 3.8 Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 01/14] rcu: Create directory for each flavor of rcu Paul E. McKenney
2012-10-30 17:05 ` Paul E. McKenney [this message]
2012-10-30 17:05 ` [PATCH tip/core/rcu 03/14] rcu: Optimize the 'rcudata' for RCU trace Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 04/14] rcu: Optimize the 'rcudata.csv' " Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 05/14] rcu: Optimize the 'rcu_pending' " Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 06/14] rcu: Replace the old interface with the new one Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 07/14] rcu: Remove the interface "rcudata.csv" Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 08/14] rcu: Fix tracing formatting Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 09/14] rcu: split 'rcubarrier' to each flavor Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 10/14] rcu: split 'rcuboost' " Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 11/14] rcu: split 'rcugp' " Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 12/14] rcu: split 'rcuhier' " Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 13/14] rcu: Remove old debugfs interfaces and also RCU flavor name Paul E. McKenney
2012-10-30 17:05 ` [PATCH tip/core/rcu 14/14] rcu: Add tracing for synchronize_sched_expedited() Paul E. McKenney
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=1351616713-26930-2-git-send-email-paulmck@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=Valdis.Kletnieks@vt.edu \
--cc=akpm@linux-foundation.org \
--cc=darren@dvhart.com \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=edumazet@google.com \
--cc=fweisbec@gmail.com \
--cc=josh@joshtriplett.org \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=niv@us.ibm.com \
--cc=patches@linaro.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sbw@mit.edu \
--cc=tglx@linutronix.de \
--cc=wangyun@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
all inboxes | Powered by JetHome®