[英]Porting PCIe driver from Linux to FreeBSD
我在Linux上編寫了一個相當大的PCIe驅動程序,現在我需要在FreeBSD上移植它。 我還不知道BSD版本,但我認為在這一點上它是無關緊要的,因為我想了解一般在移植過程中必須修改哪些主要項目。
好處是驅動程序被分區為獨立於操作系統的“庫”層(OSI)和操作系統,因此它已經有一個“框架”允許將其移植到其他操作系統上,我希望大部分工作都是專注於OSI方面。 到目前為止,我看到了以下大塊工作:
我還應該注意什么? 此驅動程序是一個進行硬件加密的設備,因此它是卸載設備(來自NIC的入口數據包正常進入系統,然后轉移到設備)。
如果有有用的Web鏈接來描述BSD驅動程序開發/移植(類似於LDD),我很樂意接受它:)
在2011年,Jeff Roberson(以及后來的Mellanox)添加了一些墊片來簡化移植Linux驅動程序,這使得大部分代碼可以按原樣使用,當他將Linux InfiniBand驅動程序移植到FreeBSD時。 所以,假設我是Linux驅動程序開發世界的新手,我首先看一下:
https://svnweb.freebsd.org/base/head/sys/ofed/include/linux/
在哪里可以找到許多必需的Linux驅動程序API及其FreeBSD本機對應物的實現。
有約翰-馬克,另一個快速入門文檔這里 ,對於那些誰已經熟悉的司機寫作很有幫助。
如果您希望從頭開始,我認為FreeBSD架構手冊將是一個有用的起點。
此外,還有Kirk McKusick,Robert Watson和George Neville-Neil的書,題為“FreeBSD操作系統的設計和實現”,此時的最新版本是第2版,第8章是詳細的設備驅動程序。
大多數設備驅動程序只是硬件操作的包裝器以適應OS接口,因此如今,分層良好的驅動程序應該相對容易移植。
如果您有疑問,或者是硬件供應商,您還可以加入各種FreeBSD郵件列表(freebsd-drivers @等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.