Linux デバイス ドライバの開発では、file_operations
構造体はstruct module *owner
.
- 常に で初期化する場合、この構造体は何に使用され
THIS_MODULE
ますか? - このフィールドはいつ設定でき
NULL
ますか?
Linux デバイス ドライバの開発では、file_operations
構造体はstruct module *owner
.
THIS_MODULE
ますか?NULL
ますか?このフィールドは の所有者を示しstruct file_operations
ます。これにより、動作中にモジュールがアンロードされるのを防ぎます。THIS_MODULE
現在のモジュールで初期化すると、その所有権が保持されます。
[1] struct module *ownerは一部の構造体で一般的に使用され、操作ではありません。構造体を「所有」するモジュールへのポインタです。このフィールドは、操作の使用中にモジュールがアンロードされるのを防ぐために使用されます。ほとんどの場合、 < linux/module.h>で定義されたマクロである THIS_MODULEに単純に初期化されます。
.
[2] null に設定することは、ドライバーの誤動作やその他の問題につながる可能性があるため、お勧めしません。代わりに、Linux カーネル開発の優れた方法を使用してください。
一部のアーキテクチャでは「.owner」が削除されているため、ディストリビューションとアーキテクチャがまだそれを使用していることを確認してください。
ご理解の一助になれば幸いです。
参考文献: LDD3、カーネル初心者。