设备驱动程序接口详解
1. 块设备驱动与网络设备驱动
1.1 SCSI 磁盘驱动
SCSI 磁盘驱动(sd)用于控制使用 SCSI 命令集的一系列磁盘,包括 SCSI、SATA、USB 大容量存储和通用闪存存储(UFS)。其主设备号为 8,每个接口(或磁盘)有 16 个从设备号。例如,从 0 到 15 的从设备号对应第一个接口,设备节点名为 sda 到 sda15;16 到 31 对应第二个磁盘,设备节点为 sdb 到 sdb15,以此类推,直到第 16 个磁盘,从设备号为 240 到 255,节点名为 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)可能会更改这些
超级会员免费看
订阅专栏 解锁全文
632

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



