现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

copy_to_user和copy_from_user函数

2018-12-29 20:55 工业·编程 ⁄ 共 548字 ⁄ 字号 暂无评论

由于在linux中,内核空间和用户空间的内存是不能之间互相访问的,所以需要借助上面2个函数完成数据传输。

   copy_to_user:从内核空间复制数据到用户空间

   copy_from_user:从用户空间复制数据到内核空间。

在进行驱动相关程序设计时,经常会用到这两个函数,因为底层驱动显然是内核空间,调用驱动的是用户空间

具体函数模型解释如下:

unsigned long copy_to_user(void __user *to, const void *from, unsigned long n);

如果数据拷贝成功,则返回零;否则,返回没有拷贝成功的数据字节数。

*to是用户空间的指针,

*from是内核空间指针,

n表示从内核空间向用户空间拷贝数据的字节数

功能:用于将用户空间的数据传送到内核空间。

unsigned long copy_from_user(void * to, const void __user * from, unsigned long n)

第一个参数to是内核空间的数据目标地址指针,

第二个参数from是用户空间的数据源地址指针,

第三个参数n是数据的长度。

如果数据拷贝成功,则返回零;否则,返回没有拷贝成功的数据字节数。

此函数将from指针指向的用户空间地址开始的连续n个字节的数据产送到to指针指向的内核空间地址

给我留言

留言无头像?