设备驱动程序接口详解
1. 块设备驱动与网络设备驱动
1.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 等工具创建分区表。用户空间程序可通过设备节点直接打开并与块设备交互,通常用于执行创建分区、格式化分区和挂载等管理操作。文件系统挂载后,通过该文件系统中的文件间接与块设备交互。
1.2 网络设备驱动
网络设备不通过设备节点访问,也没有主设备号和次设备号。内核根据字符串和实例号为网络设备分配名称,例如网络驱动注册接口的代码如下:
my_netdev = alloc_netdev(0, "net%d", NET_NAME_UNKNOWN, netdev_setup);
ret = register_netdev(my_netdev);
首次调用创建名为 net0 的网络设备,第二次调用创建 net1,依此类推。常见名称有 lo、eth0 和 wlan0,设备管理器(如 udev)可能会更改这些名称。
通常,网