sysfsがあるときにハードウェア情報を取得するためにioctlを照会する理由はありますか?

sysfsがあるときにハードウェア情報を取得するためにioctlを照会する理由はありますか?

私の前提は、クエリをsysfs使用して構築されたということですioctl。これは、必要なすべての情報(または少なくともほとんど)がすでにsysfs。をクリックする理由があるかどうか疑問に思います。信頼できませんか?ハードウェア情報にのみ興味がある場合は、overを使用する理由がありますか?hdparmioctlsysfssysfsioctlsysfs

答え1

Tilmanが彼らの意見で正しく主張したように、sysfsとioctlは両方ともカーネルデータ構造へのユーザー空間アクセスを提供します。
カーネルは独自のデータにアクセスするためにシステムコールを必要としないので、sysfsツリーもioctl呼び出しによって構築されず、ユーザー操作も行われません。文書ioctl呼び出しに変換されます。


あなたは書く「…情報は以下で提供された。単にファイルを読み込んでいます...」私はこれがあなたの最後の質問に対する答えだと思います。

なぜできるsysfsインターフェイスを使用する方が簡単なようですか?

  • まず、いくつかのシェルを実行しているデフォルトのASCII端末を考えると、sysfsツリーは最も基本的なcatコマンドとechoコマンドを介して(バイナリ)カーネルデータにアクセスできます。
  • 他のデフォルトのシェルコマンド(ls、cd)を使用すると、シンボリックリンクを介してカーネルオブジェクト間の関係に関する洞察を得ることもできます。
  • それに加えて、ユーザーはコミットしたい変更の有効性をある程度(最小限)制御することができ、利点を享受できます。

これはシステムを調整し、スクリプトまたはルールを作成し、ユーザースペース(sysfsの最初のターゲット...前に考えてみてください... .../dev /memは後で使用できる唯一の友達です)。

まあ、しかし、いくつかのケースでは、これらのすべての機能を気にせずにsysfsインターフェイスを介してカーネルオブジェクトにアクセスすることが制限されます。を開き、データをトランスコードし、その他のエラー条件を管理し、競合状態を処理したいですか?単純なioctlシステムコールで十分です(もちろん何をしているのかを知っていれば)。

したがって、あなたの質問に対する回答が提供されます。いつこの方法を選択する必要がありますか?それともその方法を選ぶべきですか?今は、それの代わりにこれを使用して達成したいことを達成することがはるかに簡単になるからです。

関連情報