]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | // SPDX-License-Identifier: GPL-2.0 |
d6917e19 AD |
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 | ||
d6917e19 AD |
37 | static int __init proc_interrupts_init(void) |
38 | { | |
fddda2b7 | 39 | proc_create_seq("interrupts", 0, NULL, &int_seq_ops); |
d6917e19 AD |
40 | return 0; |
41 | } | |
abaf3787 | 42 | fs_initcall(proc_interrupts_init); |