KLDSYM(2)

名称
kldsym - KLD 内のシンボル名による検索

ライブラリ
libc

書式
<sys/param.h> <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 個の引数 version と symname は、ユーザが指定します。 最後の 2 個 symvalue と symsize は、 kldsym() によって埋められます。 これらは、 symname に関連付けられたアドレスと、 それの指しているデータの大きさを、それぞれ保持します。

戻り値

エラー
kldsym() 関数は次の場合に失敗します:

[EINVAL]
    data->version または command の中の値が不正です。

[ENOENT]
    fileid が不正であるか、指定したシンボルが見つかりませんでした。

関連項目
kldfind(2), kldfirstmod(2), kldload(2), kldnext(2), kldunload(2), modfind(2), modnext(2), modstat(2), kld(4)

歴史
kldsym() 関数は FreeBSD 3.0 ではじめて登場しました。