Joined August 2023
Photos and videos
旧8章9章の内容とudevの内容を、"ドライバとユーザーランド層のやり取り" として、新8章にまとめました。 linux-driver.com/2024/05/04/…

1
17
382
[新規] udev linux-driver.com/2024/05/04/… ueventはAOSPだけでは無く、Ubuntu等の汎用的なLinuxにおいても使われている仕組みです。代表的な物にudevがあり、udevの構成要素である、ueventの情報を取得できるudevadmと、ueventの情報を元に設定した各種処理を行うudevdについて、紹介します。

1
5
291
linux-driver.com/ へ移転しました。今年は質の向上と内容の拡充をしていければと思います。

1
6
288
[新規] 待ち合わせ処理 linux.coresv.com/2023/11/03/… 非同期による遅延処理や後述する割込み処理 と、元の処理において待ち合わせを行い、同期を取る為の仕組みがLinuxカーネルにおいて用意されています。照度センサドライバでは使用されていませんが、 代表的な物として、wait_eventやwait_for_completion

3
495
Ueventによるドライバからユーザランド層への通知 linux.coresv.com/2023/10/27/… ドライバからユーザーランド層へ通知して、制御を変える方法として、照度センサデバイスドライバでも使用されているueventを説明します。ueventは、Linuxカーネルとユーザーランド層のプログラム間のコミュニケーションを実現

2
373
9章は、「ドライバからユーザランド層への通知」ぐらいの題で、kobject_uevent等について記載したいと思います。
1
2
315
I2Cを用いた制御 linux.coresv.com/2023/09/05/… の補足として、writing-clients 和訳 linux.coresv.com/2023/10/20/… を追加

3
290
[改版] devicetree linux.coresv.com/2023/09/01/… Linuxのデバイスドライバに関連するソースコードは、ロジック部を記載しているドライバのファイルである「*.c」の他に、設定値等のパラメータ部を別のファイルとして持っています。このファイルが「*.dts」「*.dtsi」となり、

5
398
[改版] I2Cドライバの登録 (i2c_add_driver) linux.coresv.com/2023/08/31/… I2Cドライバの登録は、照度センサドライバ等のI2CクライアントドライバをLinuxカーネルのI2Cコアドライバに登録し、コールバック関数を呼び出してもらう為の処理です。i2c_add_driverが、I2Cクライアントドライバを登録する為の関

1
4
512
[改版] Wakelock linux.coresv.com/2023/08/29/… WakelockとはCPUがsuspend状態に入るのを止める仕組みです。タブレット端末等では、CPUをsuspend状態に入れることで、消費電流を削減します。しかし、特定の条件(音楽再生中等)ではデバイスを動作させ続ける必要があります。このような際は、Wakelockにより

1
382
[改版] 排他制御 (spin_lock, mutex_lock) linux.coresv.com/2023/08/28/… 排他制御は、複数のスレッドが共有リソースにアクセスする際に競合を防ぐ為の仕組みです。一方の処理が終わるまで、他の処理を止める事ができます。Linuxカーネルで使用可能な主要な排他制御には、mutex_lockとspin_lockがあり、

4
342
[改版] Timer処理 linux.coresv.com/2023/08/27/… Timer処理は、特定の処理を一定の時間経過後に実行する為の仕組みです。繰り返しTimer処理を行うことによって、定期的な処理も実現する為にも使用されます。Linuxカーネルで使用可能なTimerには、代表的な物としてHZ Timer、High-Resolution Timer、Alarm Ti

1
306
[改版] 遅延処理(workqueue, delayed_workqueue, kthread_queue) linux.coresv.com/2023/08/30/… 遅延処理は、別のスレッド用いて、特定の処理を非同期に遅らせて実行する為の仕組みです。代表的な物としてworkqueue、delayed_workqueue、kthread_queueの3つがあり、それぞれについて説明します。

2
309
[改定] アトミック操作 linux.coresv.com/2023/08/26/… アトミック操作とは、複数のプロセスやスレッドから同時にアクセスされる可能性のある変数へのアクセスを同期化するために使用される方法の1つです。アトミック操作は、複数のCPUで同時に実行されている場合でも、互いに競合することなく実行されます。

1
279
[改定]メモリ確保 (kmalloc, vmalloc) linux.coresv.com/2023/08/24/… 本章のメモリ確保とは、mallocの様な関数を用いて、動的にメモリを確保する処理を示します。Linuxカーネルのメモリ確保関数として、kmallocやvmallocが用意されていますので、それぞれについて説明します。

2
276
[改定]ドライバの登録 linux.coresv.com/2023/08/23/… ドライバの登録は、ドライバをLinuxカーネルに登録し、コールバック関数を呼び出してもらう為の処理です。4章の「ドライバの初期化処理について」の「driverとしての初期化」で始めに出てきたplatform_driver_registerが、ドライバを登録する為の関数に

235
[改定] ログ出力 linux.coresv.com/2023/08/22/… 本章のログ出力は、printfの様な関数を用いて、ログ領域に文字列を残す処理を示します。Linuxカーネルの中では、stdlib.hが使えない為、printf自体は使えません。標準出力自体が無い為、その他のputs等も使用できません。その代わりにLinuxカーネルのログ出力

200
[改版] 読み解く照度センサとドライバについて linux.coresv.com/2023/08/21/… 本章では、読み解く照度センサドライバと、そのドライバが制御する照度センサデバイスの概要について、説明します。

159
[改版] デバイスドライバとは linux.coresv.com/2023/08/20/… デバイスドライバはハードウェアを制御するソフトウェアです。C言語だけを学んだ方は、ハードウェアを制御するとしてもライブラリ等を使用するので、その実態を知らない状態だと思っています。本章ではデバイスドライバが、どのようにハードウェ

1
3
524
システムコールによるインターフェース呼び出し linux.coresv.com/2023/09/20/… 前章の内容でデバイスドライバを通してハードウェアを制御する為のインターフェースが、準備できました。本章では、ドライバのインターフェースを通した上位層からの制御について説明します。基本的には7章で説明したsysfs、dev

163