Unix-system-calls-query-module

提供:Dev Guides
移動先:案内検索

[top]#

[[File:]]

[[File:]]

|Web |This Site

  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

  Home     References     Discussion Forums     About TP  

query_module()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

query_module-モジュールに関連するさまざまなビットについてカーネルを照会します

概要

#include <linux/module.h> int query_module(const char* name, int which, void *buf, size_t bufsize, size_t *ret);

説明

*query_module* ()は、ロード可能なモジュールに関する情報をカーネルに要求します。 返された情報は、_buf_が指すバッファーに配置されます。 呼び出し元は、_bufsize_で_buf_のサイズを指定する必要があります。 返される情報の正確な性質と形式は、_which_で指定された操作に依存します。 現在ロードされているモジュールを識別するために_name_を必要とする操作もあれば、カーネルが適切であることを示す_name_をNULLにできる操作もあります。

_which_には次の値を指定できます。

Tag

説明

0

常に成功を返します。 システムコールの可用性をプローブするために使用されます。

*QM_MODULES*

ロードされたすべてのモジュールの名前を返します。 返されるバッファは、ヌルで終わる文字列のシーケンスで構成されます。 _ret_はモジュールの数に設定されます。

*QM_DEPS*

指定されたモジュールによって使用されるすべてのモジュールの名前を返します。 返されるバッファは、ヌルで終わる文字列のシーケンスで構成されます。 _ret_はモジュールの数に設定されます。

*QM_REFS*

指定されたモジュールを使用して、すべてのモジュールの名前を返します。 これは QM_DEPS の逆です。 返されるバッファは、ヌルで終わる文字列のシーケンスで構成されます。 _ret_はモジュールの数に設定されます。

*QM_SYMBOLS*

カーネルまたは指定されたモジュールによってエクスポートされたシンボルと値を返します。 返されるバッファは、次の形式の構造体の配列です

struct module_symbol { unsigned long value; unsigned long name; };

ヌル終了文字列が続きます。 _name_の値は、_buf_の先頭に対する文字列の文字オフセットです。 _ret_はシンボルの数に設定されます。

*QM_INFO*

指定されたモジュールに関するその他の情報を返します。 出力バッファの形式は次のとおりです。

struct module_info { unsigned long address; unsigned long size; unsigned long flags; };

ここで、_address_はモジュールが存在するカーネルアドレス、_size_はバイト単位のモジュールのサイズ、_flags_は MOD_RUNNINGMOD_AUTOCLEAN などのマスクです。 モジュールの現在のステータスを示します(カーネルソースファイル_include/linux/module.h_を参照)。 _ret_は、_module_info_構造体のサイズに設定されます。

返り値

成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag Description
EFAULT At least one of name, buf, or ret was outside the program’s accessible address space.
EINVAL Invalid which; or name is NULL (indicating "the kernel"), but this is not permitted with the specified value of which.
ENOENT No module by that name exists.
ENOSPC The buffer size provided was too small. ret is set to the minimum size needed.

準拠

*query_module* ()はLinux固有です。

ノート

このシステムコールは、カーネル2.4までLinuxにのみ存在します。 Linux 2.6では削除されました。 query_module ()を介して利用可能な情報の一部は、/proc/modules _、/proc/kallsyms_、および_/sys/modules_から取得できます。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

  
Advertisements