xref: /linux/arch/arm/mm/ptdump_debugfs.c (revision a5e8acd94fe1fe60d92176424a2be6e52c8bd058)
14fb69cc4SJinbum Park // SPDX-License-Identifier: GPL-2.0
24fb69cc4SJinbum Park #include <linux/debugfs.h>
34fb69cc4SJinbum Park #include <linux/seq_file.h>
44fb69cc4SJinbum Park 
54fb69cc4SJinbum Park #include <asm/ptdump.h>
64fb69cc4SJinbum Park 
74fb69cc4SJinbum Park static int ptdump_show(struct seq_file *m, void *v)
84fb69cc4SJinbum Park {
94fb69cc4SJinbum Park 	struct ptdump_info *info = m->private;
104fb69cc4SJinbum Park 
114fb69cc4SJinbum Park 	ptdump_walk_pgd(m, info);
124fb69cc4SJinbum Park 	return 0;
134fb69cc4SJinbum Park }
144fb69cc4SJinbum Park 
154fb69cc4SJinbum Park static int ptdump_open(struct inode *inode, struct file *file)
164fb69cc4SJinbum Park {
174fb69cc4SJinbum Park 	return single_open(file, ptdump_show, inode->i_private);
184fb69cc4SJinbum Park }
194fb69cc4SJinbum Park 
204fb69cc4SJinbum Park static const struct file_operations ptdump_fops = {
214fb69cc4SJinbum Park 	.open		= ptdump_open,
224fb69cc4SJinbum Park 	.read		= seq_read,
234fb69cc4SJinbum Park 	.llseek		= seq_lseek,
244fb69cc4SJinbum Park 	.release	= single_release,
254fb69cc4SJinbum Park };
264fb69cc4SJinbum Park 
27*a5e8acd9SJisheng Zhang (syna) void __init ptdump_debugfs_register(struct ptdump_info *info, const char *name)
284fb69cc4SJinbum Park {
29db0487abSGreg Kroah-Hartman 	debugfs_create_file(name, 0400, NULL, info, &ptdump_fops);
304fb69cc4SJinbum Park }
31