|
NetBSD Documentation:
FreeBSD のネットワークドライバーを NetBSD に移植するためのメモ
|
概要
Matthias Drochner は、FreeBSD のネットワークドライバーを NetBSD に移植
する時に見つけた相異点をまとめています。これが役に立つことを願っています。
単純なインクルードファイルや定義関連
-
#include ファイル名や場所が若干異なります
-
パケットフィルター
FreeBSD: "BPF"
NetBSD: "BPFILTER"
[Looks gratuitous; 多くの OS 間で異なっているようです(DEC: "packetfilter")]
-
NetBSD では、"opt_inet.h" と "opt_ns.h" をインクルードする必要があります
-
グローバル変数 "bootverbose" が、NetBSD には存在しません。
-
NetBSD は、集中管理された PCI ID データベースと PCI レジスターの定義を
もっています
-
if_media: FreeBSD: IFM_1000_SX, NetBSD: IFM_1000_FX
[1000_FX というものは存在しません- NetBSD が間違っています]
-
<sys/queue.h> の違い
(NetBSD には SLIST が存在しません)
[名前の違いは gratuitous, しかし、SLIST のようなものは NetBSD にとっても
有用です(SIMPLEQ よりオーバーヘッドがすくない)]
ネットワーク固有でないフレームワーク
-
オートコンフィギュレーションのフレームワークが異なります
-
デバイス名の表示
FreeBSD: name:unit
NetBSD: xname
("struct ifnet" のメンバーも同様です)
-
割り込み用のハンドラーが、FreeBSD では void、NetBSD では int です
[stray interrupts の検出???]
-
bus.h: マップされた範囲の仮想アドレスへのアクセス
(すべてのハードウェアがサポートしているわけではないので、
一般的にはリニアーマッピングはさけたほうが良い。もし、絶対必要な場合は、
BUS_SPACE_MAP_LINEAR が、この機能を提供すべき)
[NetBSD の bus_space フレームワークには存在しない。移植性を低下させる
原因、可能なら bus_space_xxx を使う事]
-
bus_dma 関係(FreeBSD は、まだ古い機能を使っています)
ネットワーク関連
-
外部 mbuf ストレージ処理
FreeBSD: xxxfree() に引数は必要ありません
NetBSD: xxxfree() への不明瞭な引数
FreeBSD: ドライバーがリファレンスカウントを実装します
NetBSD: 自動リファレンスカウント
-
FreeBSD は汎用の ether_ioctl() を持っています。
[良い - 汎用のコードを削除する]
-
"struct ether_addr" アドレスバイトのためのメンバー
FreeBSD: "octet"
NetBSD: "ether_addr_octet"
[Gratuitous]
-
softc の "ethercom" 対 "arpcom"
[技術的には NetBSD が正しい]
-
イーサネットアドレスへのアクセス
FreeBSD: in "arpcom", accessed there
NetBSD: ether_ifattach() へ渡され、ifp を経由してアクセスされる。
(LLADDR() - watch out for alignment problems!)
[NetBSD では実行中のアドレス変更を扱うことができない]
-
マルチキャストアドレスのリスト
FreeBSD: ifp->if_multiaddrs の単純なリスト
NetBSD: 特別なフレームワーク、"struct ethercom"の一部
-
"struct ifnet" で異なるメンバー、初期化(if_attach、ether_ifattach)
-xname と name:unit
-FreeBSD: xxxinit() - ether_ioctl() からよばれる
-イーサネットアドレス
-
bpf 関数の引数
FreeBSD: ifp
NetBSD: ifp->if_bpf
-
受信パケットの上位レイヤーへの引渡し
FreeBSD: ether header separate, to ether_input()
NetBSD: すべてのパケット、間接的に ifp->ifp_input を経由する
[最近、NetBSD で変更されました]
-
NetBSD は MII フレームワークを持っており、ドライバーはレジスターへのアクセス
を提供するだけです
NetBSD Documentation: Kernel にもどる
(Contact us)
$NetBSD: porting-freebsd-net.html,v 1.5 2000/01/16 17:28:19 abs Exp $
Copyright © 1998
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.
|