我在Linux上编写了一个相当大的PCIe驱动程序,现在我需要在FreeBSD上移植它。我还不知道BSD版本,但我认为在这一点上它是无关紧要的,因为我想了解一般在移植过程中必须修改哪些主要项目。< / p>
好处是驱动程序被分区为独立于操作系统的#34;库&#34;层(OSI)和OS依赖,所以它已经有一个&#34;框架&#34;允许将其移植到其他操作系统上,我希望大部分工作都集中在OSI方面。到目前为止,我看到了以下大块工作:
我还应该注意什么?此驱动程序是一个执行硬件加密的设备,因此它是卸载设备(来自NIC的入口数据包正常进入系统,然后转移到设备)。
如果有关于BSD驱动程序开发/移植(类似于LDD)的描述的有用的web链接,我很乐意接受它:)
答案 0 :(得分:9)
2011年,Jeff Roberson(以及后来的Mellanox)增加了一些垫片来简化移植Linux驱动程序,当他将Linux InfiniBand驱动程序移植到FreeBSD时,大部分代码都按原样使用。所以,假设我是Linux驱动程序开发世界的新手,我首先看一下:
https://svnweb.freebsd.org/base/head/sys/ofed/include/linux/
您可以在哪里找到许多必需的Linux驱动程序API及其FreeBSD原生对应的实现。
John-Mark还有另一篇快速入门的文章here,对那些已经熟悉驾驶员写作的人有帮助。
如果您希望从头开始,我认为FreeBSD Architecture Handbook将是一个有用的起点。
此外,还有Kirk McKusick,Robert Watson和George Neville-Neil的书,题为“FreeBSD操作系统的设计与实现”,此时的最新版本是第2版,第8章详细设备驱动程序。
大多数设备驱动程序只是硬件操作的包装器,以适应操作系统界面,因此现在应该相对容易移植分层良好的驱动程序。
如果您有疑问,或者是硬件供应商,您还可以加入各种FreeBSD邮件列表(freebsd-drivers @等)。