应用层和内核层数据交互

本文详细解释了Linux系统中文件操作的原理,包括设备节点的作用,以及如何通过`file_operations`结构实现open、read、write和release函数。还介绍了copy_from_user和copy_to_user在数据传输中的作用。最后给出了一个应用层操作设备节点的例子。
摘要由CSDN通过智能技术生成

1:linux一切皆文件!

因此具有打开,读写,关闭的功能

在写相关代码时,需要注意:设备节点是应用层和驱动通信的桥梁。通过insmod挂载后lsmod可以看到相关的驱动,在/dev/目录下看到的是驱动所生成的节点,所以数据的交互就是内核和应用层对这个节点的数据交互。

在kernel目录下,include/linux/fs.h定义了相关函数操作集,部分的操作如下:  
        ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
        ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
        int (*open) (struct inode *, struct file *);
        int (*release) (struct inode *, struct file *);(退出)

按照之前杂项设备的博文,struct file_operations misc_fops是一个文件操作集,可以在里面写相应的对文件的操作,如下:

struct file_operations misc_fops = {
	.owner = THIS_MODULE,	
	.open = misc_open,
	.read = misc_read,
	.write = misc_write,
	.release = misc_release,

};

然后再依次实现open&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值