static int irq_vfile_show(struct xnvfile_regular_iterator *it, void *data) { int cpu, irq; /* FIXME: We assume the entire output fits in a single page. */ xnvfile_puts(it, "IRQ "); for_each_online_cpu(cpu) xnvfile_printf(it, " CPU%d", cpu); for (irq = 0; irq < XNARCH_NR_IRQS; irq++) { if (rthal_irq_handler(&rthal_domain, irq) == NULL) continue; xnvfile_printf(it, "\n%3d:", irq); for_each_online_cpu(cpu) { xnvfile_printf(it, "%12lu", rthal_cpudata_irq_hits(&rthal_domain, cpu, irq)); } format_irq_proc(irq, it); } xnvfile_putc(it, '\n'); return 0; }
static int irq_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) { int len = 0, cpu, irq; char *p = page; p += sprintf(p, "IRQ "); for_each_online_cpu(cpu) { p += sprintf(p, " CPU%d", cpu); } for (irq = 0; irq < XNARCH_NR_IRQS; irq++) { if (rthal_irq_handler(&rthal_domain, irq) == NULL) continue; p += sprintf(p, "\n%3d:", irq); for_each_online_cpu(cpu) { p += sprintf(p, "%12lu", rthal_cpudata_irq_hits(&rthal_domain, cpu, irq)); } p += format_irq_proc(irq, p); } p += sprintf(p, "\n"); len = p - page - off; if (len <= off + count) *eof = 1; *start = page + off; if (len > count) len = count; if (len < 0) len = 0; return len; }