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、カーネル初心者。