web-dev-qa-db-ja.com

sysfsの共有アクセス

プログラムAは定期的に(20回/秒)sysfsファイルの最初の(そして唯一の)行を上書きします(F)。プログラムBは定期的に(20回/秒)同じsysfsファイル(F)を開き、最初の行を読み取って閉じます。

Fは共有リソースであり、2つのプログラム間で同期が行われない上記のシナリオでは、Bがファイル内の不完全に書き込まれた行を読み取る可能性があります。

これはsysfsファイルにも当てはまりますか、それともカーネルはそのアクセスをシリアル化しますか?

1
The mach

Sysfsコードはバージョン3.14(2014)で部分的にkernfs共通部分に分割され、他のサブシステムが仮想ファイルシステムを持つのに適したものになるため、sysfsとkernfsを確認する必要があります。

sysfs code には明らかなシリアル化はありませんが、上記のkernfsレイヤーは kernfs_file_direct_read および kernfs_fop_write でミューテックスを使用して単一の読み取りのみを保証していますまたは、同じファイルに対して一度に書き込みが発生する可能性があります。 mmap()を使用すると、ロックも発生します。

したがって、シナリオは安全である必要があります。

1
meuh