diff options
author | Mathieu Poirier <mathieu.poirier@linaro.org> | 2017-07-19 14:43:03 -0600 |
---|---|---|
committer | Mathieu Poirier <mathieu.poirier@linaro.org> | 2018-02-13 09:30:17 -0700 |
commit | 9d6fed8706ca6d594ca85e77180329cb16e2adc1 (patch) | |
tree | dc6ba07bb274bfd1324bc27814917479a8a9929c | |
parent | 7928b2cbe55b2a410a0f5c1f154610059c57b1b2 (diff) |
sched/topology: Add 'doms_debug' proc entry
-rw-r--r-- | kernel/sched/topology.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index 519b024f4e94..8010c2974d30 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -5,6 +5,8 @@ #include <linux/sched.h> #include <linux/mutex.h> #include <linux/sched/isolation.h> +#include <linux/proc_fs.h> +#include <linux/seq_file.h> #include "sched.h" @@ -1930,3 +1932,59 @@ match2: mutex_unlock(&sched_domains_mutex); } +static int doms_debug_show(struct seq_file *seq, void *v) +{ + int i, cpu; + struct root_domain *rd; + struct rq *rq; + struct cpumask default_rd_span; + + cpumask_and(&default_rd_span, + def_root_domain.span, cpu_active_mask); + + seq_printf(seq, "def_root_domain: %*pbl\n", + cpumask_pr_args(&default_rd_span)); + + for (i = 0; i < ndoms_cur; i++) { + cpu = cpumask_first(doms_cur[i]); + if (cpu >= nr_cpu_ids) { + seq_printf(seq, "doms_cur[%d]: empty\n", i); + continue; + } + + rq = cpu_rq(cpu); + rd = rq->rd; + seq_printf(seq, "doms_cur[%d]: %*pbl rd->span: %*pbl (%c)\n", + i, cpumask_pr_args(doms_cur[i]), + cpumask_pr_args(rd->span), + rd == &def_root_domain ? 'd' : 'n'); + } + + return 0; +} + +static int doms_debug_open(struct inode *inode, struct file *file) +{ + return single_open(file, doms_debug_show, NULL); +} + +static const struct file_operations doms_debug_fops = { + .open = doms_debug_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init init_doms_debug_procfs(void) +{ + struct proc_dir_entry *pe; + + pe = proc_create("doms_debug", 0444, NULL, &doms_debug_fops); + if (!pe) + return -ENOMEM; + + return 0; +} + +__initcall(init_doms_debug_procfs); + |