我正确实现了copy_from_user吗?

问题描述 投票:0回答:1

我正在为我的模块实现写文件操作,我想知道我是否正确地实现了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;
}

通过此实现,是否可以使用用户输入来初始化数据指针?然后,我可以在模块的其余部分中进行哪些操作?任何帮助表示赞赏。

c module kernel device-driver
1个回答
-1
投票

我正确实现了copy_from_user吗?

您可能是说使用而不是实现

in

 char* data = kmalloc(sizeof(buffer), GFP_KERNEL);
 size_t unread = copy_from_user(data, buffer, sizeof(buffer));

sizeof(buffer)不是您所期望的,它会在需要指针值的同时对指针的大小进行赋值,在这种情况下,取决于要复制空字符还是不返回,则为4或5

© www.soinside.com 2019 - 2024. All rights reserved.