我正在开发一个内核应用程序,其中涉及到kthreads。我在用户空间创建了一个结构体数组并使用malloc分配了内存。然后我调用一个系统调用(我实现的),并将数组地址传递给内核空间。在系统调用的处理程序中,我创建了2个kthread来监视该数组。kthread可以更改一些值,用户空间线程也可以更改一些值。这个想法是将数组用作共享内存。但是当我在内核空间访问内存时(使用copy_from_user),数据会以某种方式更改。我可以验证赋值和内核中的地址是相同的。但是使用copy_from_user时,它会给出各种值,如垃圾值。
另外,以下语句是否正确?
另外,以下语句是否正确?
int kthread_run_function(void* data){
struct entry tmp;
copy_from_user(&tmp, data, sizeof(struct entry));
}
mmap
将其映射到用户空间的任何资料。 - gaston