如何在内核程序中使用copy_to_user()?
How to use copy_to_user() in a kernel program?
我尝试在循环中使用 copy_to_user()
。
for_each_process(p) {
copy_to_user(buf, "data of p", len);
}
但是,我得到的输出是不同的。它只有用户space中的最后一行数据,例如
#Data expected to copy to user space
123 1234 12 21
1243 124 423 12
1234 422 42 423
#Current Output:
1234 422 42 423
如何从内核space复制每一行给用户space?
How many times can you use copy_to_user() in a kernel program?
次数不限。但它们必须有意义(因为您在任何类型的程序中所做的任何事情都必须有意义)。
I thought if the data that is passed into the copy_to_user() will append the data to the next line.
不,copy_to_user
不附加任何内容。我不确定你从哪里得到这个想法。
What is actually happening
好吧,您正在复制第一个进程的数据,然后用第二个进程的数据覆盖它,然后用第三个进程的数据覆盖它,依此类推。最后你剩下第三个进程的数据。
How do transfer all three lines to the user space from the kernel space?
将每个进程的数据存储在不同的位置。
我尝试在循环中使用 copy_to_user()
。
for_each_process(p) {
copy_to_user(buf, "data of p", len);
}
但是,我得到的输出是不同的。它只有用户space中的最后一行数据,例如
#Data expected to copy to user space
123 1234 12 21
1243 124 423 12
1234 422 42 423
#Current Output:
1234 422 42 423
如何从内核space复制每一行给用户space?
How many times can you use copy_to_user() in a kernel program?
次数不限。但它们必须有意义(因为您在任何类型的程序中所做的任何事情都必须有意义)。
I thought if the data that is passed into the copy_to_user() will append the data to the next line.
不,copy_to_user
不附加任何内容。我不确定你从哪里得到这个想法。
What is actually happening
好吧,您正在复制第一个进程的数据,然后用第二个进程的数据覆盖它,然后用第三个进程的数据覆盖它,依此类推。最后你剩下第三个进程的数据。
How do transfer all three lines to the user space from the kernel space?
将每个进程的数据存储在不同的位置。