我有寫在/爲Linux一個相當大的PCIe驅動程序,現在我需要將它移植在FreeBSD。我還不知道BSD版本,但我認爲在這一點上它是無關緊要的,因爲我希望大致瞭解在移植過程中必須修改哪些主要項目。移植的PCIe驅動程序從Linux到FreeBSD的
好的是,驅動程序被劃分爲與操作系統無關的「庫」層(OSI)和操作系統相關的,因此它已經有了一個允許將其移植到其他操作系統上的「框架」,我希望大部分這些努力將側重於OSI方面。到目前爲止,我看到了以下工作大塊:
- 初始化代碼,即在特定的操作系統的代碼是「塞」司機到 系統(類似於init_module的,在cleanup_module確實在Linux中)
- 代碼在內核
- 字符驅動程序的註冊碼的PCI核心子系統註冊驅動器4)DMA操作
還有什麼我應該注意什麼?該驅動程序是進行硬件加密的設備,因此它卸載了設備(從NIC進入數據包後正常進入系統,然後轉向設備)。
如果有有用的網頁鏈接到BSD驅動發展的描述/移植(類似於LDD),我會高興地接受它:)
在[手冊](http://www.freebsd.org/doc/en/books/arch-handbook/driverbasics.html)中有一章,關於[pci devices]的更具體部分(http: //www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/pci.html),並在FreeBSD的一個例子['的/ usr /共享/示例/ KLD/cdev'](HTTPS:/ /svnweb.freebsd.org/base/head/share/examples/kld/cdev/)。還有一些書籍,如「FreeBSD操作系統的設計和實現」和「FreeBSD設備驅動程序:Intrepid指南」。 – kdhp
@kdhp,感謝您的評論。編寫FreeBSD 6.x和9.x/10.x版本驅動程序是否有重大差異? – Mark
'/ usr/share/examples/kld/cdev/module'中的最新文件已經9年了,所以_basics_應該是相同的。值得注意的是,在FreeBSD源代碼樹中有許多許可的許可示例,包含很長的SVN歷史記錄。另外,第9部分的手冊頁是「FreeBSD內核開發者手冊」的一部分,大多數內核API在那裏被記錄。 – kdhp