[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HTML化了解致しました



Nobuhiro Suwa <Nobuhiro.Suwa@kama.melco.co.jp> writes:

>  下記了解致しました。

よろしくお願いします。

>  私も内容を良く理解出来ていませんので、やまのさんの訳を参考にさせて
> 下さい。
>  (私の場合、UNIX初心者ですので、翻訳以前にカーネルドライバーの用語
>   をほとんど知らないですけど。。。)

僕も同じようなものなので、あまり信用しないでください。:-)
このメールに作業途中のものを添付しておきます。ベースのバージョンが
ちょっと古いので、これをベースに HTML 化するとつらいかもしれません。

-- やまの
Title: Notes on porting FreeBSD network drivers to NetBSD
BSD demon

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 にもどる
NetBSD ホームページ
NetBSD ドキュメントのトップ

(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.