- 论坛徽章:
- 0
|
修改如下:没有出错,打印:end i=1000000- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/kernel.h>
- #include <linux/mm.h>
- #include <asm/mman.h>
- #include <linux/rwsem.h>
- #include <linux/err.h>
- static int __init tpgoff_init(void)
- {
- int error = 0;
- unsigned long ubuf=0;
- size_t count = 0;
- unsigned long i=0;
- unsigned long t=1000000;
-
- printk("tpgoff kernel module init!\n");
- count = 1024 * 1024;
- for (i=0;i<t;i++)
- {
- ubuf = 0;
- down_write(¤t->mm->mmap_sem);
- ubuf = do_mmap_pgoff(NULL, 0, count, PROT_READ|PROT_WRITE,
- MAP_PRIVATE|MAP_ANON, 0);
- up_write(¤t->mm->mmap_sem);
- if (IS_ERR((void*)ubuf))
- {
- printk(KERN_INFO"do_mmap_pgoff failed\n");
- break;
- }
- else
- {
- down_write(¤t->mm->mmap_sem);
- error = do_munmap(current->mm, ubuf, count);
- up_write(¤t->mm->mmap_sem);
- if (error)
- {
- printk("do_munmap error =%d\n",error);
- break;
- }
- }
- }
- printk("end i=%ld\n",i);
- return error;
- }
- static void __exit tpgoff_cleanup(void)
- {
- printk("tpgoff kernel module exit!\n");
- }
- module_init(tpgoff_init);
- module_exit(tpgoff_cleanup);
- MODULE_LICENSE("GPL");
复制代码 |
|