2013-10-19 65 views
6

Linuxのデバイスドライバ開発では、file_operations構造体は "struct module * owner"を使用します。LinuxドライバのTHIS_MODULEの意味

[1] THIS_MODULEで常にこの構造体を初期化するときにこの構造体を使用するとどうなりますか? [2]いつこのフィールドをNULLに設定できますか?

答えて

7

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

1

[1] 構造体モジュールの所有者は、一部の構造では一般的に使用されており、まったく動作しません。それは構造体を「所有している」モジュールへのポインタです。このフィールドは、その操作が使用中にモジュールがアンロードされないようにするために使用されます。ほとんどの場合、それは単にのTHIS_MODULEに初期化され、マクロは <linux/module.h>で定義されています。

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

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

ご理解いただければ幸いです。

参考文献:LDD3、kernel newbies。