驱动开发------->第三天,设备文件

Linux设备文件


Linux大部分设备使用文件接口和上层应用程序交互

字符设备和块设备区别:
字符设备:直接打开设备文件操作,操作最小单位是字节
块设备:一般通过文件系统操作,操作的最小单位是块
网络设备:没有设备文件,一般通过套接字操作,操作的最小单位是字节

伪字符设备(pseudo):没有实际物理硬件的设备文件
/dev/null:写入的内容全部丢弃
/dev/zero:读出的内容为全0
/dev/random:产生随机数

设备文件一般放在/dev目录中
创建设备文件:
mknod 文件名 类型 主设备号 次设备号

主次设备号用来找到对应的物理设备
主设备号用来标识设备的型号,次设备号用来区分同一个型号的不同设备

查看主设备号:
/proc/devices

1. i节点(struct inode)是保存文件属性信息的数据结构
2. 字符设备结构体(struct cdev)定义一类字符设备
3. 文件操作结构体(struct file_operations)定义此设备上的操作
4. file结构体(struct file)表示已打开的文件,记录到已打开文件数组中,文件描述符就是数组下标
   打开文件对应的inode和file_operations记录到此结构体中

对于设备文件的操作,最终调用的是文件操作结构体中的函数指针

container_of 通过结构体中的成员地址,计算结构体的首地址。
offset_of 计算成员在结构体中的偏移

虚拟地址空间
char * p; 0 ~ 4G
32位 Linux 应用程序运行在32位操作系统上能够访问的地址空间0-3G
内核空间:3-4G
用户空间:0-3G

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值