【发布时间】:2011-12-16 05:17:55
【问题描述】:
我正在开发一个涉及 kthreads 的内核应用程序。我创建了一个结构数组并在用户空间中使用 malloc 分配内存。然后我调用一个系统调用(我实现了)并将数组的地址传递给内核空间。在我创建的系统调用处理程序中,我创建了 2 个 kthreads 来监视数组。 kthread 可以改变一些值,用户空间线程也可以改变一些值。这个想法是将数组用作共享内存。但是有些当我访问内核空间中的内存(使用copy_from_user)时,数据会以某种方式发生变化。我可以验证地址在分配时和在内核中是否相同。但是当使用 copy_from_user 时,它会给出各种值,比如垃圾值。
下面的说法也行吗?
int kthread_run_function(void* data){
struct entry tmp;
copy_from_user(&tmp, data, sizeof(struct entry));
}
【问题讨论】:
标签: linux-kernel kernel