⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stable_api_nonsense.txt

📁 linux 内核源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
NOTE:This is a version of Documentation/stable_api_nonsense.txt into Japanese.This document is maintained by IKEDA, Munehiro <m-ikeda@ds.jp.nec.com>and the JF Project team <http://www.linux.or.jp/JF/>.If you find any difference between this document and the original fileor a problem with the translation,please contact the maintainer of this file or JF project.Please also note that the purpose of this file is to be easier to readfor non English (read: Japanese) speakers and is not intended as afork. So if you have any comments or updates of this file, please tryto update the original English file first.Last Updated: 2007/07/18==================================これは、linux-2.6.22-rc4/Documentation/stable_api_nonsense.txt の和訳です。翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >翻訳日 : 2007/06/11原著作者: Greg Kroah-Hartman < greg at kroah dot com >翻訳者 : 池田 宗広 < m-ikeda at ds dot jp dot nec dot com >校正者 : Masanori Kobayashi さん < zap03216 at nifty dot ne dot jp >          Seiji Kaneko さん < skaneko at a2 dot mbn dot or dot jp >==================================Linux カーネルのドライバインターフェース(あなたの質問すべてに対する回答とその他諸々)Greg Kroah-Hartman <greg at kroah dot com>この文書は、なぜ Linux ではバイナリカーネルインターフェースが定義されていないのか、またはなぜ不変のカーネルインターフェースを持たないのか、ということを説明するために書かれた。ここでの話題は「カーネル内部の」インターフェースについてであり、ユーザー空間とのインターフェースではないことを理解してほしい。カーネルとユーザー空間とのインターフェースとはアプリケーションプログラムが使用するものであり、つまりシステムコールのインターフェースがこれに当たる。これは今まで長きに渡り、かつ今後も「まさしく」不変である。私は確か 0.9 か何かより前のカーネルを使ってビルドした古いプログラムを持っているが、それは最新の 2.6 カーネルでもきちんと動作する。ユーザー空間とのインターフェースは、ユーザーとアプリケーションプログラマが不変性を信頼してよいものの一つである。要旨----あなたは不変のカーネルインターフェースが必要だと考えているかもしれないが、実際のところはそうではない。あなたは必要としているものが分かっていない。あなたが必要としているものは安定して動作するドライバであり、それはドライバがメインのカーネルツリーに含まれる場合のみ得ることができる。ドライバがメインのカーネルツリーに含まれていると、他にも多くの良いことがある。それは、Linux をより強固で、安定な、成熟したオペレーティングシステムにすることができるということだ。これこそ、そもそもあなたが Linux を使う理由のはずだ。はじめに--------カーネル内部のインターフェース変更を心配しなければならないドライバを書きたいなどというのは、変わり者だけだ。この世界のほとんどの人は、そのようなドライバがどんなインターフェースを使っているかなど知らないし、そんなドライバのことなど全く気にもかけていない。まず初めに、クローズソースとか、ソースコードの隠蔽とか、バイナリのみが配布される使い物にならない代物[訳注(1)]とか、実体はバイナリコードでそれを読み込むためのラッパー部分のみソースコードが公開されているとか、その他用語は何であれ GPL の下にソースコードがリリースされていないカーネルドライバに関する法的な問題について、私は「いかなる議論も」行うつもりがない。法的な疑問があるのならば、プログラマである私ではなく、弁護士に相談して欲しい。ここでは単に、技術的な問題について述べることにする。(法的な問題を軽視しているわけではない。それらは実際に存在するし、あなたはそれをいつも気にかけておく必要がある)訳注(1)「使い物にならない代物」の原文は "blob"さてここでは、バイナリカーネルインターフェースについてと、ソースレベルでのインターフェースの不変性について、という二つの話題を取り上げる。この二つは互いに依存する関係にあるが、まずはバイナリインターフェースについて議論を行いやっつけてしまおう。バイナリカーネルインターフェース--------------------------------もしソースレベルでのインターフェースが不変ならば、バイナリインターフェースも当然のように不変である、というのは正しいだろうか?正しくない。Linux カーネルに関する以下の事実を考えてみてほしい。  - あなたが使用するCコンパイラのバージョンによって、カーネル内部    の構造体の配置構造は異なったものになる。また、関数は異なった方    法でカーネルに含まれることになるかもしれない(例えばインライン    関数として扱われたり、扱われなかったりする)。個々の関数がどの    ようにコンパイルされるかはそれほど重要ではないが、構造体のパデ    ィングが異なるというのは非常に重要である。  - あなたがカーネルのビルドオプションをどのように設定するかによっ    て、カーネルには広い範囲で異なった事態が起こり得る。      - データ構造は異なるデータフィールドを持つかもしれない      - いくつかの関数は全く実装されていない状態になり得る        (例:SMP向けではないビルドでは、いくつかのロックは中身が          カラにコンパイルされる)      - カーネル内のメモリは、異なった方法で配置され得る。これはビ        ルドオプションに依存している。  - Linux は様々な異なるプロセッサアーキテクチャ上で動作する。    あるアーキテクチャ用のバイナリドライバを、他のアーキテクチャで    正常に動作させる方法はない。ある特定のカーネル設定を使用し、カーネルをビルドしたのと正確に同じCコンパイラを使用して単にカーネルモジュールをコンパイルするだけでも、あなたはこれらいくつもの問題に直面することになる。ある特定のLinux ディストリビューションの、ある特定のリリースバージョン用にモジュールを提供しようと思っただけでも、これらの問題を引き起こすには十分である。にも関わらず Linux ディストリビューションの数と、サポートするディストリビューションのリリース数を掛け算し、それら一つ一つについてビルドを行ったとしたら、今度はリリースごとのビルドオプションの違いという悪夢にすぐさま悩まされることになる。また、ディストリビューションの各リリースバージョンには、異なるハードウェア(プロセッサタイプや種々のオプション)に対応するため、何種類かのカーネルが含まれているということも理解して欲しい。従って、ある一つのリリースバージョンだけのためにモジュールを作成する場合でも、あなたは何バージョンものモジュールを用意しなければならない。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -