QUERY_MODULE(2) | Linux Programmer's Manual | QUERY_MODULE(2) |
query_module - モジュールに関連する各種の情報をカーネルに問い合わせる
#include <linux/module.h>
int query_module(const char *name, int which, void *buf, size_t bufsize, size_t *ret);
注意: このシステムコールの宣言は glibc のヘッダーでは提供されていない。「注意」を参照。
注意: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。
query_module() は、ローダーブルモジュールに関する情報をカーネルに問い合わせる。 情報は buf が指し示すバッファーに格納されて返される。 呼び出し元は buf のサイズを bufsize に指定しなければならない。 得られる情報の正確な意味とフォーマットは、 which でどの操作を指定するかによって異なる。 現在ロードされているモジュールを特定するために name を必要とする操作があれば、 カーネル固有であることを示す NULL を指定できる操作もある。
which には以下の値を指定できる:
struct module_symbol { unsigned long value; unsigned long name; };
struct module_info { unsigned long address; unsigned long size; unsigned long flags; };
成功の場合 0 が返される。エラーの場合 -1 が返され、 errno に適切な値が設定される。
このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。
query_module() は Linux 固有である。
以前 query_module() で得られた情報のいくつかは、 /proc/modules, /proc/kallsyms および /sys/module ディレクトリ内のファイルから取得できる。
query_module() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、 歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。 したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 syscall(2) を使ってシステムコールを起動できる。
create_module(2), delete_module(2), get_kernel_syms(2), init_module(2), lsmod(8), modinfo(8)
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。
2017-09-15 | Linux |