1 #include <linux/fs.h>
2 #include <linux/init.h>
3 #include <linux/kernel.h>
4 #include <linux/proc_fs.h>
5 #include <linux/seq_file.h>
6 #include <linux/utsname.h>
7
version_proc_show(struct seq_file * m,void * v)8 static int version_proc_show(struct seq_file *m, void *v)
9 {
10 seq_printf(m, linux_proc_banner,
11 utsname()->sysname,
12 utsname()->release,
13 utsname()->version);
14 return 0;
15 }
16
version_proc_open(struct inode * inode,struct file * file)17 static int version_proc_open(struct inode *inode, struct file *file)
18 {
19 return single_open(file, version_proc_show, NULL);
20 }
21
22 static const struct file_operations version_proc_fops = {
23 .open = version_proc_open,
24 .read = seq_read,
25 .llseek = seq_lseek,
26 .release = single_release,
27 };
28
proc_version_init(void)29 static int __init proc_version_init(void)
30 {
31 proc_create("version", 0, NULL, &version_proc_fops);
32 return 0;
33 }
34 fs_initcall(proc_version_init);
35