Home
March 22, 2010 6:12:46 AM EST
home
back print
QUERY_MODULE   (2) manpage
QUERY_MODULE
2
2007-06-03
Linux
Linux Programmer's Manual
  • NAME
      query_module - query the kernel for various bits pertaining 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 from the kernel about loadable modules.
      The returned information is placed in the buffer pointed to by
      buf .
      The caller must specify the size of
      buf
      in
      bufsize .
      The precise nature and format of the returned information
      depend on the operation specified by
      which .
      Some operations require
      name
      to identify a currently loaded module, some allow
      name
      to be NULL, indicating the kernel proper.

      The following values can be specified for
      which :
      0
      Returns success, if the kernel supports
      query_module ().
      Used to probe for availability of the system call.
      QM_MODULES
      Returns the names of all loaded modules.
      The returned buffer consists of a sequence of null-terminated strings;
      ret
      is set to the number of
      modules.

      QM_DEPS
      Returns the names of all modules used by the indicated module.
      The returned buffer consists of a sequence of null-terminated strings;
      ret
      is set to the number of modules.

      QM_REFS
      Returns the names of all modules using the indicated module.
      This is the inverse of
      QM_DEPS .
      The returned buffer consists of a sequence of null-terminated strings;
      ret
      is set to the number of modules.

      QM_SYMBOLS
      Returns the symbols and values exported by the kernel or the indicated
      module.
      The returned buffer is an array of structures of the following form

      
      
      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 to the start of buf ; ret is set to the number of symbols.
      QM_INFO
      Returns miscellaneous information about the indicated 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 , etc. that indicates the current status of the module (see the kernel source file include/linux/module.h ). ret is set to the size of the module_info structure.
  • RETURN VALUE
      On success, zero is returned. On error, -1 is returned and errno is set appropriately.
  • ERRORS
      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.
      ENOSYS
      query_module () is not supported in this version of the kernel.
  • CONFORMING TO
      query_module () is Linux-specific.
  • NOTES
      This system call is only present on Linux up until kernel 2.4; it was removed in Linux 2.6. Some of the information that was available via query_module () can be obtained from /proc/modules , /proc/kallsyms , and /sys/modules .
  • SEE ALSO
  • COLOPHON
      This page is part of release 3.19 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.


Current Users: 116 © 1999-2009 PenguinSoft. All trademarks and copyrights on this page are owned by their respective companies. Linux is a trademark of Linus Torvalds.