Linux操作方法集接口(read,write)

简介: Linux操作方法集接口(read,write)

一:read,write

<asm-generic/uaccess.h>
应用层调用 read —>>> 应用层想读取数据 —>>> 这件事情是内核中驱动完成
—>>> copy_to_user
应用层调用 write —>>> 应用层想写取数据 —>>> 这件事情是内核中驱动完成
—>>> copy_from_user


20200227203829342.png

20200227203900246.png


//驱动中的read、write接口实现
ssize_t demo_read(struct file *filp, char __user *buf, size_t size, loff_t *off){ 
if(size > kbufcount)
{   
size = kbufcount; 
} if(copy_to_user(buf, k_buf, size)){   
printk(KERN_ERR "copy_to_user failed...\n");    
return -EAGAIN; 
} 
kbufcount = 0;  
printk(KERN_DEBUG "---%s---%s---%d---\n",__FILE__,__func__,__LINE__); 
return size;}ssize_t demo_write(struct file *filp, const char __user *buf, size_t size, loff_t *off){ 
if(size > KBUFSIZE-1){    
size = KBUFSIZE-1;  
} 
if(copy_from_user(k_buf,buf, size)){    
printk(KERN_ERR "copy_from_user failed...\n");    
return -EAGAIN; 
}
kbufcount = size; 
printk(KERN_INFO "demo_write->copy_from_user:%s\n",k_buf);    
printk(KERN_DEBUG "---%s---%s---%d---\n",__FILE__,__func__,__LINE__); 
return size;
}
//应用层测试代码char buf[] = "aaaaaaaaaaaaa";
char r_buf[32];
int main(int argc, const char *argv[]){    int fd = open("/dev/cdev_demo2",O_RDWR);    
if(fd < 0){       
perror("open");        
return -1;    
}
write(fd,buf,strlen(buf));                                                                                                                              close(fd);
    return 0;}
相关文章
|
2月前
|
Linux 程序员 编译器
Linux内核驱动程序接口 【ChatGPT】
Linux内核驱动程序接口 【ChatGPT】
|
3月前
|
监控 Linux
在Linux中,如何查看网络接口的状态?
在Linux中,如何查看网络接口的状态?
|
2月前
|
域名解析 负载均衡 网络协议
Linux网络接口配置不当所带来的影响
总而言之,Linux网络接口的恰当配置是保证网络稳定性、性能和安全性的基础。通过遵循最佳实践和定期维护,可以最大程度地减少配置错误带来的负面影响。
112 0
|
2月前
|
Linux 测试技术 API
Linux PWM接口概述 【ChatGPT】
Linux PWM接口概述 【ChatGPT】
|
3月前
|
网络协议 Ubuntu Linux
在Linux中, 如何配置网络接口?
在Linux中, 如何配置网络接口?
|
3月前
|
Linux
【linux】【驱动】phy接口类型
【linux】【驱动】phy接口类型
17 0
|
3月前
|
网络协议 Ubuntu Linux
在Linux中,什么是网络接口配置?如何配置IP地址?
在Linux中,什么是网络接口配置?如何配置IP地址?
|
3月前
|
Linux
在Linux中,如何查看和修改网络接口配置?
在Linux中,如何查看和修改网络接口配置?
|
4月前
|
Ubuntu Linux Docker
Java演进问题之Alpine Linux创建更小的Docker镜像如何解决
Java演进问题之Alpine Linux创建更小的Docker镜像如何解决
|
4月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间