#author("2016-08-30T01:50:36+09:00","default:afuruta","afuruta")
* Linux Kernel の見取り図 [#u00e790d]
#ref(Linux_bigmap_for_driver_developer.png);
標準ライブラリ
|機能単位|主なヘッダやソース|備考|h
|型定義|&ogfileone(include/linux/types.h);&br;|コンパイラは inttypes.h, stdint.h を提供しています。|
|定数、最大、最小|&ogfileone(include/linux/kernel.h);&br;&ogfileone(include/linux/stddef.h);&br;&ogfileone(include/uapi/linux/limits.h);&br;|uapi/linux/limits.h は linux/limits.h で include します。|
|構造体オフセット|&ogfileone(include/linux/stddef.h);&br;&ogfileone(include/linux/kernel.h);&br;|メンバーからそれを保持する構造体へ変換するマクロ &ogdefs(container_of(),container_of,include/linux/kernel.h); もここに含めます。|
|文字|&ogfileone(include/linux/ctype.h);||
|文字列・メモリ|&ogfileone(include/linux/string.h);||
|文字列変換|&ogfileone(include/linux/kernel.h);&br;&ogfileone(include/linux/parser.h);|strtoxxx は kstrtoxxx という関数になっています。|
|書式フォーマット|&ogfileone(include/linux/kernel.h);||
|計算(数値)|&ogfileone(include/linux/kernel.h);&br;&ogfile(div64.h);&br;&ogfileone(include/linux/gcd.h);&br;&ogfileone(include/linux/lcm.h);&br;&ogfileone(include/linux/log2.h);&br;&ogfileone(include/linux/math64.h);||
|計算(ビット)|||
|アルゴリズム|||

リンク・リスト
|機能単位|主なヘッダやソース|備考|h
|リスト操作|&ogfileone(include/linux/list.h);|リンク・リスト・メンバーからそれを保持する構造体へ変換するマクロ &ogdefs(list_entry(),list_entry,include/linux/list.h); は &ogdefs(container_of(),container_of,include/linux/kernel.h); と同じです。リスト操作に関連するならば &ogdefs(list_entry(),list_entry,include/linux/list.h); を使用して下さい。|

アトミック操作
|機能単位|主なヘッダやソース|備考|h
|整数|||
|ビット|||

排他制御
|機能単位|主なヘッダやソース|備考|h
|Spin Lock|||
|Semaphore|||

同期制御、状態変化待ち
|機能単位|主なヘッダやソース|h
|Event||

割り込み処理
|機能単位|主なヘッダやソース|備考|h
|IRQ class|||

時間待ち、タイマー
|機能単位|主なヘッダやソース|備考|h
|Sleep|||
|Timer|||

メモリ確保
|機能単位|主なヘッダやソース|備考|h
|任意サイズ|&ogfileone(include/linux/slab.h);||
|ページ単位|&ogfileone(include/linux/gfp.h);&br;&ogfileone(include/linux/mm.h);|ページ確保: gfp.h &ogdefs(alloc_page(),alloc_page,gfp.h); 、ページ・アドレス取得: mm.h &ogdefs(page_address(),page_address,mm.h); となっています。|

論理-物理マップ、DMA 転送、コピー
|機能単位|主なヘッダやソース|h
|User - Kernel Copy||
|Virt - Phy map convert||
|DMA map Scatter Gather||

スレッド・軽量処理
|機能単位|主なヘッダやソース|h
|kthread||
|work queue||
|tasklet||

接続切断通知
|機能単位|主なヘッダやソース|h
|UEvent||
|switch (Android)||

リファレンスカウンタ
|機能単位|主なヘッダやソース|h
|kref||

Kernel Object
|機能単位|主なヘッダやソース|備考|h
|KObject|||
|KSet|||

ノード形成
|機能単位|主なヘッダやソース|備考|h
|VFS(character)|||
|VFS(block)|||
|procfs|||
|sysfs|||
|debugfs|||

モジュールロード、アンロード、シンボル解決
|機能単位|主なヘッダやソース|備考|h
|Module insmod rmmod|||
|Symbol lookup|||

基本的なドライバ
|機能単位|主なヘッダやソース|h
|Null, Zero, Full, Mem drivers||

基本的なファイルシステムノード
|機能単位|主なヘッダやソース|備考|h
|pipe|||
|eventfd|||
|signalfd|||
|timerfd|||

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS