Linuxデバイスドライバ入門

Linuxデバイスドライバ入門

ドライバにおけるハードウェアの初期化処理

はじめに  本章では、4章のdriverとしての初期化処理の流れで出てきた関数で使われている、ハードウェア関連の初期化処理について説明します。。ハードウェアの初期化は、ltr578_i2c_probeから呼ばれているltr578_init_...
Linuxデバイスドライバ入門

待ち合わせ処理

元の処理において待ち合わせを行い同期を取る為の仕組みとして、Linuxデバイスドライバではwait_eventやwait_for_completionが用意されており、それぞれについて説明しています。
Linuxデバイスドライバ入門

devicetree

devicetreeによって、Linuxデバイスドライバでは、設定値等のパラメータ部を分けて別のファイルで管理することができます。このdevicetreeの使い方等について説明しています。
Linuxデバイスドライバ入門

I2Cドライバの登録 (i2c_add_driver)

LinuxデバイスドライバにおけるI2Cドライバの登録関数であるi2c_add_driverの動作と使い方について、I2Cのクライアントドライバ、コアドライバ、ホストドライバの役割を交えて説明しています。
Linuxデバイスドライバ入門

Wakelock

WakelockとはCPUがsuspend状態に入るのを止める仕組みです。LinuxデバイスドライバにおけるWakelock制御関数である、wakeup_source_init、__pm_stay_awake、__pm_wakeup_eventについての使い方や、デバッグ関連の情報について説明しています。
Linuxデバイスドライバ入門

排他制御 (spin_lock, mutex_lock)

排他制御は、複数のプロセスが共有リソースにアクセスする際に競合を防ぐ為の仕組みです。Linuxデバイスドライバにおける排他制御関数であるmutex_lockとspin_lockについて説明しています。
Linuxデバイスドライバ入門

Timer処理

Timer処理は、特定の処理を一定の時間経過後に実行する為の仕組みです。Linuxデバイスドライバにおける代表的な物としてHZ Timer、High-Resolution Timer、Alarm Timerの3つがあり、それぞれについて説明します。
Linuxデバイスドライバ入門

非同期による遅延処理(workqueue, delayed_workqueue, kthread_queue)

非同期による遅延処理は、別のスレッド用いて、特定の処理を非同期に遅らせて実行する為の仕組みです。Linuxデバイスドライバにおける代表的な物としてworkqueue、delayed_workqueue、kthread_queueの3つがあり、それぞれについて説明しています。。
Linuxデバイスドライバ入門

アトミック操作

アトミック操作は、複数のスレッドから同時にアクセスされる可能性のある変数へのアクセスを同期化するために使用される方法の1つです。Linuxデバイスドライバにおけるアトミック操作関数であるatomic_set、atomic_read、atomic_add、atomic_sub等の使い方について説明しています。
Linuxデバイスドライバ入門

メモリ確保 (kmalloc, vmalloc)

Linuxデバイスドライバにおけるメモリ確保関数であるkmallocやvmallocについて、使い方と動作、デバッグ関連の情報を説明しています。