1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2b457d151SAlexey Dobriyan #include <linux/fs.h> 3b457d151SAlexey Dobriyan #include <linux/init.h> 4b457d151SAlexey Dobriyan #include <linux/kernel.h> 5b457d151SAlexey Dobriyan #include <linux/proc_fs.h> 6b457d151SAlexey Dobriyan #include <linux/seq_file.h> 7b457d151SAlexey Dobriyan #include <linux/utsname.h> 8*ef1d6178SAlexey Dobriyan #include "internal.h" 9b457d151SAlexey Dobriyan version_proc_show(struct seq_file * m,void * v)10b457d151SAlexey Dobriyanstatic int version_proc_show(struct seq_file *m, void *v) 11b457d151SAlexey Dobriyan { 12b457d151SAlexey Dobriyan seq_printf(m, linux_proc_banner, 13b457d151SAlexey Dobriyan utsname()->sysname, 14b457d151SAlexey Dobriyan utsname()->release, 15b457d151SAlexey Dobriyan utsname()->version); 16b457d151SAlexey Dobriyan return 0; 17b457d151SAlexey Dobriyan } 18b457d151SAlexey Dobriyan proc_version_init(void)19b457d151SAlexey Dobriyanstatic int __init proc_version_init(void) 20b457d151SAlexey Dobriyan { 21*ef1d6178SAlexey Dobriyan struct proc_dir_entry *pde; 22*ef1d6178SAlexey Dobriyan 23*ef1d6178SAlexey Dobriyan pde = proc_create_single("version", 0, NULL, version_proc_show); 24*ef1d6178SAlexey Dobriyan pde_make_permanent(pde); 25b457d151SAlexey Dobriyan return 0; 26b457d151SAlexey Dobriyan } 27abaf3787SPaul Gortmaker fs_initcall(proc_version_init); 28