query_module

Autres langues

Langue: ja

Autres versions - même langue

Version: 2007-06-03 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

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 ¤¬»Ø¤·¼¨¤¹¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤µ¤ì¤ÆÊÖ¤µ¤ì¤ë¡£ ¸Æ¤Ó½Ð¤·¸µ¤Ï buf ¤Î¥µ¥¤¥º¤ò bufsize ¤Ë»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ÆÀ¤é¤ì¤ë¾ðÊó¤ÎÀµ³Î¤Ê°ÕÌ£¤È¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢ which ¤Ç¤É¤ÎÁàºî¤ò»ØÄꤹ¤ë¤«¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë¡£ ¸½ºß¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥â¥¸¥å¡¼¥ë¤òÆÃÄꤹ¤ë¤¿¤á¤Ë name ¤òɬÍפȤ¹¤ëÁàºî¤¬¤¢¤ì¤Ð¡¢ ¥«¡¼¥Í¥ë¸ÇÍ­¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹ NULL ¤ò»ØÄê¤Ç¤­¤ëÁàºî¤â¤¢¤ë¡£

which ¤Ë¤Ï°Ê²¼¤ÎÃͤò»ØÄê¤Ç¤­¤ë:

0
¥«¡¼¥Í¥ë¤¬ query_module() ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¡¢À®¸ù¤òÊÖ¤¹¡£ ¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬ÍøÍѲÄǽ¤«¤òÄ´¤Ù¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¡£
QM_MODULES
¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥â¥¸¥å¡¼¥ë¤Î̾Á°¤òÊÖ¤¹¡£ ¥Ð¥Ã¥Õ¥¡¤Ë¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎ󤬽ç¤ËÆþ¤ë¡£ ÊÖ¤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡ ret ¤Ë¤Ï¥â¥¸¥å¡¼¥ë¤Î¿ô¤¬ÀßÄꤵ¤ì¤ë¡£
QM_DEPS
»ØÄꤵ¤ì¤¿¥â¥¸¥å¡¼¥ë¤¬»ÈÍѤ·¤Æ¤¤¤ëÁ´¥â¥¸¥å¡¼¥ë¤Î̾Á°¤òÊÖ¤¹¡£ ¥Ð¥Ã¥Õ¥¡¤Ë¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎ󤬽ç¤ËÆþ¤ë¡£ ÊÖ¤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡ ret ¤Ë¤Ï¥â¥¸¥å¡¼¥ë¤Î¿ô¤¬ÀßÄꤵ¤ì¤ë¡£
QM_REFS
»ØÄꤵ¤ì¤¿¥â¥¸¥å¡¼¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ëÁ´¥â¥¸¥å¡¼¥ë¤Î̾Á°¤òÊÖ¤¹¡£ ¤³¤ì¤Ï QM_DEPS ¤ÈµÕ¤Îµ¡Ç½¤Ç¤¢¤ë¡£ ¥Ð¥Ã¥Õ¥¡¤Ë¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎ󤬽ç¤ËÆþ¤ë¡£ ÊÖ¤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡ ret ¤Ë¤Ï¥â¥¸¥å¡¼¥ë¤Î¿ô¤¬ÀßÄꤵ¤ì¤ë¡£
QM_SYMBOLS
¥«¡¼¥Í¥ë¤Þ¤¿¤Ï»ØÄꤵ¤ì¤¿¥â¥¸¥å¡¼¥ë¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥ó¥Ü¥ë¤È ÃͤòÊÖ¤¹¡£ ¥Ð¥Ã¥Õ¥¡¤Î¥Ç¡¼¥¿¤Ï¡¢ °Ê²¼¤Î¹½Â¤ÂΤÎÇÛÎó¤Ë NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤¬Â³¤¯·Á¤È¤Ê¤ë¡£


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_RUNNING, MOD_AUTOCLEAN Åù¤Î¥Þ¥¹¥¯¤Ç¤¢¤ê¡¢¤½¤Î¥â¥¸¥å¡¼¥ë¤Î¸½ºß¤Î¾õÂÖ¤ò¼¨¤¹ (¥«¡¼¥Í¥ë¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë include/linux/module.h ¤ò»²¾È)¡£ ret ¤Ë¤Ï module_info ¹½Â¤ÂΤΥµ¥¤¥º¤¬ÀßÄꤵ¤ì¤ë¡£

ÊÖ¤êÃÍ

À®¸ù¤Î¾ì¹ç 0 ¤¬ÊÖ¤µ¤ì¤ë¡£¥¨¥é¡¼¤Î¾ì¹ç -1 ¤¬ÊÖ¤µ¤ì¡¢ errno ¤ËŬÀÚ¤ÊÃͤ¬ÀßÄꤵ¤ì¤ë¡£

¥¨¥é¡¼

EFAULT
name, buf, ret ¤Î¾¯¤Ê¤¯¤È¤â°ì¤Ä¤¬¡¢¥×¥í¥°¥é¥à¤¬¥¢¥¯¥»¥¹¤Ç¤­¤ë ¥¢¥É¥ì¥¹¶õ´Ö¤Î³°Éô¤Ç¤¢¤Ã¤¿¡£
EINVAL
which ¤¬ÉÔÀµ¤Ç¤¢¤ë¡£¤¢¤ë¤¤¤Ï name ¤¬ NULL ¤À¤¬ (NULL ¤Ï "¥«¡¼¥Í¥ë" ¤ò¼¨¤¹)¡¢ which ¤Ç»ØÄꤵ¤ì¤¿ÃͤȤÎÁȤ߹ç¤ï¤»¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
ENOENT
name ¤È¤¤¤¦Ì¾Á°¤Î¥â¥¸¥å¡¼¥ë¤¬Â¸ºß¤·¤Ê¤¤¡£
ENOSPC
Í¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¤ÎÂ礭¤µ¤¬¾®¤µ¤¹¤®¤ë¡£ ret ¤Ë¤ÏºÇ¾®¸ÂɬÍפʥХåե¡¤Î¥µ¥¤¥º¤¬ÀßÄꤵ¤ì¤ë¡£
ENOSYS
query_module() ¤Ï¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

½àµò

query_module() ¤Ï Linux ¸ÇÍ­¤Ç¤¢¤ë¡£

Ãí°Õ

¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬Â¸ºß¤¹¤ë¤Î¤Ï¥«¡¼¥Í¥ë 2.4 ¤Þ¤Ç¤Î Linux ¤À¤±¤Ç¤¢¤ë¡£ Linux 2.6 ¤Ç¤Ïºï½ü¤µ¤ì¤¿¡£ query_module() ¤ÇÆÀ¤é¤ì¤¿¾ðÊó¤Î¤¤¤¯¤Ä¤«¤Ï¡¢ /proc/modules, /proc/kallsyms, /sys/modules ¤«¤é¼èÆÀ¤Ç¤­¤ë¡£

´ØÏ¢¹àÌÜ

create_module(2), delete_module(2), get_kernel_syms(2), init_module(2)