aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree_trace.c
diff options
context:
space:
mode:
authorMichael Wang <wangyun@linux.vnet.ibm.com>2012-10-11 17:26:42 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-11-08 14:56:44 -0500
commit6ee0886ff6c81526bf6ad8521d843b934aafa5aa (patch)
tree2b0871206ca414eecdf1fe77c79b8435c9b46bd2 /kernel/rcutree_trace.c
parenta608d84bdb832a86ad3fdb0767df31fcda9fe280 (diff)
rcu: Remove old debugfs interfaces and also RCU flavor name
This commit removes the old debugfs interfaces, so that the new directory-per-RCU-flavor versions remain. Because the RCU flavor is given by the directory name, there is no need to print it out, so remove the name from the printout. Signed-off-by: Michael Wang <wangyun@linux.vnet.ibm.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree_trace.c')
-rw-r--r--kernel/rcutree_trace.c190
1 files changed, 44 insertions, 146 deletions
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
index 107997ecdeeb..967115c508bc 100644
--- a/kernel/rcutree_trace.c
+++ b/kernel/rcutree_trace.c
@@ -78,32 +78,7 @@ static void r_stop(struct seq_file *m, void *v)
78{ 78{
79} 79}
80 80
81static int show_rcubarrier(struct seq_file *m, void *unused) 81static int show_rcubarrier(struct seq_file *m, void *v)
82{
83 struct rcu_state *rsp;
84
85 for_each_rcu_flavor(rsp)
86 seq_printf(m, "%s: bcc: %d nbd: %lu\n",
87 rsp->name,
88 atomic_read(&rsp->barrier_cpu_count),
89 rsp->n_barrier_done);
90 return 0;
91}
92
93static int rcubarrier_open(struct inode *inode, struct file *file)
94{
95 return single_open(file, show_rcubarrier, NULL);
96}
97
98static const struct file_operations rcubarrier_fops = {
99 .owner = THIS_MODULE,
100 .open = rcubarrier_open,
101 .read = seq_read,
102 .llseek = seq_lseek,
103 .release = single_release,
104};
105
106static int new_show_rcubarrier(struct seq_file *m, void *v)
107{ 82{
108 struct rcu_state *rsp = (struct rcu_state *)m->private; 83 struct rcu_state *rsp = (struct rcu_state *)m->private;
109 seq_printf(m, "bcc: %d nbd: %lu\n", 84 seq_printf(m, "bcc: %d nbd: %lu\n",
@@ -112,14 +87,14 @@ static int new_show_rcubarrier(struct seq_file *m, void *v)
112 return 0; 87 return 0;
113} 88}
114 89
115static int new_rcubarrier_open(struct inode *inode, struct file *file) 90static int rcubarrier_open(struct inode *inode, struct file *file)
116{ 91{
117 return single_open(file, new_show_rcubarrier, inode->i_private); 92 return single_open(file, show_rcubarrier, inode->i_private);
118} 93}
119 94
120static const struct file_operations new_rcubarrier_fops = { 95static const struct file_operations rcubarrier_fops = {
121 .owner = THIS_MODULE, 96 .owner = THIS_MODULE,
122 .open = new_rcubarrier_open, 97 .open = rcubarrier_open,
123 .read = seq_read, 98 .read = seq_read,
124 .llseek = no_llseek, 99 .llseek = no_llseek,
125 .release = seq_release, 100 .release = seq_release,
@@ -245,23 +220,7 @@ static const struct file_operations rcu_node_boost_fops = {
245 .release = single_release, 220 .release = single_release,
246}; 221};
247 222
248/* 223#endif /* #ifdef CONFIG_RCU_BOOST */
249 * Create the rcuboost debugfs entry. Standard error return.
250 */
251static int rcu_boost_trace_create_file(struct dentry *rcudir)
252{
253 return !debugfs_create_file("rcuboost", 0444, rcudir, NULL,
254 &rcu_node_boost_fops);
255}
256
257#else /* #ifdef CONFIG_RCU_BOOST */
258
259static int rcu_boost_trace_create_file(struct dentry *rcudir)
260{
261 return 0; /* There cannot be an error if we didn't create it! */
262}
263
264#endif /* #else #ifdef CONFIG_RCU_BOOST */
265 224
266static void print_one_rcu_state(struct seq_file *m, struct rcu_state *rsp) 225static void print_one_rcu_state(struct seq_file *m, struct rcu_state *rsp)
267{ 226{
@@ -270,8 +229,8 @@ static void print_one_rcu_state(struct seq_file *m, struct rcu_state *rsp)
270 struct rcu_node *rnp; 229 struct rcu_node *rnp;
271 230
272 gpnum = rsp->gpnum; 231 gpnum = rsp->gpnum;
273 seq_printf(m, "%s: c=%ld g=%ld s=%d jfq=%ld j=%x ", 232 seq_printf(m, "c=%ld g=%ld s=%d jfq=%ld j=%x ",
274 rsp->name, ulong2long(rsp->completed), ulong2long(gpnum), 233 ulong2long(rsp->completed), ulong2long(gpnum),
275 rsp->fqs_state, 234 rsp->fqs_state,
276 (long)(rsp->jiffies_force_qs - jiffies), 235 (long)(rsp->jiffies_force_qs - jiffies),
277 (int)(jiffies & 0xffff)); 236 (int)(jiffies & 0xffff));
@@ -294,44 +253,22 @@ static void print_one_rcu_state(struct seq_file *m, struct rcu_state *rsp)
294 seq_puts(m, "\n"); 253 seq_puts(m, "\n");
295} 254}
296 255
297static int show_rcuhier(struct seq_file *m, void *unused) 256static int show_rcuhier(struct seq_file *m, void *v)
298{ 257{
299 struct rcu_state *rsp; 258 struct rcu_state *rsp = (struct rcu_state *)m->private;
300 259 print_one_rcu_state(m, rsp);
301 for_each_rcu_flavor(rsp)
302 print_one_rcu_state(m, rsp);
303 return 0; 260 return 0;
304} 261}
305 262
306static int rcuhier_open(struct inode *inode, struct file *file) 263static int rcuhier_open(struct inode *inode, struct file *file)
307{ 264{
308 return single_open(file, show_rcuhier, NULL); 265 return single_open(file, show_rcuhier, inode->i_private);
309} 266}
310 267
311static const struct file_operations rcuhier_fops = { 268static const struct file_operations rcuhier_fops = {
312 .owner = THIS_MODULE, 269 .owner = THIS_MODULE,
313 .open = rcuhier_open, 270 .open = rcuhier_open,
314 .read = seq_read, 271 .read = seq_read,
315 .llseek = seq_lseek,
316 .release = single_release,
317};
318
319static int new_show_rcuhier(struct seq_file *m, void *v)
320{
321 struct rcu_state *rsp = (struct rcu_state *)m->private;
322 print_one_rcu_state(m, rsp);
323 return 0;
324}
325
326static int new_rcuhier_open(struct inode *inode, struct file *file)
327{
328 return single_open(file, new_show_rcuhier, inode->i_private);
329}
330
331static const struct file_operations new_rcuhier_fops = {
332 .owner = THIS_MODULE,
333 .open = new_rcuhier_open,
334 .read = seq_read,
335 .llseek = no_llseek, 272 .llseek = no_llseek,
336 .release = seq_release, 273 .release = seq_release,
337}; 274};
@@ -354,48 +291,26 @@ static void show_one_rcugp(struct seq_file *m, struct rcu_state *rsp)
354 gpage = jiffies - rsp->gp_start; 291 gpage = jiffies - rsp->gp_start;
355 gpmax = rsp->gp_max; 292 gpmax = rsp->gp_max;
356 raw_spin_unlock_irqrestore(&rnp->lock, flags); 293 raw_spin_unlock_irqrestore(&rnp->lock, flags);
357 seq_printf(m, "%s: completed=%ld gpnum=%ld age=%ld max=%ld\n", 294 seq_printf(m, "completed=%ld gpnum=%ld age=%ld max=%ld\n",
358 rsp->name, ulong2long(completed), ulong2long(gpnum), gpage, gpmax); 295 ulong2long(completed), ulong2long(gpnum), gpage, gpmax);
359} 296}
360 297
361static int show_rcugp(struct seq_file *m, void *unused) 298static int show_rcugp(struct seq_file *m, void *v)
362{ 299{
363 struct rcu_state *rsp; 300 struct rcu_state *rsp = (struct rcu_state *)m->private;
364 301 show_one_rcugp(m, rsp);
365 for_each_rcu_flavor(rsp)
366 show_one_rcugp(m, rsp);
367 return 0; 302 return 0;
368} 303}
369 304
370static int rcugp_open(struct inode *inode, struct file *file) 305static int rcugp_open(struct inode *inode, struct file *file)
371{ 306{
372 return single_open(file, show_rcugp, NULL); 307 return single_open(file, show_rcugp, inode->i_private);
373} 308}
374 309
375static const struct file_operations rcugp_fops = { 310static const struct file_operations rcugp_fops = {
376 .owner = THIS_MODULE, 311 .owner = THIS_MODULE,
377 .open = rcugp_open, 312 .open = rcugp_open,
378 .read = seq_read, 313 .read = seq_read,
379 .llseek = seq_lseek,
380 .release = single_release,
381};
382
383static int new_show_rcugp(struct seq_file *m, void *v)
384{
385 struct rcu_state *rsp = (struct rcu_state *)m->private;
386 show_one_rcugp(m, rsp);
387 return 0;
388}
389
390static int new_rcugp_open(struct inode *inode, struct file *file)
391{
392 return single_open(file, new_show_rcugp, inode->i_private);
393}
394
395static const struct file_operations new_rcugp_fops = {
396 .owner = THIS_MODULE,
397 .open = new_rcugp_open,
398 .read = seq_read,
399 .llseek = no_llseek, 314 .llseek = no_llseek,
400 .release = seq_release, 315 .release = seq_release,
401}; 316};
@@ -485,57 +400,40 @@ static int __init rcutree_trace_init(void)
485 if (!rspdir) 400 if (!rspdir)
486 goto free_out; 401 goto free_out;
487 402
488 retval = debugfs_create_file("rcudata", 0444, 403 retval = debugfs_create_file("rcudata", 0444,
489 rspdir, rsp, &rcudata_fops); 404 rspdir, rsp, &rcudata_fops);
490 if (!retval) 405 if (!retval)
491 goto free_out; 406 goto free_out;
492 407
493 retval = debugfs_create_file("rcu_pending", 0444, 408 retval = debugfs_create_file("rcu_pending", 0444,
494 rspdir, rsp, &rcu_pending_fops); 409 rspdir, rsp, &rcu_pending_fops);
495 if (!retval) 410 if (!retval)
496 goto free_out; 411 goto free_out;
497 412
498 retval = debugfs_create_file("rcubarrier", 0444, 413 retval = debugfs_create_file("rcubarrier", 0444,
499 rspdir, rsp, &new_rcubarrier_fops); 414 rspdir, rsp, &rcubarrier_fops);
500 if (!retval) 415 if (!retval)
501 goto free_out; 416 goto free_out;
502 417
503#ifdef CONFIG_RCU_BOOST 418#ifdef CONFIG_RCU_BOOST
504 if (rsp == &rcu_preempt_state) { 419 if (rsp == &rcu_preempt_state) {
505 retval = debugfs_create_file("rcuboost", 0444, 420 retval = debugfs_create_file("rcuboost", 0444,
506 rspdir, NULL, &rcu_node_boost_fops); 421 rspdir, NULL, &rcu_node_boost_fops);
507 if (!retval)
508 goto free_out;
509 }
510#endif
511
512 retval = debugfs_create_file("rcugp", 0444,
513 rspdir, rsp, &new_rcugp_fops);
514 if (!retval) 422 if (!retval)
515 goto free_out; 423 goto free_out;
424 }
425#endif
516 426
517 retval = debugfs_create_file("rcuhier", 0444, 427 retval = debugfs_create_file("rcugp", 0444,
518 rspdir, rsp, &new_rcuhier_fops); 428 rspdir, rsp, &rcugp_fops);
519 if (!retval) 429 if (!retval)
520 goto free_out; 430 goto free_out;
521 }
522
523 retval = debugfs_create_file("rcubarrier", 0444, rcudir,
524 NULL, &rcubarrier_fops);
525 if (!retval)
526 goto free_out;
527
528 if (rcu_boost_trace_create_file(rcudir))
529 goto free_out;
530
531 retval = debugfs_create_file("rcugp", 0444, rcudir, NULL, &rcugp_fops);
532 if (!retval)
533 goto free_out;
534 431
535 retval = debugfs_create_file("rcuhier", 0444, rcudir, 432 retval = debugfs_create_file("rcuhier", 0444,
536 NULL, &rcuhier_fops); 433 rspdir, rsp, &rcuhier_fops);
537 if (!retval) 434 if (!retval)
538 goto free_out; 435 goto free_out;
436 }
539 437
540 retval = debugfs_create_file("rcutorture", 0444, rcudir, 438 retval = debugfs_create_file("rcutorture", 0444, rcudir,
541 NULL, &rcutorture_fops); 439 NULL, &rcutorture_fops);