diff options
| author | Alexey Dobriyan <adobriyan@gmail.com> | 2008-10-05 00:08:44 +0400 | 
|---|---|---|
| committer | Alexey Dobriyan <adobriyan@gmail.com> | 2008-10-23 15:15:46 +0400 | 
| commit | d6917e19f3fda8e1f88bc23ddceed952927bd716 (patch) | |
| tree | b9788090ce4661f6e0339cd7b937d36ef5027b58 | |
| parent | df8106dbb59a8c167ea16631059ecb5f7d77da13 (diff) | |
| download | olio-linux-3.10-d6917e19f3fda8e1f88bc23ddceed952927bd716.tar.xz olio-linux-3.10-d6917e19f3fda8e1f88bc23ddceed952927bd716.zip  | |
proc: move /proc/interrupts boilerplate code to fs/proc/interrupts.c
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
| -rw-r--r-- | fs/proc/Makefile | 1 | ||||
| -rw-r--r-- | fs/proc/interrupts.c | 53 | ||||
| -rw-r--r-- | fs/proc/proc_misc.c | 40 | 
3 files changed, 54 insertions, 40 deletions
diff --git a/fs/proc/Makefile b/fs/proc/Makefile index 13ffa7b8d92..b921f4475c9 100644 --- a/fs/proc/Makefile +++ b/fs/proc/Makefile @@ -12,6 +12,7 @@ proc-y       += inode.o root.o base.o generic.o array.o \  proc-y	+= cmdline.o  proc-y	+= cpuinfo.o  proc-y	+= devices.o +proc-y	+= interrupts.o  proc-y	+= loadavg.o  proc-y	+= meminfo.o  proc-y	+= stat.o diff --git a/fs/proc/interrupts.c b/fs/proc/interrupts.c new file mode 100644 index 00000000000..05029c0e2f2 --- /dev/null +++ b/fs/proc/interrupts.c @@ -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; +} +module_init(proc_interrupts_init); diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index a87802fc931..9e1d2684ce9 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c @@ -198,45 +198,6 @@ static const struct file_operations proc_vmalloc_operations = {  };  #endif -/* - * /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)++; -	return (*pos <= nr_irqs) ? pos : NULL; -} - -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, -}; -  #ifdef CONFIG_PROC_PAGE_MONITOR  #define KPMSIZE sizeof(u64)  #define KPMMASK (KPMSIZE - 1) @@ -375,7 +336,6 @@ void __init proc_misc_init(void)  	proc_symlink("mounts", NULL, "self/mounts");  	/* And now for trickier ones */ -	proc_create("interrupts", 0, NULL, &proc_interrupts_operations);  #ifdef CONFIG_SLABINFO  	proc_create("slabinfo",S_IWUSR|S_IRUGO,NULL,&proc_slabinfo_operations);  #ifdef CONFIG_DEBUG_SLAB_LEAK  |