From 5126f498d459799cd343a07cee4db44e5d73cff6 Mon Sep 17 00:00:00 2001 From: Michael Wang Date: Thu, 20 Sep 2012 08:51:03 +0800 Subject: [PATCH] --- yaml --- r: 338821 b: refs/heads/master c: 374b928ee8061fdbb0b527fb3924080ba2437767 h: refs/heads/master i: 338819: 4c98c1cad001fc2e36580b2d9600efecd54c62c4 v: v3 --- [refs] | 2 +- trunk/kernel/rcutree_trace.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 699fc1eb391c..9740a8c9ed0b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 573bcd40d221bd6d7cebf27dee120bd242f5feb5 +refs/heads/master: 374b928ee8061fdbb0b527fb3924080ba2437767 diff --git a/trunk/kernel/rcutree_trace.c b/trunk/kernel/rcutree_trace.c index 62223a27f985..0dfe9b512f0f 100644 --- a/trunk/kernel/rcutree_trace.c +++ b/trunk/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;