linux为了保护内核的安全性所以内核和用户空间是分离的。
那么在驱动编写过程中,如果应用程序需要对驱动文件进行读写应该怎么办呢?
这里linux给我们提供了两个简单的函数
分别是:copy_to_user(); 内核数据发给应用 (此时相当于应用层需要读取数据)
copy_from_user(); 内核从应用中获取数据 (此时相当于应用层写数据到驱动)
这两个函数的头文件为#include<linux/uaccess.h>
下面简单的讲解一下这两个函数的使用方法
static char readbuf[100]; /* 读缓冲区 */
static char writebuf[100]; /* 写缓冲区 */
/*
从设备读取数据
filp : 要打开的设备文件(文件描述符)
buf : 返回给用户空间的数据缓冲区
cnt : 要读取的数据长度
offt : 相对于文件首地址的偏移
*/
static ssize_t chrdevbase_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt)
{
int ret = 0;
ret = copy_to_user(buf, readbu