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
8static 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
17static int version_proc_open(struct inode *inode, struct file *file)
18{
19	return single_open(file, version_proc_show, NULL);
20}
21
22static 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
29static int __init proc_version_init(void)
30{
31	proc_create("version", 0, NULL, &version_proc_fops);
32	return 0;
33}
34fs_initcall(proc_version_init);
35