前几天看了linux设备驱动(linux device driver),这本书看的我实在头大,不知道干什么的,只是看到了一大堆的kernel的c库,到底驱动干什么的? 还是一点头绪都没有!
今天与同事聊天,大概明白了linux驱动是什么东东了,大概写一写,不一定准确,但是方向应该差不多。
linux驱动的基本流程:
第一步,注册设备 module_regestor( 芯片号,操作集)
操作集也就是我们所写的驱动C程序,这些程序中可以调用linux kernel的C库函数
第二步,application层程序通过系统调用(ioctl等),就可以使用我们所写的驱动程序了。
问题: 驱动是恶意代码怎么办?
猜想:1. root用户才能加载driver, root可以鉴别
2. 每个驱动应该有某种标示,必须在某些组织登记,才能被linux所接受
3. linux有些机制可以对第三方驱动程序进行控制,如内存访问等。
2012.5.9
驱动进一步的理解:
驱动程序就是一堆跑在内核层的程序,这堆程序可以访问内核层的东东,一般不访问内核以外的东东。
当A驱动是在B驱动上层时,A 驱动就直接调用B的函数就好了,而不再经过os kernel。
驱动程序一般包括:init,open,write等寥寥几个函数.
2012.5.16