详解Linux设备模型(7)_Class
1. 概述
在设备模型中,Bus、Device、Device driver等等都比较好理解,因为它们都对应着实实在在的东西,所有的逻辑都是围绕这些实体展开的。然而,本文所要描述的Class则有些不同,因为它是虚拟出来的,只是为了抽象设备的共性。
举个例子,一些年龄相仿、需要获取相似知识的人聚在一起学习,就构成了一个班级(Class)。这个班级可以有自己的名称(如“295”),但如果离开构成它的学生(Device),它就没有任何存在意义。另外,班级存在的最大意义是什么呢?是由老师讲授的每一个课程!因为老师只需要讲一遍,一个班的学生都可以听到。如果每个学生都在家学习,就要为每个人请一个老师,这样讲授一遍。而讲的内容大多是一样的,这就是极大的浪费。
设备模型中的Class提供了类似的功能。例如,一些相似的Device(学生)需要向用户空间提供相似的接口(课程)。如果每个设备的驱动都要实现一遍的话,就会导致内核中存在大量的冗余代码,这就是极大的浪费。所以,Class说了:“我来帮你们实现吧,你们会用就可以了。”
这就是设备模型中Class的功能。再结合内核的注释:A class is a higher-level view of a device that abstracts out low-level implementation details(include/linux/device.
下一篇:
校园网WIFI之云免流历程总结 原创