设备驱动程序接口详解
1. 块设备驱动示例 - SCSI 磁盘驱动
SCSI 磁盘驱动(sd)用于控制使用 SCSI 命令集的一系列磁盘,包括 SCSI、SATA、USB 大容量存储和通用闪存存储(UFS)。它的主设备号为 8,每个接口(或磁盘)有 16 个次设备号范围。具体分配如下:
| 次设备号范围 | 对应磁盘 | 设备节点示例 |
| ---- | ---- | ---- |
| 0 - 15 | 第一个接口 | sda - sda15 |
| 16 - 31 | 第二个磁盘 | sdb - sdb15 |
| … | … | … |
| 240 - 255 | 第 16 个磁盘 | sdp |
MMC 和 SCSI 块驱动都期望在磁盘开始处找到分区表,可使用 fdisk、sfidsk 或 parted 等实用工具创建分区表。用户空间程序可通过设备节点直接打开并与块设备交互,不过这种情况不常见,通常仅用于执行创建分区、用文件系统格式化分区和挂载等管理操作。文件系统挂载后,通过该文件系统中的文件间接与块设备交互。
2. 网络设备
网络设备不通过设备节点访问,也没有主设备号和次设备号。内核会根据字符串和实例号为网络设备分配名称,例如:
my_netdev = alloc_netdev(0, "net%d", NET_NAME_UNKNOWN, netdev_setup);
ret = register_netdev(my_netdev);
首次调用会创建名为 net0 的网络设备,第二
超级会员免费看
订阅专栏 解锁全文
2170

被折叠的 条评论
为什么被折叠?



