【发布时间】:2013-07-03 15:37:31
【问题描述】:
我正在尝试使用以下函数将值从用户空间复制到内核空间:
static ssize_t device_write(struct file *filp, const char *buff, size_t len, loff_t *off)
{
unsigned long copy=0;
int desp=0;
copy = copy_from_user(&desp, &len, 4);
printk(KERN_ALERT "copy: %lx\n", copy);
printk(KERN_ALERT "desp: %d\n", desp);
}
其中“len”是存在于用户空间的变量,我想把它复制到内核空间的“desp”中
我从用户空间调用的函数是(根据file_operations结构写入的是device_write):
write (fd,buffer,8, &off);
当我打印应该存储在“desp”中的值总是 0(应该是 8)。 我的代码有什么问题?我已经看到了几个示例,并且我实现了许多变体,但没有一个有效。
【问题讨论】:
标签: c linux-kernel kernel