用户空间和内核空间无法直接通过指针或者地址的形式互相访问数据,需要借助特定的函数来实现用户空间和内核空间的数据传递
#include <linux/uaccess.h>
unsigned long copy_to_user(void __user *to, const void *from, unsigned long n);
功能:实现内核数据传到到用户空间
参数:
to :用户空间存放数据的 buf 首地址from :内核空间存放数据的 buf 首地址n :要传递的数据的长度返回值:成功返回 0,失败返回未传递的字节个数
#include <linux/uaccess.h>
unsigned long copy_from_user(void *to, const void __user *from, unsigned long n);
功能:实现用户空间数据传递到内核空间
参数:
to: 内核空间存放数据的buf首地址from: 用户空间存放数据的buf首地址n: 要传递的数据长度