Linuxマクロ

  

最初に__userマクロの定義を見てください。

#ifdef __CHECKER__#define __user __attribute __((noderef、address_space(1)))は、設定_のマクロ定義から見ることができます。 _CHECKER__マクロの条件の下では、__userマクロ定義は有効であり、マクロ__CHECKER__が検査メカニズムとして現れることは明らかであるので、マクロ__userを使用してエラーの使用をチェックする必要があると推測できます。

そして実際には、make C = 1オプションを使用してカーネル/モジュールをコンパイルし、静的構文チェックツールsparseを開いて可能性のあるエラーを検出します。ファイルの生成には影響しませんが、文法的な正確さをチェックするためだけに使用されていることもわかります。

sparseは静的C構文チェックツールであることがさらに研究されていますLinuxでカーネルをコンパイルしたりモジュールをコンパイルしたりするときは、C = 1を追加することでsparseチェックコードを呼び出すことができます。いくつかのメモリ空間、sparseはLinuxカーネルのためのいくつかのアドレス空間を定義し、カーネル空間はデフォルト、ユーザ空間は1、そしてio間隔は2です。これはアクセスアドレスのコードに問題があるかどうか確認できます。 address_space(1)を含めると、ユーザースペースが参照されます。

たとえば、ドライバの作成では、size_t hello_read(struct file * file、char __user * buff、size_t count、loff_t * offp){return 0;}

Copyright © Windowsの知識 All Rights Reserved