devtmpfs

devtmpfsとは

 devtmpfsは、ドライバへの制御に関連するインターフェースを上位層に提供する為のファイルをRAM上で提供する仕組みです。

使い方

 ltr578_i2c_probeから呼ばれるmisc_registerはLinuxカーネル内でmiscデバイス(Miscellaneous Device)を登録する為に使用される関数です。

kernel/mediatek/4.4/drivers/misc/mediatek/sensors-1.0/alsps/ltr578/ltr578.c

err = misc_register(&ltr578_device);
static const struct file_operations ltr578_fops = {
	.owner = THIS_MODULE,
	.open = ltr578_open,
	.release = ltr578_release,
	.unlocked_ioctl = ltr578_unlocked_ioctl,
};

static struct miscdevice ltr578_device = {
	.minor = MISC_DYNAMIC_MINOR,
	.name = "als_ps",
	.fops = &ltr578_fops,
};

miscデバイスは、特定のデバイスクラスに分類されない雑多なデバイスを表します。misc_registerを呼び出すことで、カーネルは指定されたデバイス情報に基づいてmiscデバイスを登録します。この登録が成功すると、devtmpfs上に対応するファイルが作成され、上位層から制御できるようになります。

 実際の制御は、misc_registerの引数に指定されている構造体である、ltr578_fopsに登録されているコールバック関数に記載されています。

最後に

 devtmpfsのファイルは/dev配下に作成されます。近接照度センサドライバのmisc_register(&ltr578_device)で作られたファイルは、以下に作成されています。

maverick:/ $ ls /dev/als_ps
/dev/als_ps

 このファイルを通した制御方法は次章で説明します。コールバック関数を登録しているunlocked_ioctl等はLinux特有の話の為、この時点ではよく分からないかもしれませんが、次章で説明するのでご了承下さい。

コメント

タイトルとURLをコピーしました