我有一个名为的内核模块mymodule
,其中有:
static struct file_operations my_mod_fops = {
.owner = THIS_MODULE
.write = my_write,
.open = my_open,
.unlocked_ioctl = my_ioctl,
.read = my_read,
};
前一个结构中映射的所有函数都经过测试,它们都可以。我想全局声明(如果可用,静态声明)一个字符kernel_array[128]
,我想编写一个可以执行此操作的用户空间应用程序:
int main(){
char* ptr_to_kernel_arr = get_kernel_array_address();
for (int i=0 ; i<128;++i)
*(ptr_to_kernel_arr+i) = i;
return 0;
}
我的困难是:
如何获取这样的地址,
kernel_array[128]
以便我可以从用户空间应用程序分配值?内核如何知道其
lsmod
列表中的哪个模块持有kernel_array
mmap
所有这些场景如何关联?