- 论坛徽章:
- 0
|
最近在进行模块编程时遇到了个问题,希望有人帮我解答下。
这个问题是关于do_mmap后,赋予一个全局变量的指针ad。
这个do_mmap操作是init_module里做的,而在init_module里ad的值是正常的,也能读到指针所指向的内容。
当触发钩子函数后pack_in,调用全局变量ad,地址是对的,但是指针所指向的内容是错误的,不能读写。
有什么解决办法没?
struct file *fp;
ALL_DATA * ad;
int init_module()
{
nf_in.hook = pack_in;
nf_in.hooknum = NF_INET_LOCAL_IN;
nf_in.pf = PF_INET;
nf_in.priority = NF_IP_PRI_FIRST;
nf_register_hook(&nf_in);
fp = filp_open("/etc/ABC.dat",O_RDWR ,S_IRWXU);
ad=(ALL_DATA*)do_mmap(fp,0,sizeof(ALL_DATA),PROT_READ | PROT_WRITE,MAP_SHARED,0);
filp_close(fp,NULL);
return 0;
} |
|