カーネルモジュール内で呼び出せるライブラリ

カーネルモジュール内で呼び出せるライブラリ

カスタムカーネルモジュールから呼び出すことができるライブラリのリストを見つけます。

<stdio.h>ユーザースペースやライブラリに比べていくつかの制限があることを知っています。<string.h> できない使用。

最も広く使用されているものは何ですか?あるいは、カーネルモジュール内でライブラリを呼び出すことができる時期を区別するのに役立つ経験的な法則がある方が良いでしょう。

私は現在、mmap()ライブラリの一部であるメモリをマッピングするために使用する方法を探していますが、sys/mman.hそれが私に必要な唯一のものではないと確信しています。

だから:

  • linux/<MANY_DIFFERENT_NAME>利用可能
  • asm/uaccess.hカーネルコードに含まれているものを見ました。
  • sys/<ANY>カーネルモジュールで使用することもできますか?
  • 他の人はいませんか?

ベストアンサー1

カーネルコードには利用可能な標準ユーザー空間ライブラリはありません。カーネルには、そのユーザースペース機能と同様に動作するいくつかの機能がありますが、違いがあることを常に確認する必要があります。

mmap関数について言えば、この関数はカーネルへのシステム呼び出しだけです。カーネル内でカーネルを呼び出すことは意味がありません。代わりに、mmap匿名メモリをマッピングしたくない場合(メモリ割り当てを介して実行するのが簡単)、ファイル記述子が必要です。プロセスにはファイル記述子がありますが、カーネルモジュールにはありません。

一般に、カーネルモジュールプログラミングはユーザ空間プログラミングとは異なります。良いアプローチは、必要なものと同様の機能を実行するカーネルモジュールを見つけ、それを開始点として使用することです。

おすすめ記事