linux sysfs (2)

中国有一句俗话,叫做“耳听为虚,眼见为实”,真的吗?海森堡早就说过了,测不准的。别说听到的见到的,就来闻到的,也不一定是真的。要不然,小六脚臭,吕轻侯也在洗脚,结果被郭芙蓉冤枉是秀才的脚臭。
那么到底什么是本质,什么是表象?哲学范畴,本质就是表象,表象就是本质。特别是量子物理许范畴,谁都不可能把脑袋伸到原子核内部,拿着万用表测试原子核的实际数据。这样来说,我们就必须通过诸多实验测试表象,然后,建立一个统一的模型,这个统一的模型可以逻辑上容纳所有的表象,这样你的模型就正确。不同的表象,这是事物的不同方面,可能他是大象的耳朵,也可能是大象的尾巴。
sysfs,是一个用户空间的东西,注定了他是表象,那么他的本质是什么?
自从苹果引入了图形UI界面以后,所有的对外表象其实都是浮云,在计算机系统内部本质的东西还是存放在硬盘和内存里面的数据结构。这就是本质。sysfs也是如此,/sys目录下的东西只是一个表象,其本质还是背后的数据结构。

sysfs表象是什么样子呢?
/sys---/devices
    |--/bus
    |--/class
这是这个目录下最重要的内容,其中/devices是一个树形的目录,类似于公司人力资源部维护的部门和员工信息,登记了所有的树形部门关系和部门下的子部门和员工,这个是完整的。
/bus前文表述的有一些错误,/bus是不是树桩的,而是一个扁平的结构,记录了系统所有的部门,以及部门下面的部门领导人和直接员工。例如总经理室,类似/platform,登记的员工除了总经理副总理外和秘书之外,还有几个就是研发总监,其实是研发部的头,销售总监,其实是销售部么的头,等待。他不是树形的。另外,对于这些大的部门,在bus下面是平等的结构,例如,有如下几个部分平列:总经理室,研发中心,软件部,供应链管理部,采购部,呵呵,已经不考虑其层属关系了。
另外,bus下面除了包含设备之外,还有一个重要的东西,就是driver的东西。就是驱动了,为什么不把驱动放到devices下面,我也不知道。可能是因为一个驱动可能会驱动很多设备的原因吧。而这个设备会在系统树形结构中的不同地方。

class是什么东西,class就是类,物以类聚,人以群分,文革时期,把你划分为贫下中农你就幸福了,如果把你划成地主,你就倒霉了,等着挨批吧,那个时候,划分类的目的就是提拔和批斗。电影也会分类,苍老师的电压属于A片,不能公开播放,未满18岁不能看,任达华的电影属于三级片,未满18周岁不能看。分类好不好,当然好。我们国家不分类,表明上清净,结果10岁小孩也看苍老师的片子。老祖宗大禹说,堵不如疏。那么,我们这里为何要对设备进行分类?难道是脱裤子放屁,或者是单纯为了好看?我看不是。

如果我们按照公司模型来比较class,那么class就是岗位类型,例如一个公司可能招聘如下类型的人:研发人员,管理岗位,支持岗位(文员财务等),销售人员,还有产线工人等。我们为什么要对这些人也分类呢?因为系统对于这些人员都已经有成熟的管理方法了,我们必须使这些管理方法能够自动适配到这些管理,当然,也可能有新建的类型,一个类型对应一套公共的管理方法。例如你是研发人员,你就要做好,加班是没有工资的,不会一天只上八个小时的。你是研发人员,会给你配置一台研发用的电脑的,在公司buglist或者对外服务接口上注册你的信息的,这样你就能很快参与公司项目,解决客户问题。等等。
设备类也确实是这样的,比如UART,如果想工作必须接到原有的tty接口上面。当然了,类的一个更重要的作用是和udev相关的,这个作为后话,会详细讨论。

未完待续,下面一个环节,我们讨论kset,kobject等背后的本质数据结构。

你可能感兴趣的:(linux,driver,de,设备驱动)