query_module  - query the kernel for various bits pertain­
       ing to modules.


SYNOPSIS

       #include <linux/module.h>

       int query_module(const char *name, int which,
       void *buf, size_t bufsize, size_t *ret);


DESCRIPTION

       query_module requests information related to loadable mod­
       ules  from the kernel.  The precise nature of the informa­
       tion and its format depends on  the  which  sub  function.
       Some  functions  require  name  to name a currently loaded
       module, some allow name to be NULL indicating  the  kernel
       proper.


   VALUES OF WHICH
       0      Always returns success.  Used to probe for the sys­
              tem call.

       QM_MODULES
              Returns the names of all loaded modules.  The  out­
              put   buffer  format  is  adjacent  null-terminated
              strings; ret is set to the number of modules.

       QM_DEPS
              Returns the names of all modules used by the  indi­
              cated module.  The output buffer format is adjacent
              null-terminated strings; ret is set to  the  number
              of modules.

       QM_REFS
              Returns  the  names  of all modules using the indi­
              cated module.  This is the inverse of QM_DEPS.  The
              output  buffer  format  is adjacent null-terminated
              strings; ret is set to the number of modules.

       QM_SYMBOLS
              Returns the symbols and values exported by the ker­
              nel  or the indicated module.  The buffer format is
              an array of:

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

              followed by null-terminated strings.  The value  of
              name is the character offset of the string relative

       QM_INFO
              Returns  miscellaneous  information about the indi­
              cated module.  The output buffer format is:

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

              where address is the kernel address  at  which  the
              module  resides,  size is the size of the module in
              bytes,  and  flags  is  a  mask   of   MOD_RUNNING,
              MOD_AUTOCLEAN,  et  al  that  indicates the current
              status of the module.  ret is set to  the  size  of
              the module_info struct.


RETURN VALUE

       On  success,  zero  is returned.  On error, -1 is returned
       and errno is set appropriately.


ERRORS

       ENOENT No module by that name exists.

       EINVAL Invalid which, or name indicates the kernel for  an
              inappropriate sub function.

       ENOSPC The buffer size provided was too small.  ret is set
              to the minimum size needed.

       EFAULT At least one of name, buf, or ret was  outside  the
              program's accessible address space.


SEE ALSO

       create_module(2), init_module(2), delete_module(2).