无论是从事哪种逻辑级别编程的程序员,在编程过程中都会使用各种模块、框架或系统提供的函数接口。而一些接口也会被冠名某逻辑名字,说明其在系统的逻辑角色,其中对驱动开发人员最重要的接口叫【注册接口】[注1]。为什么说它重要呢?因为【注册接口】是驱动开发者作业的起点和重要内容之一。驱动开发者作业的另一项重要内容是对【系统使用接口】——【文件接口】file_operations的实现——对这些接口的标准抽象语义[注2]进行实际具体硬件转译。
注1:关于【注册】的确切语义,请看《系统接口的比较和再认识》。
注2:接口的标准抽象语义由标准文档定义,如POSIX,但完整的具体定义是什么,有待再究……
很多驱动开发的初学者面对内核的时候都有不知所措的感觉,从【某IO子系统】的注册接口为起点,不失为一个很好的策略。本文简要地分析所谓内核【IO子系统】以及尝试以最简单的IO子系统——字符IO子系统的注册接口为例子说明一下。