Line data Source code
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 0 : static void *int_seq_start(struct seq_file *f, loff_t *pos) 13 : { 14 0 : return (*pos <= nr_irqs) ? pos : NULL; 15 : } 16 : 17 0 : static void *int_seq_next(struct seq_file *f, void *v, loff_t *pos) 18 : { 19 0 : (*pos)++; 20 0 : if (*pos > nr_irqs) 21 : return NULL; 22 0 : return pos; 23 : } 24 : 25 0 : static void int_seq_stop(struct seq_file *f, void *v) 26 : { 27 : /* Nothing to do */ 28 0 : } 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 1 : static int __init proc_interrupts_init(void) 38 : { 39 1 : proc_create_seq("interrupts", 0, NULL, &int_seq_ops); 40 1 : return 0; 41 : } 42 : fs_initcall(proc_interrupts_init);