我正在开发一个Linux项目。我需要从用户空间程序将链表传递给内核。我已经使用了在用户空间中实现链表的内核方式。我已经定义了如下结构:
struct time{
int val;
struct list_head* list;
};
此结构的变量将是:
struct time mylist;
我已经给出了输入数据并使用了linux / include / list.h中的list_add函数来链接结构。 这个mylist是另一个结构的一部分:
struct params{
int data1;
struct time* mylist;
};
假设我获取了所有数据并将其存储在
中struct params param;
现在,如果我将¶m
传递给系统调用,并在那里使用copy_from_user()
功能,我是否可以访问该列表?我读到我无法取消引用内核空间中的指针(指向用户空间中的数据),并且我必须在Linux Kernel: copy_from_user - struct with pointers中再次使用copy_from_user
函数。有人可以建议我将这个列表传递给内核空间的可能方法吗?