1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
27d5905dcSRafael J. Wysocki #include <linux/cpufreq.h>
38591cf43SAlexey Dobriyan #include <linux/fs.h>
48591cf43SAlexey Dobriyan #include <linux/init.h>
58591cf43SAlexey Dobriyan #include <linux/proc_fs.h>
68591cf43SAlexey Dobriyan #include <linux/seq_file.h>
78591cf43SAlexey Dobriyan
88591cf43SAlexey Dobriyan extern const struct seq_operations cpuinfo_op;
9*7d84c1ebSThomas Gleixner
cpuinfo_open(struct inode * inode,struct file * file)108591cf43SAlexey Dobriyan static int cpuinfo_open(struct inode *inode, struct file *file)
118591cf43SAlexey Dobriyan {
128591cf43SAlexey Dobriyan return seq_open(file, &cpuinfo_op);
138591cf43SAlexey Dobriyan }
148591cf43SAlexey Dobriyan
1597a32539SAlexey Dobriyan static const struct proc_ops cpuinfo_proc_ops = {
16d919b33dSAlexey Dobriyan .proc_flags = PROC_ENTRY_PERMANENT,
1797a32539SAlexey Dobriyan .proc_open = cpuinfo_open,
1870fce7d2SChristoph Hellwig .proc_read_iter = seq_read_iter,
1997a32539SAlexey Dobriyan .proc_lseek = seq_lseek,
2097a32539SAlexey Dobriyan .proc_release = seq_release,
218591cf43SAlexey Dobriyan };
228591cf43SAlexey Dobriyan
proc_cpuinfo_init(void)238591cf43SAlexey Dobriyan static int __init proc_cpuinfo_init(void)
248591cf43SAlexey Dobriyan {
2597a32539SAlexey Dobriyan proc_create("cpuinfo", 0, NULL, &cpuinfo_proc_ops);
268591cf43SAlexey Dobriyan return 0;
278591cf43SAlexey Dobriyan }
28abaf3787SPaul Gortmaker fs_initcall(proc_cpuinfo_init);
29