static int __init mtest_init(void) { mtest_proc_entry = proc_create ("mtest", 0777, NULL, &proc_mtest_operations); if (mtest_proc_entry == NULL) { printk("Error creating proc entry\n"); return -1; } printk("create the filename mtest mtest_nit sucess\n"); mtest_dump_vma_list(); return 0; }
static ssize_t mtest_write(struct file *file, const char __user * buffer, size_t count, loff_t * data) { printk("mtest_write ........... \n"); char buf[128]; unsigned long val, val2; if (count > sizeof(buf)) return -EINVAL; if (copy_from_user(buf, buffer, count)) return -EINVAL; if (memcmp(buf, "listvma", 7) == 0) mtest_dump_vma_list(); else if (memcmp(buf, "findvma", 7) == 0) { if (sscanf(buf + 7, "%lx", &val) == 1) { mtest_find_vma(val); } } else if (memcmp(buf, "findpage", 8) == 0) { if (sscanf(buf + 8, "%lx", &val) == 1) { mtest_find_page(val); //my_follow_page(vma, addr); } } else if (memcmp(buf, "writeval", 8) == 0) { if (sscanf(buf + 8, "%lx %lx", &val, &val2) == 2) { mtest_write_val(val, val2); } } return count; }