EN JA
KLDSYM(2)
KLDSYM(2) FreeBSD System Calls Manual KLDSYM(2)

名称

kldsymKLD のシンボル名でアドレスを検索する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/param.h>
#include < sys/linker.h>

int
kldsym( int fileid, int command, void *data);

解説

kldsym() システムコールは、 fileid によって指定されたモジュールの data で指定されたシンボルのアドレスを返します。 fileid が 0 であるなら、すべてのロードしたモジュールが検索されます。現在、 command の実装は、 KLDSYM_LOOKUP のみです。

data 引数は、次の構造体です:

struct kld_sym_lookup { 
    int         version;        /* sizeof(struct kld_sym_lookup) */ 
    char        *symname;       /* 検索しているシンボル名 */ 
    u_long      symvalue; 
    size_t      symsize; 
};

version メンバは、 kldsym() を呼び出しているコードによって sizeof( struct kld_sym_lookup) に設定されます。次の 2 つのメンバ versionsymname は、ユーザによって指定されます。最後の 2 つ symvaluesymsize は、 kldsym() によって書き込まれ、それぞれ、 symname に関連したアドレスとそれが指すデータのサイズを含んでいます。

戻り値

The kldsym() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

kldsym() システムコールは、次の場合に失敗します:
[ EINVAL]
data->version または command の無効の値。
[ ENOENT]
fileid 引数が不正であるか、または指定されたシンボルが見つかりませんでした。

歴史

kldsym() システムコールは、 FreeBSD 3.0 ではじめて登場しました。
July 26, 2001 FreeBSD