Linux 设备号管理 II

使用设备号的一个基本需求就是根据设备号索引能够找到设备,而在Linux设备模型中,所有的设备最后都归结到kobject,所以问题也就转变成 dev_t到kobject实例的mapping问题,内核中使用kobj_map来描述这种映射,具体地,内核创建了两个实例cdev_map和bdev_map来分别管理字符设备和块设备及其设备号的映射关系, 二者都是kobj_map类型, 可以用下图简要表示

本文主要讨论如下问题:

  1. kobj_map是如何实现这种映射的。
  2. kobj_map实现的这种映射是如何被使用的。
Continue reading

Linux 设备号管理 I

Linux使用设备号——dev_t类型的一个数值来标识一个字符设备或块设备对象,虽然实际开发中通常使用对cdev或gendisk的更高层的封装接口,诸如输入子系统,MTD,MutiDisk等设备模型,但万丈高楼平地起,管理这些复杂设备的根基都是对cdev或gendisk对象的管理,其中,设备号的获取以及管理就是重要的一个方面,这就是本文主要讨论问题。

Continue reading