Linux カーネル用ドライバの提出方法
----------------------------------

この資料は、Linux 2.2 および 2.4 カーネルツリーへデバイスドライバを提
出する方法を説明します。注意として、ビデオカードドライバに興味をお持ち
なら、この方法より XFree86 (http://wwww.xfree86.org) に相談するほうが
よいでしょう。

さらに資料 Documentation/SubmittingPatches を読んでください。


デバイス番号の割当て
--------------------

ブロックおよびキャラクタデバイス用のメジャーおよびマイナー番号は
"Linux assigned name and number authority" (現在、H Peter Anvin さんと
言った方が通るでしょう) によって割当てられます。そのサイトは
http://www.lanana.org/ です。これはメインストリームカーネルへ提出され
ないデバイス用の番号の割当ても処理します。

割当てを受けていない番号を使用した場合、あなたのデバイスが出荷された時
に (あらためて) 割当てられた番号が与えられるかもしれませんが、これは既
にあなたが顧客に出荷してしまっている番号とは異なるものになるかもしれま
せん。

ドライバの提出先
----------------

Linux 2.0:
        このカーネルツリー用の新しいドライバは受け付けられません。

Linux 2.2:
        そのコードの範囲の一般的な管理者がいる場合、カーネルファイルの
        MAINTAINERS に記載された管理者に提出してください。管理者が応答
        しないか、適切な管理者が見つけられない場合、Alan Cox
        <alan@lxorguk.ukuu.org.uk> に連絡してください。

Linux 2.4:
        このカーネルツリーは活発に開発が行われています。2.2 と同じ決ま
        りが適用されますが、linux-kernel (下記の情報源を参照してくださ
        い) を経てドライバを提出し、API の変化を追跡するために
        linux-kernel を追っても構いません。このツリーは、コードフリー
        ズした場合、存在しなくなるはずです。Linux 2.4 の提出に関する最
        終連絡先は <torvalds@transmeta.com> です。

受理決定に関する基準
--------------------

ライセンス：    コードは GNU General Public License 下で我々にリリース
                しなければなりません。GPL ライセンスのみにこだわるわけ
                ではなく、BSD のような他のコミュニティのドライバを役立
                たせたいなら、複数のライセンス下でリリースを望んでも構
                いません。
                [訳注；例示された BSD ライセンスに関わるものは現在、ほ
                とんど併記されるようになりました。]

インターフェース：あなたのドライバが既存のインターフェースを使用し、同
                じクラスの別のドライバのように振舞うなら、よけいな新し
                いドライバを作るよりも受理されやすいでしょう。Linux と
                NT で共通の API を実装する必要があれば、API はユーザ空
                間で実装してください。

コード：        Documentation/CodingStyle の中で述べられたコードの
                Linux style な形式を使用してください。
                他の形式にする必要のあるコードの部分がある場合、例えば
                windows ドライバキットとコードを共有しそれらを一元管理
                したいなどの場合には、そこだけうまく分離し、その件につ
                いて注意を加えてください。

移植性：        ポインタはいつも 32 ビットであるとは限らず、すべての人
                が浮動小数点ユニットを持っているわけではないので、不用
                意にドライバの中でインライン x86 アセンブラを使うべき
                ではありません。純粋な x86 ドライバは一般的ではありま
                せん。x86 ハードウェアしか持っていない場合、移植性を試
                すことは困難ですが、簡単に移植できるコードを作るのは簡
                単です。

判り易さ：      ドライバを修正する方法が誰にもわかるようになっていると
                良いでしょう。バグ報告ではなく、パッチを受け取ることが
                できますから助けになります。故意にハードウェア動作を隠
                蔽するようなドライバを提出すれば、それはゴミ箱行きにな
                るでしょう。

コントロール：  一般に、著者による活発な保守が続いている場合、パッチが
                明解でチェックが不要なものではない場合、著者に転送され
                ます。ドライバに関する連絡先および更新元となりたい場合、
                このことをコメントにはっきり書き、ドライバ向けの
                MAINTAINERS の中にエントリを入れておくとよいでしょう。

受理決定に関しない基準
----------------------

ベンダー：      ハードウェアベンダーがドライバを管理することは多くの場
                合よいことです。既にツリーに他の方々からの安定して動作
                するドライバがある場合、「私たちはベンダーです」という
                ことによってドライバが採択されることを期待しないでくだ
                さい。単一の完全なドライバを構築するために、既存のドラ
                イバの著者と作業をするのが理想です。

著者：          Linux 関連の大きな会社がドライバを書いても、あなたが書
                いても、そのことは重要ではありません。誰もカーネルツリー
                への特別なアクセスはできません。何か違ったことを言う人
                は、筋道を立てた話をしていないのでしょう。

情報源
------

Linux カーネルのマスターツリー：
        ftp.??.kernel.org:/pub/linux/kernel/...
        ?? == "us", "uk", "fr" のようなあなたの国コード

Linux カーネルのメーリングリスト：
        linux-kernel@vger.kernel.org
        [購読のために majordomo@vger.kernel.org へメールしてください]

カーネルトラフィック：
        カーネルリスト活動の週単位の要約 (とても簡単に読めます)
        [http://kt.zork.net/kernel-traffic]

Linux USB プロジェクト：
        http://sourceforge.net/projects/linux-usb/
======================================================================
日本語訳：野本浩一 <hng@ps.ksky.ne.jp>
    校正：Seiji Kaneko さん <skaneko@a2.mbn.or.jp>
          中谷千絵さん <jeanne@mbox.kyoto-inet.or.jp>
