基礎からわかるカーネル・プログラミング!大幅改訂!
|
平田 豊 著
2011年 7月16日発売
B5変型判
400ページ
定価 \3,080(本体 \2,800)
|
ISBN978-4-7775-1615-5 C3004 \2800E
|
|
≪基礎から分かるカーネル・プログラミング!≫
本書ではLinuxカーネル全体を知るために、その土台となる前提知識として、「ソースコードの読み方」から、「ビルドするために使うgccに関する基礎知識」「同期処理」「割り込み処理」「PCIデバイス」「デバイスドライバ」について取り上げています。
*
「Linux」は、携帯電話やスマートフォンなどのモバイル領域で採用が進むなど、「組み込み」分野での利用が活発化しており、今後もデジタルTVなどの普及によって、家電機器における採用も進んでいくと予想されています。そのため、現在では、Linuxをベースとした組み込みソフトの開発技術者の育成と増員が急務になりました。
*
Linuxを製品に利用するには、「Linuxカーネル」の仕組みを理解していなければなりません。
「Linuxカーネル」は「C言語」と「アセンブラ」で記述されているのですが、単純に言語文法を知っているだけでは、ソースコードを読み解くことはできません。
しかし、カーネルのプログラミングには基礎となる考え方があり、それらをしっかり押さえておけば、少しずつですが、カーネルを読み進めていくことができるようになります。
※本書は、2006年1月に刊行した「Linuxカーネル解析入門」(ISBN978-4-7775-1189-1)を大幅に改訂するとともに、より詳しく知識を得るために、新たに「printf関数」が実際のカーネル内部でどのような動きをしているのかを加筆したものです。
|
|
■ 主な内容 ■ |
まえがき
[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マシンへの接続方法
[1-12] 「ソース・コード」の読み方
[1-13] SystemTap
[2-1] 「gcc」に関する情報源1
[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] まとめ
[7-1] printf関数
[7-2] コンソール出力の全貌
[7-3] システム・コール
[7-4] glibc
[7-5] 「システム・コール」から「カーネル」への移動
[7-6] 「カーネル」の「システム・コール」処理
[7-7] VFS
[7-8] 「ファイルシステム」の「関数ポインタ」設定
[7-9] 端末制御
[7-10] TTYドライバ
[7-11] N_TTYドライバ
[7-12] シリアルポート・ドライバ
索引
※ 内容が一部異なる場合があります。発売日は、東京の発売日であり、地域によっては1〜2日程度遅れることがあります。あらかじめご了承ください。
|
|
|
|