我们的应用层和内核层是不能直接进行数据传输的。我们要想进行数据传输,要借助下面的这两个函数。
static inline long copy_from_user(void *to, const void __user * from, unsigned long n)
static inline long copy_to_user(void __user *to, const void *from, unsigned long n)
用户空间-->内核空间,如下图所示:
函数 : copy_from_user(void *to, const void __user *from, unsigned long n)
参数 : to 目标地址(内核空间)
参数 : from 源地址(用户空间)
参数 : n 将要拷贝数据的字节数
返回值 : 成功返回 0,失败返回没有拷贝成功的数据字节数
功能 : 将用户空间数据拷贝到内核空间
内核空间-->用户空间,如下图所示:
函数 : copy_to_user(void __user *to, const void *from, unsigned long n)
参数 : to 目标地址(用户空间)
参数 : from 源地址(内核空间)
参数 : n 将要拷贝数据的字节数
返回值 : 成功返回 0,失败返回没有拷贝成功的数据字节数
功能 : 将内核空间数据拷贝到用户空间
更多内容B站关注:北京迅为STM32MP157开发板
|