Linux Kernel の見取り図

Linux_bigmap_for_driver_developer.png

標準ライブラリ

機能単位主なヘッダやソース備考
型定義include/linux/types.h
コンパイラは inttypes.h, stdint.h を提供しています。
定数、最大、最小include/linux/kernel.h
include/linux/stddef.h
include/uapi/linux/limits.h
uapi/linux/limits.h は linux/limits.h で include します。
構造体オフセットinclude/linux/stddef.h
include/linux/kernel.h
メンバーからそれを保持する構造体へ変換するマクロ container_of() もここに含めます。
文字include/linux/ctype.h
文字列・メモリinclude/linux/string.h
文字列変換include/linux/kernel.h
include/linux/parser.h
strtoxxx は kstrtoxxx という関数になっています。
書式フォーマットinclude/linux/kernel.h
計算(数値)include/linux/kernel.h
div64.h
include/linux/gcd.h
include/linux/lcm.h
include/linux/log2.h
include/linux/math64.h
計算(ビット)
アルゴリズム

リンク・リスト

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

アトミック操作

機能単位主なヘッダやソース備考
整数
ビット

排他制御

機能単位主なヘッダやソース備考
Spin Lock
Semaphore

同期制御、状態変化待ち

機能単位主なヘッダやソース
Event

割り込み処理

機能単位主なヘッダやソース備考
IRQ class

時間待ち、タイマー

機能単位主なヘッダやソース備考
Sleep
Timer

メモリ確保

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

論理-物理マップ、DMA 転送、コピー

機能単位主なヘッダやソース
User - Kernel Copy
Virt - Phy map convert
DMA map Scatter Gather

スレッド・軽量処理

機能単位主なヘッダやソース
kthread
work queue
tasklet

接続切断通知

機能単位主なヘッダやソース
UEvent
switch (Android)

リファレンスカウンタ

機能単位主なヘッダやソース
kref

Kernel Object

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

ノード形成

機能単位主なヘッダやソース備考
VFS(character)
VFS(block)
procfs
sysfs
debugfs

モジュールロード、アンロード、シンボル解決

機能単位主なヘッダやソース備考
Module insmod rmmod
Symbol lookup

基本的なドライバ

機能単位主なヘッダやソース
Null, Zero, Full, Mem drivers

基本的なファイルシステムノード

機能単位主なヘッダやソース備考
pipe
eventfd
signalfd
timerfd

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