我在Linux上编写了一个相当大的PCIe驱动程序,现在我需要将它移植到FreeBSD上。我还不知道BSD版本,但我认为在这一点上,它是无关的,因为我想了解一般情况下,在移植过程中需要修改哪些主要项目。
好处是驱动程序被划分为操作系统独立的“库”层( OSI )和操作系统依赖层,因此它已经有了允许将其移植到其他OS-es上的“框架”,我希望大部分工作将集中在OSI方面。到目前为止,我看到了以下大量的工作:
我还应该注意什么呢?该驱动程序是一个进行硬件加密的设备,因此它是卸载设备(正常从NIC enter系统输入数据包,然后转到设备上)。
如果有用于描述BSD驱动程序开发/移植(类似于LDD)的有用的web链接,我很乐意接受:)
发布于 2015-08-28 21:02:35
在2011年,Jeff (以及后来的Mellanox)添加了一些shims来简化Linux驱动程序的移植,这使得大部分代码可以按原样使用,当他将Linux InfiniBand驱动程序移植到FreeBSD时。因此,假设我是Linux驱动程序开发领域的新手,我首先看一下:
https://svnweb.freebsd.org/base/head/sys/ofed/include/linux/
在这里,您可以找到许多所需的Linux的实现以及它们的FreeBSD本机对应程序。
还有一个由John,这里编写的快速文档,对那些已经熟悉驱动程序编写的人很有帮助。
如果您希望从一开始就开始,我认为FreeBSD架构手册将是一个有用的起点。
此外,还有柯克McKusick,罗伯特沃森和乔治内维尔-尼尔的书,题为“FreeBSD操作系统的设计和实现”,最新版本是第二版,第8章详细的设备驱动程序。
大多数设备驱动程序只是硬件操作的包装器,以适应OS接口,因此,良好的分层驱动程序现在应该相对容易移植。
如果您有问题,或者是硬件供应商,您也可以加入各种FreeBSD邮件列表(freebsd@等)。
https://stackoverflow.com/questions/32156173
复制相似问题