標準ライブラリ
リンク・リスト
| 機能単位 | 主なヘッダやソース | 備考 |
| リスト操作 | include/linux/list.h | リンク・リスト・メンバーからそれを保持する構造体へ変換するマクロ list_entry() は container_of() と同じです。リスト操作に関連するならば list_entry() を使用して下さい。 |
アトミック操作
| 機能単位 | 主なヘッダやソース | 備考 |
| 整数 | linux/atomic.h asm/atomic.h | asm/atomic.h はプロセッサ毎に定義されています。asm/atomic.h は linux/atomic.h で include されます。 |
| ビット | asm/bitops.h | asm/bitops.h はプロセッサ毎に定義されています。ヘッダファイルに atomic かどうか書かれています。atomic な関数・マクロは set_bit(), clear_bit(), clear_bit_unlock(), change_bit(), test_and_set_bit(), test_and_set_bit_lock(), test_and_clear_bit(), test_and_change_bit(), test_bit() atomic 関数と混在可 です。asm/bitops.h は linux/bitops.h で include されます。 |
バリア指示・同期
| 機能単位 | 主なヘッダやソース | 備考 |
| バリア | linux/compiler.h asm/barrier.h | linux/compiler.h は linux/kernel.h より include されます。asm/barrier.h は linux/atomic.h から include されます。 |
排他制御
| 機能単位 | 主なヘッダやソース | 備考 |
| Spin Lock | linux/spinlock.h | 使い分けのドキュメントは Documentation/locking/spinlocks.txt, Documentation/DocBook/kernel-locking/index.html |
| Semaphore | linux/semaphore.h | |
| Mutex | linux/mutex.h |
同期制御、状態変化待ち
| 機能単位 | 主なヘッダやソース | 備考 |
| Condition | linux/wait.h | |
| Completion | linux/completion.h |
割り込みハンドラ登録・設定
| 機能単位 | 主なヘッダやソース | 備考 |
| IRQ class | linux/interrupt.h |
時間待ち、タイマー
| 機能単位 | 主なヘッダやソース | 備考 |
| Sleep | linux/delay.h | sleep の代表的な関数は msleep() です。実行中のタスクを再スケジュールします。CPU 資源を無駄にしません。割り込み処理中では使えません。 単に別の task に実行を渡す(いわゆる 0 秒待ちをする)場合は schedule() を使用します。 |
| Delay | linux/delay.h | delay 関数は ndelay(), udelay(), mdelay() があります。これらは CPU を空走させて時間待ちを実現します。割り込みハンドラの中でも使えます。しかし、割り込み応答性能を悪化させます。 |
| Timer | include/linux/timer.h |
時刻
| 機能単位 | 主なヘッダやソース | 備考 |
| jiffies | linux/jiffies.h | jiffies の時間的前後関係を判定する場合は、linux/jiffies.h に定義された比較関数・マクロを使用して下さい。 |
| Time | linux/time.h linux/timekeeping.h linux/sched.h | linux/sched.h の中に local_clock(), sched_clock() などの時刻関数が入っています。 |
メモリ確保
| 機能単位 | 主なヘッダやソース | 備考 |
| 任意サイズ | linux/slab.h | |
| ページ単位 | linux/gfp.h linux/mm.h | ページ確保: linux/gfp.h:alloc_page() 、ページ・アドレス取得: linux/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 |