module_init(vpu_mem_init);\r
module_exit(vpu_mem_exit);\r
\r
+#ifdef CONFIG_PROC_FS\r
+#include <linux/proc_fs.h>\r
+#include <linux/seq_file.h>\r
+\r
+static int proc_vpu_mem_show(struct seq_file *s, void *v)\r
+{\r
+ unsigned int i;\r
+\r
+ if (vpu_mem.bitmap) {\r
+ seq_printf(s, "vpu mem opened\n");\r
+ } else {\r
+ seq_printf(s, "vpu mem closed\n");\r
+ return 0;\r
+ }\r
+\r
+ down_read(&vpu_mem.bitmap_sem);\r
+ {\r
+ // ´òÓ¡ bitmap ÖеÄÈ«²¿ region\r
+ for (i = 0; i < vpu_mem.num_entries; i = VPU_MEM_NEXT_INDEX(i)) {\r
+ region_check(i);\r
+ seq_printf(s, "vpu_mem: idx %6d pfn %6d refc %3d avail %3d\n",\r
+ i, VPU_MEM_PFN(i), VPU_MEM_REFC(i), VPU_MEM_AVAIL(i));\r
+ }\r
+\r
+ // ´òÓ¡ vpu_mem_data ÖеÄÈ«²¿ region\r
+ down(&vpu_mem.data_list_sem);\r
+ { // search exists index\r
+ struct list_head *list, *tmp_list;\r
+ list_for_each_safe(list, tmp_list, &vpu_mem.data_list) {\r
+ struct list_head *region, *tmp_data;\r
+ struct vpu_mem_data *data = list_entry(list, struct vpu_mem_data, list);\r
+\r
+ seq_printf(s, "pid: %d\n", data->pid);\r
+\r
+ down_read(&data->sem);\r
+ list_for_each_safe(region, tmp_data, &data->region_list) {\r
+ struct vpu_mem_region_node *node = list_entry(region, struct vpu_mem_region_node, list);\r
+ i = node->region.index;\r
+ seq_printf(s, " region: idx %6d pfn %6d refc %3d avail %3d ref by %d\n",\r
+ i, VPU_MEM_PFN(i), VPU_MEM_REFC(i), VPU_MEM_AVAIL(i), node->region.ref_count);\r
+ }\r
+ up_read(&data->sem);\r
+ }\r
+ }\r
+ up(&vpu_mem.data_list_sem);\r
+ }\r
+ up_read(&vpu_mem.bitmap_sem);\r
+ return 0;\r
+}\r
+\r
+static int proc_vpu_mem_open(struct inode *inode, struct file *file)\r
+{\r
+ return single_open(file, proc_vpu_mem_show, NULL);\r
+}\r
+\r
+static const struct file_operations proc_vpu_mem_fops = {\r
+ .open = proc_vpu_mem_open,\r
+ .read = seq_read,\r
+ .llseek = seq_lseek,\r
+ .release = single_release,\r
+};\r
+\r
+static int __init vpu_mem_proc_init(void)\r
+{\r
+ proc_create("vpu_mem", 0, NULL, &proc_vpu_mem_fops);\r
+ return 0;\r
+\r
+}\r
+late_initcall(vpu_mem_proc_init);\r
+#endif /* CONFIG_PROC_FS */\r
\r