基礎からわかるカーネル・プログラミング!
|
平田 豊 著
2006年 1月21日発売
B5変型判
304ページ
定価 \2,750(本体 \2,500)
|
ISBN978-4-7775-1189-1 C3004 \2500E
|
 |
「カーネル」とは、「ユーザー・プロセス」からの「システム・コール」やハードウェアからの「割り込み」などを処理する、OSのコアの部分のことを指します。また、「Linux」と言えば「オープン・ソース」による手法で開発されたOSであり、ここ数年は商用利用もされてきているという、過去類い希なオペレーティング・システムであると言えます。ただ、Linuxはソース・コードはすべて公開されてはいますが、ドキュメントはほとんどありません。そのため、Linuxを製品として適用する場合には、まず「Linuxカーネル」の仕組みを理解しなければなりません。
「Linuxカーネル」は「C言語」と「アセンブラ」によって記述されているのですが、単純に言語文法を知っているだけでは、ソース・コードを読み解くことはできません。しかし、カーネル・プログラミングには基礎となる考え方があり、それらをしっかり押さえておけば、少しずつではありますが、カーネルを読み進めていくことができるようになります。そこで本書では、まず必要な基礎知識を学んだうえで、Linux系では有力な「Fedora Core」OSのネットワーク・ドライバの解析に挑戦します。
|
|
■ 主な内容 ■ |
1- 1 「Linuxカーネル」とは | 1- 2 「Linuxカーネル」の入手先 |
1- 3 ソース・コードを取り出す | 1- 4 ソース・コードの参照方法 |
1- 5 「RPM」からのカーネル・ソースのインストール | 1- 6 カーネル・ファイル |
1- 7 カーネル構築のための準備 | 1- 8 カーネル・コンフィグレーション |
1- 9 「カーネル本体」と「カーネル・モジュール」のビルド | 1-10 「カーネル・モジュール」と「カーネル本体」のインストール |
1-11 Linuxマシンへの接続方法 | |
2- 1 「gcc」に関する情報源 | 2- 2 「gcc」拡張機能 |
2- 3 構造体のメンバ初期化 | 2- 4 64ビット関数 |
2- 5 マクロでの丸括弧 | 2- 6 可変引数を取れるマクロ |
2- 7 三項演算子 | 2- 8 インライン関数 |
2- 9 コメント | 2-10 列挙型 |
2-11 アセンブラ | 2-12 アセンブラの基本文法 |
2-13 インライン・アセンブラの読み方 | 2-14 純粋なアセンブラ・コードの読み方 |
3- 1 コンテキストを理解する | 3- 2 マルチ・スレッド・アプリケーション |
3- 3 「ユーザー・コンテキスト」でクリティカル・セクションを保護する |
3- 4 「割り込みコンテキスト」でクリティカル・セクションを保護する(シングル・プロセッサ編) |
3- 5 「割り込みコンテキスト」でクリティカル・セクションを保護する(マルチ・プロセッサ編) |
4- 1 「割り込み」とは | 4- 2 「割り込み」の長所と短所 |
4- 3 「割り込み処理」の詳細 | 4- 4 「レガシー割り込みコントローラ」の実装 |
4- 5 「アドバンスド割り込みコントローラ」の実装 | 4- 6 プロセッサの割り込み処理 |
5- 1 「PCI」とは | 5- 2 「PCI」の基礎知識 |
5- 3 「PCIデバイス」の見方 | 5- 4 プラグ&プレイの秘密 |
5- 5 Linux上での「PCIコンフィグレーション空間」の参照方法 | 5- 6 「IA-32」における「PCIコンフィグレーション空間」の位置付け |
5- 7 PCI BIOS | 5- 8 ハンドラの選択 |
5- 9 実際に使われるハンドラの選別 | 5-10 まとめ |
6- 1 「Ethernet」を知る | 6- 2 「Ethernet」のチップを調べる |
6- 3 「Ethernetチップ」の仕様書を入手する | 6- 4 ネットワーク系コマンド |
6- 5 ドライバの「ビルド」と「組み込み」「取り外し」 | 6- 6 初期化用エントリ・ポイント |
6- 7 ドライバのケーネルへの組み込み | 6- 8 ネットワーク・ドライバにおける初期化処理 |
6- 9 レジスタ・アクセス | 6-10 カード・リセット |
6-11 「MACアドレス」の設定 | 6-12 ハンドラの登録 |
6-13 「net_device」構造体の完成 | 6-14 カーネル・バッファへの出力 |
6-15 ドライバのアンロード処理 | 6-16 インターフェイスのUP |
6-17 カーネル・スレッド | 6-18 インターフェイスのdown |
6-19 パケットの送信 | 6-20 送信完了割り込み |
6-21 送信完了タイム・アウト | 6-22 パケットの受信 |
6-23 まとめ | |
※ 内容が一部異なる場合があります。発売日は、東京の発売日であり、地域によっては1〜2日程度遅れることがあります。あらかじめご了承ください。
|
|
 |

|