11

Linux デバイス ドライバの開発では、file_operations構造体はstruct module *owner.

  • 常に で初期化する場合、この構造体は何に使用されTHIS_MODULEますか?
  • このフィールドはいつ設定できNULLますか?
4

4 に答える 4

10

このフィールドは の所有者を示しstruct file_operationsます。これにより、動作中にモジュールがアンロードされるのを防ぎます。THIS_MODULE現在のモジュールで初期化すると、その所有権が保持されます。

于 2013-10-19T17:26:22.910 に答える
2

[1] struct module *ownerは一部の構造体で一般的に使用され、操作ではありません。構造体を「所有」するモジュールへのポインタです。このフィールドは、操作の使用中にモジュールがアンロードされるのを防ぐために使用されます。ほとんどの場合、 < linux/module.h>で定義されたマクロである THIS_MODULEに単純に初期化されます。

.

[2] null に設定することは、ドライバーの誤動作やその他の問題につながる可能性があるため、お勧めしません。代わりに、Linux カーネル開発の優れた方法を使用してください。

一部のアーキテクチャでは「.owner」が削除されているため、ディストリビューションとアーキテクチャがまだそれを使用していることを確認してください。

ご理解の一助になれば幸いです。

参考文献: LDD3、カーネル初心者。

于 2015-12-11T04:02:13.530 に答える