我正在为我的模块实现写文件操作,并且我想知道我是否正确地实现了copy_from_user函数。该模块是一个tictactoe游戏,因此我接受了用户的输入。输入将是形式为“ 01 X”或“ 21 O”的字符串,其中数字代表列和行,字母代表它们的段。我的写函数如下:
ssize_t tictactoe_write(struct file *pfile, char __user *buffer, size_t length, loff_t *offset){
char* data = kmalloc(sizeof(buffer), GFP_KERNEL);
size_t unread = copy_from_user(data, buffer, sizeof(buffer));
printk(KERN_NOTICE "Written");
//Return number of bytes not read
return unread;
}
通过此实现,是否可以使用用户输入来初始化数据指针?然后,我可以在模块的其余部分中进行哪些操作?任何帮助表示赞赏。
答案 0 :(得分:0)
阐明@Tarracon的含义:
ssize_t tictactoe_write(struct file *pfile, char __user *buffer, size_t length, loff_t *offset){
char* data = kmalloc(length, GFP_KERNEL);
size_t unread = copy_from_user(data, buffer, length);
printk(KERN_NOTICE "Written");
//Return number of bytes not read
return unread;
}
此外,您不是实施 copy_from_user,而是调用。很大的不同。