1 // SPDX-License-Identifier: GPL-2.0 2 #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/interrupts 11 */ 12 static void *int_seq_start(struct seq_file *f, loff_t *pos) 13 { 14 return (*pos <= nr_irqs) ? pos : NULL; 15 } 16 17 static 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 25 static void int_seq_stop(struct seq_file *f, void *v) 26 { 27 /* Nothing to do */ 28 } 29 30 static 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_interrupts 35 }; 36 37 static int __init proc_interrupts_init(void) 38 { 39 proc_create_seq("interrupts", 0, NULL, &int_seq_ops); 40 return 0; 41 } 42 fs_initcall(proc_interrupts_init); 43