Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / fs / proc / interrupts.c
diff --git a/kernel/fs/proc/interrupts.c b/kernel/fs/proc/interrupts.c
new file mode 100644 (file)
index 0000000..a352d57
--- /dev/null
@@ -0,0 +1,53 @@
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/irqnr.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
+
+/*
+ * /proc/interrupts
+ */
+static void *int_seq_start(struct seq_file *f, loff_t *pos)
+{
+       return (*pos <= nr_irqs) ? pos : NULL;
+}
+
+static void *int_seq_next(struct seq_file *f, void *v, loff_t *pos)
+{
+       (*pos)++;
+       if (*pos > nr_irqs)
+               return NULL;
+       return pos;
+}
+
+static void int_seq_stop(struct seq_file *f, void *v)
+{
+       /* Nothing to do */
+}
+
+static const struct seq_operations int_seq_ops = {
+       .start = int_seq_start,
+       .next  = int_seq_next,
+       .stop  = int_seq_stop,
+       .show  = show_interrupts
+};
+
+static int interrupts_open(struct inode *inode, struct file *filp)
+{
+       return seq_open(filp, &int_seq_ops);
+}
+
+static const struct file_operations proc_interrupts_operations = {
+       .open           = interrupts_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+       .release        = seq_release,
+};
+
+static int __init proc_interrupts_init(void)
+{
+       proc_create("interrupts", 0, NULL, &proc_interrupts_operations);
+       return 0;
+}
+fs_initcall(proc_interrupts_init);