43 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <linux/fs.h>3#include <linux/init.h>4#include <linux/interrupt.h>5#include <linux/irqnr.h>6#include <linux/proc_fs.h>7#include <linux/seq_file.h>8 9/*10 * /proc/interrupts11 */12static void *int_seq_start(struct seq_file *f, loff_t *pos)13{14 return (*pos <= nr_irqs) ? pos : NULL;15}16 17static void *int_seq_next(struct seq_file *f, void *v, loff_t *pos)18{19 (*pos)++;20 if (*pos > nr_irqs)21 return NULL;22 return pos;23}24 25static void int_seq_stop(struct seq_file *f, void *v)26{27 /* Nothing to do */28}29 30static const struct seq_operations int_seq_ops = {31 .start = int_seq_start,32 .next = int_seq_next,33 .stop = int_seq_stop,34 .show = show_interrupts35};36 37static int __init proc_interrupts_init(void)38{39 proc_create_seq("interrupts", 0, NULL, &int_seq_ops);40 return 0;41}42fs_initcall(proc_interrupts_init);43