copy_from_user() 是应用层写入驱动层的函数; copy_to_user() 是驱动层写入应用层内存的函数;
驱动层
static ssize_t embeded_platform_write (struct file *filp, const char __user *ubuf, size_t count, loff_t *off)
{
char kbuf[64] = {0};
// 写入的变量 , 传入的参数 ,参数的长度
if(!copy_from_user(kbuf ,ubuf ,count))//判断是否成功向应用层传输数据
{
printk("kbuf is %s\n",kbuf);
return 0;
}else
{
printk("write error\n");
return -1;
}}
ssize_t embeded_platform_read(struct file *filp, char __user *ubuf, size_t count, loff_t *ppos)
{
char kbuf[64] = "mydate";;
if(copy_to_user(ubuf , kbuf , strlen(kbuf)) != 0){//判断是否成功向应用层传输数据
printk("copy_to_user error\n");
return -1;
}
return 0; }
应用层
int main(int argc, char **argv)
{
int fd;
int val=1;
char buffer[80];
char write_buf[64] = "write 2222date";//
fd = open("/dev/embeded_platform", O_RDWR); //打开设备
if(fd < 0)
printf("can`t open!\n");
printf("Seeddata is %s\n",write_buf);
write(fd,write_buf,sizeof(write_buf));
read(fd,buffer,sizeof(buffer)); //读取globalmem设备中存储的数据
printf("read buff is %s\n",buffer);
return 0;
}