字符设备驱动开发全解析
1. 内存访问函数
在访问内存时,无论是读取还是写入,内核提供了 copy_from_user() 和 copy_to_user() 函数。
-
copy_from_user():用于将数据从用户空间复制到内核空间。其原型为:
unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
-
copy_to_user():用于将数据从内核空间复制到用户空间。其原型为:
unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
这里,前缀为 __user 的指针指向用户空间(不可信)的内存。 n 表示要复制的字节数, from 是源地址, to 是目标地址。每个函数返回无法复制的字节数,成功时返回值应为 0。需要注意的是,使用 copy_to_user() 时,如果有部分数据无法复制,函数会用零字节将复制的数据填充到请求的大小。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



